# Cloudflare Pages 稳定灰度发布交接包（2026-07-11）

机器记录：`/data/cloudflare-pages-gray-deployment-handoff-20260711.json`

## 当前结论

当前 trycloudflare 公开灰度已通过 87/87 入口检查，gray public gates 为 6/6；但它仍是临时隧道地址，不适合作为长期 AI 抓取目标。下一步推荐创建 Cloudflare Pages Direct Upload 项目，拿到稳定 `pages.dev` 默认域名。

状态：`handoff-ready-awaiting-user-authorization`

## 请求授权的一句话

是否授权创建 Cloudflare Pages Direct Upload 项目并上传当前灰度包？只创建托管项目，不改阿里云 DNS。

## 授权后允许做

- 在 Cloudflare Pages 创建一个静态站项目，优先使用项目名 lucheng-geo。
- 使用当前灰度站构建产物或为最终 pages.dev 域名重建 ZIP 后上传。
- 记录 Cloudflare Pages 返回的 pages.dev 稳定灰度 URL。
- 对 pages.dev URL 运行 check-live-site 和 run-gray-public-gates 等只读公开校验。
- 把上传结果、URL、哈希、校验结果写入本地证据文件。

## 未单独授权仍禁止

- 不修改 doctorlucheng.com、geo.doctorlucheng.com、www、MX、TXT 或任何阿里云 DNS 记录。
- 不绑定自定义域名。
- 不购买 Cloudflare、阿里云、Vercel、GitHub 或任何付费资源。
- 不提交 ICP 备案。
- 不发布第三方媒体文章。
- 不把托管成功描述成搜索收录、模型训练吸收、AI 推荐或客户转化成功。
- 不运行需要用户登录 AI 平台的真实 smoke test，除非用户再次明确授权。

## 推荐 Cloudflare 设置

- 项目名候选：`lucheng-geo`
- 默认域名候选：`https://lucheng-geo.pages.dev`
- 上传方式：Cloudflare Pages Direct Upload / 上传预构建静态资产
- 如果项目名不可用：如果 lucheng-geo 项目名不可用，先记录 Cloudflare 给出的可用默认域名；不要用随机域名继续 AI 复测，必须先重建包体 canonical/sitemap/feed/llms 后再上传。

## 执行步骤

### 1. 按目标 pages.dev 域名重建灰度包

命令：

```bash
GRAY_EXPECTED_BASE_URL=https://lucheng-geo.pages.dev node scripts/prepare-gray-upload-package.mjs https://lucheng-geo.pages.dev
```

成功标准：

- data/gray-upload-readiness-latest.json status 为 ready-for-authorized-upload
- preflight checks 全部通过
- zipSha256 已记录
- externalActionsPerformed 为 false

### 2. 上传 ZIP 或目录到 Cloudflare Pages

人工动作：Cloudflare Dashboard → Workers & Pages → Pages → Create project → Direct Upload → project name: lucheng-geo → 上传灰度目录或 ZIP。

成功标准：

- Cloudflare 返回可访问的 pages.dev 默认域名
- 页面能通过 HTTPS 打开
- 未绑定自定义域名
- 未修改任何阿里云 DNS

### 3. 对 pages.dev 跑完整公开入口检查

命令：

```bash
node scripts/check-live-site.mjs https://lucheng-geo.pages.dev --expect-base-url=https://lucheng-geo.pages.dev --scope=full --timeout-ms=15000 --output=data/cloudflare-pages-gray-live-check-20260711.json
```

成功标准：

- status 为 passed
- totalEntries 与当前 full scope 一致
- passed 等于 totalEntries
- failed 为 0

### 4. 跑公开灰度总闸门

命令：

```bash
node scripts/run-gray-public-gates.mjs https://lucheng-geo.pages.dev --expect-base-url=https://lucheng-geo.pages.dev --timeout-ms=15000
```

成功标准：

- data/gray-public-gates-latest.json status 为 passed
- 6 个步骤全部通过
- 代表文章评级为 strong-crawlability
- 边界仍声明不证明搜索收录或 AI 采用

### 5. 记录稳定灰度上线结果

人工动作：data/cloudflare-pages-gray-deployment-result-20260711.json

成功标准：

- 记录 pages.dev URL
- 记录上传 ZIP 哈希
- 记录 live check 和 public gates 路径
- 记录未改 DNS、未购买资源、未绑定域名、未提交 ICP


## DNS 后置门禁

只有 pages.dev 默认域名完整通过后，才考虑 `geo.doctorlucheng.com`。即便到这一步，也必须单独获得 DNS 修改授权。

禁止：

- 不要 CNAME 到 trycloudflare 临时域名。
- 不要用猜测的 CNAME 目标。
- 不要修改 @、www、MX、TXT。
- 不要修改 luchengdr.com 或 winsmo.com。

## AI 验证边界

稳定托管只解锁公开抓取前提，不等于 AI 收录或推荐。P0 证据仍为 0/5 前，不解锁新的 L4/L5 自然推荐复测。

## 边界

This handoff is a local deployment execution plan only. It does not create Cloudflare resources, upload files, bind DNS, buy resources, submit ICP, and does not run AI tests, prove search indexing, prove model ingestion, prove answer adoption or authorize outcome promises.
