# SiteForge V8.13 — P5 发布闭环的交付与验收清单 版本:`8.13.0-dev.1`。此报告区分 **源代码实现/本地自动化测试** 与 **Docker/外部生产实机验收**。 ## 本轮实现与已有能力 | 验收点 | 当前状态 | 证据 / 限制 | |---|---|---| | 构建完成且 ZIP 可用 | 已实现与单元测试 | `release_api.approved` + `_archive_for` | | 静态质量、SEO 迁移审核、独立审批 | 已有代码 + 本轮 API 专项测试 | 未审批返回 409,迁移站差异会阻断 | | Web 不执行远程大文件上传 | 已实现 | API 提交 `remote_deploy` / `remote_rollback` 任务,返回 HTTP 202 | | 任务超时、幂等、容量、取消 | 已有 Worker + 本轮补充测试 | 单机 SQLite 租约;不是多区域事务 | | 远程 ZIP 不可变暂存 | 已实现与签名 Agent 模拟测试 | 按存档 SHA256 前 20 位命名,不更改 current | | 远程文件 SHA256、清单核验 | 已实现与模拟测试 | 篡改文件后拒绝激活 | | 单次版本切换 | 已实现与模拟测试 | `current` 指针文件通过 `os.replace` 原子替换 | | 激活后二次校验与首页探针 | 已实现与模拟测试 | 比对 Agent 公开首页的 SHA256;不等于真实域名探测 | | 异步历史版本回滚 | 已实现与模拟测试 | 仅回滚数据库记录中该站点该目标的版本;验真后切换 | | 目标密钥不进入前端 | 已实现的环境引用方案 | 推荐挂载到 `/run/secrets`,待生产轮换验收 | | SFTP / S3 原生连接器 | **未实现** | HTTPS 发布 Agent 为当前唯一可运行的远程目标类型 | | 真实 Docker、外网 TLS、CDN、域名 | **待实机验收** | 当前环境无 Docker Engine;没有公网发布测试服务器 | | 发布取消在切换瞬间的跨服务一致性 | **未完全解决** | 需增加远程状态 reconciliation / 运维确认 | | PostgreSQL/Redis 多 Worker | **待生产验收** | 独立 Compose 已配置但未完成真实高可用测试 | ## 确定性专项测试 - 不经过激活就上传两个版本时,当前线上指针保持不变。 - 篡改 staging 文件后,Agent 拒绝激活且旧站保持可访问。 - 伪造签名、非法 ZIP 路径、保留文件名、同名冲突会被拒绝。 - 已批准构建通过异步 API 提交,在队列中去重;未批准构建禁止提交。 - 运行签名 Agent 的完整暂存、校验、激活、再次验证、回滚逻辑(本地 TestClient 模拟)。 - 任务数量达到上限时拒绝新任务;取消排队任务不影响已发布内容。 ## 正式上线前需要的人工/环境门禁 1. Docker 一条命令在全新宿主机成功启动 Web 与 Worker,并验证 `/api/health` 精确报告版本/提交。 2. 将 Agent 部署于真实 HTTPS 测试域名,独立密钥及 TLS 证书有效;仅开放预期入口。 3. 在授权测试网站完成两轮发布,故障注入覆盖上传中断、校验失败、切换成功后 Web 超时、Worker 取消。 4. 核对站点正式域名的首页、产品详情、404、canonical、sitemap、robots、媒体与链接。 5. 验证真实站点切换/回滚并确认时间、缓存失效、老 URL 保留。 6. 审计密钥轮换、管理员/审核人权限、备份/恢复和日志中的敏感数据。 7. 完成 SFTP/S3 等其它发布方式后,逐个通过等价事务性/故障恢复门禁。 **结论**:V8.13 的 HTTPS Agent 远程发布形成了本地可测试的发布闭环;尚不符合全部 P5 生产验收条件。