601451f22b
Overlay ~150 upstream items onto our V8.12 base, preserving trade-pro
theme, registry tests, and design docs. Re-applied our patch set
(discovery/env_for/blocks.css/type-mapping/theme_color/frontend entries,
test_theme_pro_v3 mods) — all anchors survived upstream evolution.
New platform enhancement (fixes upgrade-introduced regression):
multilingual.site_locale now honors settings_json.locale, plus
PUT /api/i18n/sites/{id}/locale — standalone English sites get
<html lang='en'> under the V8.15 locale-rewrite pipeline.
compose: adopt V8.21.3 (image 8.21.3-dev.1, /api/ready probes, MySQL/S3
env) with project name pinned to siteforge-v8-10 (data volumes).
Tests: 356 passed / 11 failed — all 11 confirmed pre-existing in
pristine V8.21.3 on this host (10 upstream Windows env + our build test
now green after locale fix). Patch registry updated in plan doc.
Co-Authored-By: Claude Code <noreply@anthropic.com>
3.4 KiB
3.4 KiB
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 模拟)。
- 任务数量达到上限时拒绝新任务;取消排队任务不影响已发布内容。
正式上线前需要的人工/环境门禁
- Docker 一条命令在全新宿主机成功启动 Web 与 Worker,并验证
/api/health精确报告版本/提交。 - 将 Agent 部署于真实 HTTPS 测试域名,独立密钥及 TLS 证书有效;仅开放预期入口。
- 在授权测试网站完成两轮发布,故障注入覆盖上传中断、校验失败、切换成功后 Web 超时、Worker 取消。
- 核对站点正式域名的首页、产品详情、404、canonical、sitemap、robots、媒体与链接。
- 验证真实站点切换/回滚并确认时间、缓存失效、老 URL 保留。
- 审计密钥轮换、管理员/审核人权限、备份/恢复和日志中的敏感数据。
- 完成 SFTP/S3 等其它发布方式后,逐个通过等价事务性/故障恢复门禁。
结论:V8.13 的 HTTPS Agent 远程发布形成了本地可测试的发布闭环;尚不符合全部 P5 生产验收条件。