Files
cms-SiteForge/docs/V8_13_P5_ACCEPTANCE.md
T
浅念 601451f22b upgrade: adopt V8.21.3 (V8.13→8.21.3: P5 SFTP/S3, P6 multilingual, editor overhaul, enterprise hardening)
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>
2026-10-23 12:31:03 +08:00

3.4 KiB
Raw Blame History

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 生产验收条件。