{
  "ok": true,
  "scope": "deployment_smoke_evidence_plan_preview",
  "status": "blocked_before_deployment_smoke_evidence",
  "date": "2026-06-18",
  "source": "/api/repositories/deployment-readiness-preview",
  "request": {
    "mode": "dry_run_plan",
    "focus": "dns_https"
  },
  "readinessSummary": {
    "status": "blocked_before_live_deployment_readiness_repository",
    "blockerCount": 26,
    "cloudflarePermissionStatus": "partial_collaboration_granted_2026_06_18_dns_related_permissions"
  },
  "evidenceOrder": [
    "server_local",
    "dns_resolution",
    "https_routes",
    "payment_callback",
    "domestic_access",
    "rollback_review"
  ],
  "plans": [
    {
      "phase": "server_local",
      "status": "blocked_until_release_is_deployed_to_wanfeng",
      "commands": [
        {
          "tool": "curl",
          "command": "curl -fsS http://127.0.0.1:4177/api/healthz",
          "expected": "wanfeng-ai-launch-skeleton health ok"
        },
        {
          "tool": "systemctl",
          "command": "systemctl status wanfeng",
          "expected": "active running after release deploy"
        },
        {
          "tool": "nginx",
          "command": "nginx -t",
          "expected": "configuration test is successful"
        }
      ],
      "evidenceFields": [
        "server",
        "release_path",
        "current_symlink_target",
        "service_status",
        "nginx_test_result",
        "healthz_result",
        "checked_at"
      ],
      "blockers": [
        "production_release_not_deployed",
        "systemd_and_nginx_live_status_not_verified",
        "public_health_smoke_not_run"
      ],
      "boundaries": [
        "does_not_read_env_file",
        "does_not_restart_service",
        "does_not_change_current_symlink"
      ]
    },
    {
      "phase": "dns_resolution",
      "status": "blocked_until_cloudflare_records_are_created_and_publicly_resolved",
      "hostnames": [
        "wfais.com",
        "chat.wfais.com",
        "admin.wfais.com",
        "api.wfais.com"
      ],
      "commands": [
        {
          "tool": "dig_or_dns_lookup",
          "command": "dig +short wfais.com",
          "expected": "returns_production_target_without_exposing_server_credentials"
        },
        {
          "tool": "dig_or_dns_lookup",
          "command": "dig +short chat.wfais.com",
          "expected": "returns_production_target_without_exposing_server_credentials"
        },
        {
          "tool": "dig_or_dns_lookup",
          "command": "dig +short admin.wfais.com",
          "expected": "returns_production_target_without_exposing_server_credentials"
        },
        {
          "tool": "dig_or_dns_lookup",
          "command": "dig +short api.wfais.com",
          "expected": "returns_production_target_without_exposing_server_credentials"
        }
      ],
      "evidenceFields": [
        "hostname",
        "record_type",
        "resolved_value_redacted_or_target_ref",
        "resolver_region",
        "checked_at",
        "result"
      ],
      "blockers": [
        "dns_records_not_verified",
        "chat_admin_api_subdomains_not_verified"
      ]
    },
    {
      "phase": "https_routes",
      "status": "blocked_until_certificate_and_nginx_routes_are_live",
      "targets": [
        {
          "code": "main_home",
          "method": "HEAD_or_GET",
          "url": "https://wfais.com/",
          "expected": [
            "status_200",
            "nosniff_header",
            "first_screen_contains_wanfeng_or_pay_review"
          ]
        },
        {
          "code": "chat_h5",
          "method": "GET",
          "url": "https://chat.wfais.com/chat",
          "expected": [
            "status_200",
            "h5_role_shell_visible",
            "repository_preview_sources_present"
          ]
        },
        {
          "code": "admin_shell",
          "method": "GET",
          "url": "https://admin.wfais.com/admin",
          "expected": [
            "status_200",
            "admin_shell_visible",
            "admin_api_stays_protected"
          ]
        },
        {
          "code": "api_health",
          "method": "GET",
          "url": "https://api.wfais.com/api/healthz",
          "expected": [
            "status_200",
            "service_name_present",
            "nosniff_header"
          ]
        },
        {
          "code": "launch_readiness",
          "method": "GET",
          "url": "https://api.wfais.com/api/launch-readiness",
          "expected": [
            "status_200",
            "status_json_present",
            "does_not_claim_payment_or_model_ready"
          ]
        },
        {
          "code": "payment_kacapa_notify_gate",
          "method": "POST_JSON_expected_503_until_live",
          "url": "https://api.wfais.com/api/v1/payments/kacapa/notify",
          "expected": [
            "status_503_until_live_repository",
            "json_route_gate_response",
            "must_not_ack_SUCCESS_or_OK_before_live_payment"
          ]
        },
        {
          "code": "payment_kacapa_create_gate",
          "method": "POST_JSON_expected_503_until_live",
          "url": "https://api.wfais.com/api/v1/payments/kacapa/create",
          "expected": [
            "status_503_until_live_repository",
            "json_route_gate_response",
            "must_not_call_unifiedOrder_provider"
          ]
        },
        {
          "code": "payment_kacapa_query_gate",
          "method": "POST_JSON_expected_503_until_live",
          "url": "https://api.wfais.com/api/v1/payments/kacapa/query",
          "expected": [
            "status_503_until_live_repository",
            "json_route_gate_response",
            "must_not_call_queryOrder_provider"
          ]
        },
        {
          "code": "payment_return_candidate",
          "method": "GET",
          "url": "https://chat.wfais.com/pay/result",
          "expected": [
            "status_200_payment_result_shell",
            "return_url_is_not_payment_proof",
            "must_show_wait_for_notify_or_query"
          ]
        },
        {
          "code": "payment_return_legacy_alias",
          "method": "GET",
          "url": "https://chat.wfais.com/payment/result",
          "expected": [
            "status_200_payment_result_shell",
            "return_url_is_not_payment_proof",
            "legacy_alias_kept_for_old_docs"
          ]
        }
      ],
      "commands": [
        {
          "tool": "curl",
          "command": "curl -fsS -I https://wfais.com/",
          "expected": "status_200,nosniff_header,first_screen_contains_wanfeng_or_pay_review"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://chat.wfais.com/chat",
          "expected": "status_200,h5_role_shell_visible,repository_preview_sources_present"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://admin.wfais.com/admin",
          "expected": "status_200,admin_shell_visible,admin_api_stays_protected"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://api.wfais.com/api/healthz",
          "expected": "status_200,service_name_present,nosniff_header"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://api.wfais.com/api/launch-readiness",
          "expected": "status_200,status_json_present,does_not_claim_payment_or_model_ready"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://api.wfais.com/api/v1/payments/kacapa/notify",
          "expected": "status_503_until_live_repository,json_route_gate_response,must_not_ack_SUCCESS_or_OK_before_live_payment"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://api.wfais.com/api/v1/payments/kacapa/create",
          "expected": "status_503_until_live_repository,json_route_gate_response,must_not_call_unifiedOrder_provider"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://api.wfais.com/api/v1/payments/kacapa/query",
          "expected": "status_503_until_live_repository,json_route_gate_response,must_not_call_queryOrder_provider"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://chat.wfais.com/pay/result",
          "expected": "status_200_payment_result_shell,return_url_is_not_payment_proof,must_show_wait_for_notify_or_query"
        },
        {
          "tool": "curl",
          "command": "curl -fsS -I https://chat.wfais.com/payment/result",
          "expected": "status_200_payment_result_shell,return_url_is_not_payment_proof,legacy_alias_kept_for_old_docs"
        }
      ],
      "evidenceFields": [
        "url",
        "status_code",
        "content_type_or_location",
        "tls_certificate_subject",
        "tls_valid_to",
        "security_headers",
        "checked_at",
        "result"
      ],
      "blockers": [
        "https_certificate_not_issued_or_not_verified",
        "nginx_live_config_not_verified",
        "public_subdomain_smoke_not_run"
      ]
    },
    {
      "phase": "payment_callback",
      "status": "blocked_until_provider_credentials_https_domain_and_signature_tests_are_ready",
      "targets": [
        {
          "code": "payment_kacapa_notify_gate",
          "method": "POST_JSON_expected_503_until_live",
          "url": "https://api.wfais.com/api/v1/payments/kacapa/notify",
          "expected": [
            "status_503_until_live_repository",
            "json_route_gate_response",
            "must_not_ack_SUCCESS_or_OK_before_live_payment"
          ]
        },
        {
          "code": "payment_kacapa_create_gate",
          "method": "POST_JSON_expected_503_until_live",
          "url": "https://api.wfais.com/api/v1/payments/kacapa/create",
          "expected": [
            "status_503_until_live_repository",
            "json_route_gate_response",
            "must_not_call_unifiedOrder_provider"
          ]
        },
        {
          "code": "payment_kacapa_query_gate",
          "method": "POST_JSON_expected_503_until_live",
          "url": "https://api.wfais.com/api/v1/payments/kacapa/query",
          "expected": [
            "status_503_until_live_repository",
            "json_route_gate_response",
            "must_not_call_queryOrder_provider"
          ]
        },
        {
          "code": "payment_alipay_notify_candidate",
          "method": "POST_provider_future",
          "url": "https://api.wfais.com/api/v1/payments/alipay-h5/notify",
          "expected": [
            "route_reserved_or_expected_404_until_live_api",
            "must_not_grant_entitlement_without_signature"
          ]
        },
        {
          "code": "payment_return_candidate",
          "method": "GET",
          "url": "https://chat.wfais.com/pay/result",
          "expected": [
            "status_200_payment_result_shell",
            "return_url_is_not_payment_proof",
            "must_show_wait_for_notify_or_query"
          ]
        },
        {
          "code": "payment_return_legacy_alias",
          "method": "GET",
          "url": "https://chat.wfais.com/payment/result",
          "expected": [
            "status_200_payment_result_shell",
            "return_url_is_not_payment_proof",
            "legacy_alias_kept_for_old_docs"
          ]
        }
      ],
      "evidenceFields": [
        "provider",
        "notify_url",
        "return_url",
        "provider_domain_review_status",
        "signature_or_query_test_status",
        "idempotent_entitlement_result",
        "checked_at"
      ],
      "blockers": [
        "payment_provider_credentials_missing",
        "callback_domain_not_registered_or_not_reviewed_at_provider",
        "provider_notify_signature_test_not_run"
      ],
      "boundaries": [
        "return_url_is_not_payment_proof",
        "does_not_call_payment_provider",
        "does_not_grant_points_or_membership"
      ]
    },
    {
      "phase": "domestic_access",
      "status": "blocked_until_multi_network_evidence_is_attached",
      "targets": [
        {
          "code": "main_home",
          "method": "HEAD_or_GET",
          "url": "https://wfais.com/",
          "expected": [
            "status_200",
            "nosniff_header",
            "first_screen_contains_wanfeng_or_pay_review"
          ]
        },
        {
          "code": "chat_h5",
          "method": "GET",
          "url": "https://chat.wfais.com/chat",
          "expected": [
            "status_200",
            "h5_role_shell_visible",
            "repository_preview_sources_present"
          ]
        },
        {
          "code": "api_health",
          "method": "GET",
          "url": "https://api.wfais.com/api/healthz",
          "expected": [
            "status_200",
            "service_name_present",
            "nosniff_header"
          ]
        }
      ],
      "requiredNetworks": [
        "china_mobile_phone_hotspot_or_equivalent",
        "china_unicom_phone_hotspot_or_equivalent",
        "china_telecom_home_or_cloud_probe",
        "frank_local_browser"
      ],
      "evidenceFields": [
        "network_name",
        "url",
        "dns_resolve_ms",
        "tls_handshake_ms",
        "http_status",
        "first_screen_screenshot_ref",
        "failure_reason",
        "checked_at"
      ],
      "blockers": [
        "domestic_access_smoke_not_run",
        "dns_resolution_from_cn_network_not_verified",
        "mobile_browser_h5_first_screen_not_verified"
      ]
    }
  ],
  "rollbackEvidencePlan": {
    "method": "getRollbackReadiness",
    "status": "blocked_before_live_rollback_drill",
    "rollbackTargets": [
      "previous_server_release_directory",
      "nginx_previous_config_or_backup",
      "database_backup_snapshot_before_migration",
      "payment_provider_disable_or_safe_block_switch",
      "model_provider_disable_or_safe_block_switch"
    ],
    "requiredEvidence": [
      "release_version_recorded",
      "backup_snapshot_id_recorded_without_secret",
      "rollback_command_dry_run_or_drill",
      "post_rollback_health_check",
      "manual_approval_actor_and_reason"
    ],
    "blockers": [
      "rollback_runbook_not_verified_against_live_stack",
      "database_backup_snapshot_missing",
      "payment_and_model_safe_block_switch_not_verified",
      "post_rollback_health_check_not_defined"
    ],
    "boundaries": [
      "does_not_run_rollback",
      "does_not_touch_live_database",
      "does_not_change_provider_status"
    ]
  },
  "acceptanceRule": {
    "canPromoteDeploymentStatusWhen": [
      "server_local_health_and_nginx_evidence_passed",
      "dns_resolution_evidence_passed_for_main_chat_admin_api",
      "https_route_evidence_passed_for_main_chat_admin_api",
      "payment_callback_domain_and_signature_strategy_verified_before_live_payment",
      "domestic_access_evidence_attached",
      "rollback_review_evidence_attached"
    ],
    "cannotPromoteFrom": [
      "cloudflare_permission_only",
      "local_server_preview_only",
      "dry_run_plan_only",
      "single_network_smoke_only",
      "return_url_only"
    ]
  },
  "blockers": [
    "dns_records_not_verified",
    "https_certificate_not_issued_or_not_verified",
    "chat_admin_api_subdomains_not_verified",
    "payment_callback_domain_not_verified",
    "domestic_access_smoke_not_run",
    "production_release_not_deployed",
    "rollback_drill_not_verified",
    "renewal_smoke_not_run",
    "admin_https_auth_smoke_not_passed",
    "nginx_live_config_not_verified",
    "public_subdomain_smoke_not_run",
    "admin_api_auth_status_not_verified_on_https",
    "payment_provider_credentials_missing",
    "callback_domain_not_registered_or_not_reviewed_at_provider",
    "https_notify_url_not_verified",
    "provider_notify_signature_test_not_run",
    "dns_resolution_from_cn_network_not_verified",
    "mobile_browser_h5_first_screen_not_verified",
    "admin_auth_public_exposure_not_checked",
    "server_env_key_presence_not_verified",
    "systemd_and_nginx_live_status_not_verified",
    "public_health_smoke_not_run",
    "rollback_runbook_not_verified_against_live_stack",
    "database_backup_snapshot_missing",
    "payment_and_model_safe_block_switch_not_verified",
    "post_rollback_health_check_not_defined",
    "deployment_smoke_evidence_not_attached"
  ],
  "nextStep": "run this plan as evidence collection after DNS records and HTTPS are configured; keep launch status blocked until every evidence phase has a reviewed result",
  "boundaries": [
    "deployment_smoke_evidence_plan_preview_only",
    "does_not_execute_public_network_smoke_by_default",
    "does_not_write_cloudflare_dns",
    "does_not_issue_https_certificate",
    "does_not_restart_server_or_nginx",
    "does_not_read_server_env_file",
    "does_not_call_payment_provider",
    "does_not_call_model_provider",
    "does_not_mark_launch_ready"
  ]
}