{
  "schemaVersion": "0.1",
  "id": "public-gray-upload-authorization-request-20260710",
  "createdAt": "2026-07-10",
  "timezone": "Asia/Shanghai",
  "purpose": "把下一步外部灰度上传动作拆成明确授权请求，便于用户判断是否允许 Codex 使用已登录浏览器把本地灰度 zip 上传到无 DNS 变更的静态托管默认域名。",
  "recommendedDecision": "approve-no-dns-static-hosting-gray-upload",
  "approvalPhrase": "我授权你把当前灰度 ZIP 上传到无 DNS 变更的静态托管默认域名，并在上传后只运行公开可抓取门禁；不要修改 DNS、不要绑定 doctorlucheng.com、不要购买资源。",
  "requestedAction": {
    "actionType": "external-upload",
    "description": "通过已登录浏览器，在 Cloudflare Pages / Vercel / Netlify 或同类静态托管平台创建一个临时灰度项目，上传当前灰度 ZIP 或静态目录，获取平台默认 HTTPS 域名。",
    "preferredUrlShape": "无路径 origin，例如 https://lucheng-geo.pages.dev",
    "zipPath": "/Users/suweibin/Documents/Codex/2026-06-23/plugin-computer-use-openai-bundled-2/outputs/lucheng-geo-portal-gray-deploy-site.zip",
    "siteDir": "/Users/suweibin/Documents/Codex/2026-06-23/plugin-computer-use-openai-bundled-2/outputs/lucheng-geo-portal-gray-deploy-site",
    "currentLocalPreflightRecord": "data/gray-package-preflight-latest.json",
    "publicPreflightBoundaryNote": "data/gray-package-preflight-public-note.json",
    "currentPreflightStatus": "passed",
    "currentPreflightCheckedAt": "see currentLocalPreflightRecord",
    "currentPreflightChecks": 452,
    "currentPreflightPassed": 452,
    "currentPreflightFailed": 0,
    "currentZipSizeBytes": "see currentLocalPreflightRecord",
    "currentZipSha256": "see currentLocalPreflightRecord",
    "publicPackageExcludes": ["data/gray-package-preflight-latest.json", "data/gray-upload-readiness-latest.json"],
    "currentLocalLiveCheckRecord": "data/gray-local-live-check-20260710.json"
  },
  "allowedIfApproved": [
    "打开用户已登录的静态托管平台后台。",
    "创建一个临时灰度静态站点项目。",
    "上传当前灰度 ZIP 或静态目录。",
    "读取并记录平台分配的默认 HTTPS 域名。",
    "如果默认域名不是 https://lucheng-geo.pages.dev，则用真实公开域名重建灰度包并重新上传。",
    "运行公开可抓取门禁：verify-gray-deployment、check-live-site、verify-public-article-url、record-gray-crawlability-batch。",
    "把公开门禁结果写入本地证据文件。"
  ],
  "notAllowedEvenIfApproved": [
    "不修改 doctorlucheng.com、luchengdr.com、winsmo.com 或任何现有 DNS 记录。",
    "不绑定 doctorlucheng.com 或 geo.doctorlucheng.com。",
    "不购买云服务器、对象存储、CDN、SSL 证书或付费套餐。",
    "不提交 ICP 备案订单。",
    "不改 Winsmo 官网已有文章。",
    "不发布到第三方媒体平台。",
    "不向搜索引擎或 AI 平台提交 sitemap。",
    "不执行豆包、元宝、通义千问、DeepSeek 的真实 AI smoke test，除非公开门禁先通过且用户继续授权。"
  ],
  "dataExposure": {
    "willTransmit": [
      "灰度静态站 ZIP 包内的公开 HTML、JSON、Markdown、RSS、sitemap、llms 文件。",
      "项目名、站点名或平台默认域名。"
    ],
    "willNotTransmit": [
      "浏览器密码、验证码、支付信息。",
      "本机 IMA 私密知识库原文。",
      "阿里云 DNS 配置。",
      "ICP备案主体资料。",
      "未授权的客户隐私数据。"
    ],
    "contentBoundary": "灰度 ZIP 只应包含准备公开给搜索引擎和 AI 平台读取的样板内容、证据边界、验证台账和项目文档。"
  },
  "successCriteria": [
    "获得一个无路径 HTTPS 公开域名。",
    "公开域名下首页、robots.txt、sitemap.xml、feed.xml、llms.txt、data/ai-crawl-index.json 返回 200。",
    "第一批 8 个目标页无登录可读。",
    "canonical、sitemap、robots、feed 与真实公开域名一致。",
    "data/gray-public-gates-latest.json 生成且 failed=0。",
    "record-gray-crawlability-batch 写入 public-page-crawlability 记录。"
  ],
  "failureCriteria": [
    "平台要求付费或购买资源。",
    "平台要求绑定自有域名或改 DNS。",
    "上传后公开 URL 不是无路径 origin，且无法重建匹配 canonical 的灰度包。",
    "公开门禁任一核心入口失败。",
    "平台登录、验证码或权限不足。"
  ],
  "rollbackPlan": [
    "如果项目创建失败或门禁失败，只记录失败证据，不继续 AI 复测。",
    "如果平台允许删除临时项目，但删除属于外部状态变更，需单独询问用户后再执行。",
    "如果保留临时项目，不绑定生产域名，不影响 doctorlucheng.com 或现有官网。"
  ],
  "whyNow": [
    "本地灰度包已通过包体自检和本地 live check。",
    "doctorlucheng.com 与预设灰度域名当前公网均 0/37 通过。",
    "没有公开可抓取 URL，就无法验证豆包、元宝、通义千问、DeepSeek 对本站的真实采用。",
    "无 DNS 变更的默认域名灰度是当前最小外部动作。"
  ],
  "boundary": "This file is an authorization request, not authorization itself. No external upload, account mutation, DNS change, purchase, publication or AI retest is allowed until the user explicitly approves the requested action."
}
