# Local verification record

验证日期：2026-08-30（Asia/Shanghai）  
目标目录：`F:\CH\ngon-game-runtime`  
状态：本地验证与 Vercel 生产响应验证均通过；主站 iframe 联调在 `F:\CH\ngon-unblocked` 中单独记录

## 上游完整性

以 GitHub tree API 的固定提交 `3452c30d7ed95b36833a0a06b93ba3506f2adb10` 为基线，用原始 Git blob SHA-1 对本地文件逐个核对：

- 上游 blob：24 个
- 本地缺失：0 个
- 与上游逐字节一致：21 个
- 有意修改：3 个，即 `README.md`、`index.html`、`js/tech.js`

三个修改文件全部记录在 `CHANGES.md`。

## 自动检查

执行：

```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\build-source-archive.ps1
node .\scripts\verify-runtime.mjs
```

结果：

- 必需文件和公开源码入口齐全。
- `index.html` 的 16 个有效本地静态引用全部通过本地 HTTP 200 检查。
- 源码 ZIP 与 `.sha256` 校验一致，ZIP 内含 LICENSE、CHANGES 和 vercel.json，且没有把 ZIP 自身递归打包。
- controller 的未固定远程加载器已不存在。
- stats.js 的远程加载器和对应 `performance` tech 已不存在。
- Wikipedia API 代码仍在。
- `vercel.json` 可解析，`X-Robots-Tag: noindex`、CSP 和 `frame-ancestors https://ngonunblocked.com` 均符合预期。
- 14 个 `js/*.js` 文件全部通过 `node --check` 语法检查。

## 真实浏览器检查

用 Playwright Chromium 打开带 `vercel.json` 同款响应头的本地服务器：

- 首页 200，标题为 `n-gon`，16 个入口静态请求成功。
- 点击 start 后标题变为 `n-gon: initial`，游戏进入 `field emitter` 状态。
- 浏览器 console：0 error、0 warning。
- 展开 updates 后，`https://api.github.com/repos/landgreen/n-gon/commits` 返回 200。
- 在页面上下文请求 Wikipedia opensearch API 返回 200，说明 CSP 保留了该功能。
- `source.html` 能显示固定 SHA、GPL、变更、第三方 notice、源码 ZIP 和校验文件入口。
- 本地响应实测包含 `X-Robots-Tag: noindex` 以及只允许 `https://ngonunblocked.com` 嵌入的 CSP。

## 生产验证与剩余项

- Vercel 项目已创建并部署，稳定别名为 `https://ngon-game-runtime.vercel.app/`。
- 生产首页、`source.html`、源码 ZIP、入口 CSS/JS、LICENSE 与 CHANGES 均实测 HTTP 200。
- 生产响应实测包含 `X-Robots-Tag: noindex`、`Cross-Origin-Resource-Policy: cross-origin`，以及只允许 `https://ngonunblocked.com` 嵌入的 CSP。
- 尚未绑定 `game.ngonunblocked.com`。
- 本文件更新时，生产 `https://ngonunblocked.com` iframe 切换与联调仍由主站任务继续。
- 没有声称完成全关卡、所有随机 tech 或长时间稳定性测试。

这些项目只能在获得后续部署授权后按 `DEPLOY.md` 继续。
