历史 · 验收、发布与回滚
重构前档案,仅供追溯,不作为新版本执行指令
历史档案 · 2026-09-11 重构前快照。 本文中的“当前”“已冻结”和实施顺序属于旧基线。新版本以现行总览和实施计划为准。
当前模式:按交付阶段验收
本轮按总体计划先统一需求、设计与原型,协调和确认进入本机工作台,无需先建 GitHub Issue。需求通过、原型通过、本地代码通过、真实联调通过和生产上线是不同结论。
| 阶段 | 最小证据 |
|---|---|
| 需求 | 首期/后续/不做、用户故事、数据 Owner、待决策及本人确认 |
| 设计 | 页面或服务清单、旅程/时序、状态权限、API 能力及文档草案 |
| 原型 | 可重启文件/预览、关键状态、走查意见与版本;假数据标记 |
| 本地实现 | 与改动相称的类型/构建/测试、源版本或未提交摘要、接口文档 |
| 真实联调 | 固定双方版本、真实身份/环境、正常/拒绝/恢复场景与报告 |
| 发布 | 已授权环境、不可变制品、发布与回滚证据,必要远端检查 |
文档和原型不要求运行全部服务测试;后台代码不以原型走查替代验证。已有本人确认可以绑定原记录复用,不重复要求确认。正式发布仍保留现有风险对应的检查和权限边界。
2026-09-09 技术证据补充
Core 存储修复已经 #21 → #19 进入 main 118f232c751fc75d2b2260d146231c03807ba8b8,CI 34318762079 123 单测、105 PostgreSQL 测试通过;此前 PG 72/73 和四项待修发现是历史状态。P5 接收及 B1 真实组合仍需证据,不能将修复合并等同运行启用。Console 目录/入口与 Design 移交亦已合并,实时任务以本机工作台当前核验为准。
2026-09-08 历史记录
实施计划的完成单位不是“代码合并”,而是可复现的交付证据。仓库内验收证明本仓增量正确;跨仓验收证明版本、身份、网络、事务和故障边界在真实组合中仍成立。
Definition of Ready
进入实现前必须具备:
- 明确的 Owner、范围与非目标;
- 本包真正依赖的接口/环境条件;尚未依赖的后续运行门禁不阻塞需求、设计和无副作用原型;
- 固定 Contracts 版本或明确的 Contracts 变更工作包;
- 数据 Owner、Writer、幂等键、事务与授权边界;
- 正常、拒绝、重放、超时、崩溃与回滚验收条件;
- 不使用真实客户数据和明文 Secret 的测试方案。
需求/设计/原型可以在未知项明确登记后推进;进入真实数据写入、跨仓调用和生产 Writer 前,必须具备该动作的具体接口、权限和环境条件。
仓库内完成定义
每个仓库至少提供:
- 格式、静态检查、类型检查和生产构建。
- 单元测试以及与风险匹配的集成/契约测试。
- 依赖漏洞、Secret 与许可证检查。
- 数据库变更的真实 PostgreSQL 正向、负向和并发证据。
- API/事件的当前版本与上一兼容版本消费验证。
- 运行配置、健康检查、Metrics、Alert 和回滚说明。
- 本地阶段记录源版本/文件摘要、运行命令与报告;正式远端/发布阶段补 CI Run、Release/Package/Image Digest。
Surface 仓还必须完成关键流程浏览器回归、窄屏和权限状态;Gateway/Core 还必须完成幂等、未知状态和崩溃窗口;Infrastructure 还必须完成目标环境演练。
跨仓证据清单
跨仓门禁使用一个不可变 Evidence Manifest,至少记录:
evidenceId / schemaVersion / generatedAt
deliveryBatch / environment
contractsPackageVersion / packageDigest
repositories[] {
repository / commitSha / workflowRunId
releaseOrImageRef / artifactDigest
}
testSuites[] { name / result / reportDigest }
scenarios[] { scenarioId / expected / observed / evidenceRef }
cutoverDecisionRef? / rollbackDecisionRef?
approvers[] / evidenceDigestAlgorithmVersion / evidenceDigest证据正文不得包含 Raw Credential、Prompt、客户输入、Provider Secret、长期签名 URL 或客户媒体。敏感日志只保存受控引用与授权读取路径。
Writer 切换
每类命令的切换记录必须包含:
- 旧 Writer、新 Writer 与命令范围;
- 路由规则版本和切换生效点;
- 幂等水位、在途 Operation 与归属处理器;
- Shadow 对比结果及已知差异;
- 数据写入、Outbox、费用和副作用的不变量;
- 观察指标、停止条件与回滚条件;
- Secret、Webhook、Cron 和部署引用的迁移状态。
合法迁移只有“旧入口代理到新 Owner”或“旧 Owner 继续写、新实现无副作用 Shadow”两种模式。禁止旧新实现同时创建业务事实或外部副作用。
回滚原则
- 回滚只改变后续新命令的路由;已受理 Operation 由原 Owner 处理至终态或进入正式恢复流程。
- 已提交事件、Ledger、Asset Version、Provider Task 和审计事实保持不可变,不能通过删除伪装回滚。
- Contracts 不能回滚到无法读取已经产生的新版本事实;消费者兼容期必须覆盖观察窗口。
- 数据库回滚不得依赖破坏性删除。未上线项目可直接按新设计修改 Schema,但生产切流后必须有明确前向修复策略。
- 未达到恢复门禁时保持功能关闭或只读,不以人工改表恢复服务。
B1 运行与恢复检查入口(尚未执行)
当前 B1 缺少运行制品与组合环境证据,以下是恢复 Runbook 的门禁,不是可对生产执行的命令。现有 Infrastructure #6 基线手册只适用于临时集群;已修正 Scope 并登记正式 0.3.0,但端口/身份/Runtime 仍须核对;固定报告及摘要见 B1 控制页。
- 先核验 Contracts 正式 tgz、Core/Admin/Edge 最终 SHA、CI、Migration/Image Digest、P5 接收和环境批准记录。缺任一项停在证据准备;不得套用临时 K3s 配置激活目标环境。
- 由 Core Owner 提供实际 Worker pause/drain/lease 命令、查询降级入口和观测字段,Infrastructure #4 在原 Runbook 固定命令版本;当前没有已核验命令,不臆造服务名或开关。Public Admission 保持 disabled。
- 隔离环境记录同一 Admission 的 Event IDs/完整摘要、冻结 Delivery Set、Attempt/Lease、Receipt 坐标、Projection Version 及 Admin Query Request/授权审计引用。缺链路时结果是未验收,不用 Golden 补洞。
- 由 Infrastructure #5 编排已批准故障:提交后 Ack 丢失、旧 Lease 晚到、Consumer 崩溃、重复/乱序;逐项证明无重复 Mutation、无错误终态及恢复后 Query 的真实状态。保存 Expected/Observed/报告摘要,不仅保存测试名。
- Shadow/Cutover/回滚沿现有 Candidate freeze → drain/fencing → 精确成员验证 → 新 Proof → 原子 Pointer/消费目标顺序执行;回滚也必须追平新增 Source。缺 Proof 或无法排空时 Query 保持关闭,不人工改表、删除 Receipt 或翻旧 Pointer。
- Evidence Manifest、日志脱敏、报告可读取性和不可变归档通过后,再由有权 Owner 记录验收与环境决定。本任务不执行该决定。
Console 的临时浏览器/PG 报告与 Studio 的失败/skip 应原样固化;正式验收不能只保留会过期的 /tmp 路径。每次新 head 或固定组合变化均重验受影响场景。
文档与状态更新
一个批次通过后,在对应本地文档工作包中同步更新;采用 PR 时再关联该变更:
Issue 关闭、PR 合并或页面可访问都不能单独把状态改为“已验收”或“已上线”。