跳转到主要内容

SOW v0.1 决策账本:哪些被保留,哪些已退役

逐项整理 v0.1 现存的 44 份 ADR:当时解决什么问题,后来是延续、演化、仅服务迁移,还是随 V1 一同退役。
逐项整理 v0.1 现存的 44 份 ADR:当时解决什么问题,后来是延续、演化、仅服务迁移,还是随 V1 一同退役。
历史决策账本

v0.1.0 Tag 中现存 44 份 ADR,编号从 0001 到 0045,其中缺少 0006。 本文保留它们的意义,但不会把每份历史实现契约重新发布成当前指南。

即使实现已经退役,ADR 仍有价值:它记录团队拒绝忽略的失败模式、当时选择的边界,以及危险 操作进入执行前必须取得的证据。

下面把每项决策分为四种命运:

命运 含义
保留 原则以基本相同的边界继续存在于当前 SOW。
演化 问题与安全规则仍在,但所有权或实现已经改变。
迁移历史 决策只服务一次性的 Pigsty/V1 切换,不再是产品契约。
退役 决策属于已经退出当前 SOW 的 Git/CAS/Route/Edge 产品模型。

主要决策日期覆盖 2026-07-11 至 2026-07-28;ADR-0035 另有 7 月 29 日与 31 日的后续修订。 多数早期 ADR 在已经指导实现与证据工作的情况下,于 7 月 19 日集中进入 Git。v0.1.0 Tag Tree 已经核对,包含下表所代表的同一组 44 条 ADR Path。其中一条原文包含已废弃基础设施细节,因此 本文有意不提供直接 Deep Link。

核心状态、发布与信任

ADR 原始决策 后续命运
0001 Git 是正典状态,SHA-256 CAS 拥有包体,Ref 表达 View/History,发布按 Target Saga 执行。 演化。 Git/CAS/Route 所有权退役;单一 Owner、Pointer-last、独立 Target 状态与证据门禁保留。
0002 Public Route、不可变 Generation 与 Client/Provider 兼容使用独立验收门。 演化。 Route 机制退役;协议、客户端与 Provider 证据仍然分开。
0003 Snapshot 需要经过验证的 Generation Copy 与 Inventory-bound Retention。 演化。 CopyObject Snapshot Tree 退役;Retained Generation 只保存 Metadata 与 Refset,不复制包体。
0004 Edge Token 验证与部署共享一套跨 Provider 版本化契约。 退役。 Edge Entitlement 不再属于 SOW Repository Engine。
0005 每个旧 Make Target 明确映射到 SOW、Retire 或 Policy Reject。 迁移历史。 映射完成切换使命后退出活动产品。
0007 公共包与 Gated 包共享一个正典仓库,而不是独立 Pro Bucket。 退役。 商业 Edge 拓扑退出产品;更一般的单 Owner 原则保留。
0008 GC 服从完整 Reachability,破坏性操作需要显式确认。 保留。 当前本地/Target GC 仍要求闭包、精确身份、Grace 与能力。
0009 Remote Generation 可见后只能前滚恢复,不能虚构回滚。 保留。 Commit Intent 仍是 Abandon/Reconcile 与 Forward-only 的边界。
0010 Metadata Signing 绑定精确公私钥身份,轮换是 Repository-wide Transition。 演化。 当前 Signer Evidence 与 Trust Ring 保留精确身份,不再使用 V1 Ref 拓扑。
0011 Remote Delete 必须具备 Target Ownership、Inventory、Checkpoint、Grace 与条件删除证据。 保留。 R2 无法满足原子条件删除,因此继续 Report-only。
0012 Private Origin、Cache Topology 与精确 Purge Mapping 都是显式部署契约。 退役。 CDN/Private-origin 部署不属于当前 SOW。
0013 持久化 Plan 只是需要重新验证的恢复输入,不能盲目重放。 保留。 Managed Recovery 仍会重新绑定 Plan、File、Target Identity 与公共证据。
0014 RPM Provenance 记录精确 Packet Evidence,并区分 Ingestion Policy 与历史证明。 演化。 当前 Package Authentication 与独立 Trust Ring 替代 V1 Receipt 编码。
0015 配置只命名 Target,Published Ref 与 Checkpoint 属于正典状态。 保留。 Target-neutral Generation 与 Target-prefix Attempt/Checkpoint 仍是不同 Owner。
0016 Cloud Adapter 使用具体、有界 SDK/API 契约,不建立通用 Provider 抽象。 演化。 具体 Provider 边界保留,V1 Edge/COS 细节退役。
0017 已接纳 RPM 签名必须在稳定 Repository Keyring 与已打开包体身份上闭合。 演化。 v0.4 独立 Multi-ring Verification 强化了同一信任边界。
0018 选定包集合按一个有界本地事务完成 Stage、Validate、Commit 与 Recovery。 演化。 V1 Materialization 退役;当前 Plain/Managed Pointer-last Stage 保留事务原则。

旧拓扑、兼容性与迁移

ADR 原始决策 后续命运
0019 为旧客户端冻结 EL7 Metadata 格式与压缩行为。 迁移历史。 当前平台支持以兼容性文档而非这份 Freeze 为准。
0020 每条旧物理 Path 与 Selector Group 都有明确 Owner。 迁移历史。 它消除了切换歧义,但不是当前仓库模型。
0021 以精确冻结证据复现跨 EL yum/infra/{arch} Projection。 迁移历史。 这条特殊 Projection 已退出产品。
0022 物理所有权变化不能破坏 Package Repository 历史连续性。 演化。 Generation、Retained Ref 与 Migration Journal 在没有 V1 Route 的情况下延续连续性。
0023 正典 Git Object 在接纳和使用前必须重新绑定精确字节。 演化。 Git Authority 退役;Descriptor/Path/Digest 身份检查保留。
0024 Materialized Route Receipt 是窄化的 Read/Retirement Capability。 演化。 Route Receipt 退役;Capability-bound 检查与删除保留。
0025 Lock 绑定精确 Process Instance 与稳定 inode,不按时间自动偷锁。 演化。 稳定 Lock inode 与拒绝超时偷锁的原则保留,V1 Process-instance Lease 机制未保留。
0026 Offline Archive 使用 Durable Intent 与严格 Archive Admission。 退役。 Offline Archive Projection 已离开当前范围。
0027 旧包体只有通过 Path、Package 与 Provenance Admission 才进入正典状态。 迁移历史。 Adoption 计划结束;严格 Package Admission 以更窄形式保留。
0028 DEB 只打开 Metadata 所需的 Control Archive,并拒绝歧义 Container。 保留。 窄解析与有界输入仍属于 APT Package Boundary。
0029 Client Floor 与 EL8 Freeze 是显式 Owner Policy,不从代码猜测。 迁移历史。 当前平台策略由兼容性参考与 Release Note 决定。
0030 旧 YUM Missing Body 只能依据已评审 Blocker-set Digest 修复。 迁移历史。 这项窄 Negative Provenance 例外没有变成通用 Ignore。
0031 Gated 旧内容需要精确 Checksum Repair 与 Activation Evidence。 退役。 Pro Activation 离开范围;Fail-closed Repair 成为通用教训。

Provider 与 Edge 控制面

ADR 原始决策 后续命运
0032 只有一个 Owner 明确指定的 Cloudflare 测试 Tuple 可例外进入。 退役。 它只是窄化的历史测试例外,从未成为通用部署规则。
0033 Read-only Provider Readiness 拥有独立 Registry 与所有权证据。 退役。 Provider Bootstrap Registry 已离开当前 SOW。
0034 Worker Bootstrap 使用 Lease、两阶段恢复、精确资源与可逆状态。 退役。 Cloudflare Deployment 不再由 Repository Engine 负责。
0035 使用前 Attest Provider Identity、Runtime Binding、Log Sink 与 Lease Ownership。 退役。 这套 Edge 控制面退出产品。
0036 R2 缺少 Conditional DeleteObject,因此允许在确定性 Capability Probe 与多层 Identity/Fence Proof 后,显式启用 checkpoint-fenced 无条件删除降级。 演化;降级未继承。 Capability Probe 与 Fail-closed Default 保留,但当前 SOW 禁用 R2 Remote Delete,Target GC 只报告 Candidate。
0037 Gated 发布必须在上传机密字节前证明 Edge Denial。 演化。 Edge 产品表面退役,暴露前证明鉴权的原则保留。
0038 YUM 切换需要绑定 Endpoint、Generation 与 Trust Bytes 的短期 Receipt。 迁移历史。 它让危险切换可审计,随后退役。
0039 Caret 在 Go、Edge、Log 与 Origin Route 中只有一种规范 URL 拼写。 演化。 旧 Route 退役;Encode-once Path Canonicalization 保留。

有界配置与派生状态恢复

ADR 原始决策 后续命运
0040 在分配或执行前限制配置基数与展开后的拓扑。 保留。 当前 Parser 与 State Wire 仍有显式 Size/Cardinality Limit。
0041 未知 Final Projection Stage 应保留审计,不得猜测删除。 演化。 当前 Recovery 仍保留矛盾证据并 Fail Closed。
0042 Derived-state Replacement 有明确 Success、Rollback、Preserved 与 Blocked Outcome。 保留。 当前 Operation 报告精确 Recovery Outcome,不折叠成简单成败。
0043 文件 Mutation 绑定 Descriptor Identity,并诚实声明 Same-UID Hostile Writer 边界。 保留。 Path Safety Fail Closed,但不宣称保护超出 OS Ownership Boundary 的攻击面。
0044 Preserved Audit Copy 只能通过精确 Capability 与 Confirmation Token 退役。 演化。 V1 命令退役;Capability-bound Deletion 原则保留。
0045 Unjournaled Residue 必须有有界分类器,不能静默接纳或删除。 保留。 当前恢复仍区分 Known State、Safe Residue 与 Contradictory Evidence。

账本背后的共同模式

真正留下来的不是最复杂的 V1 机制,而是机制下面的小型不变式:

  • 每个事实只有一个 Owner;
  • Mutation 前绑定精确 Identity;
  • 不可变内容先准备,Pointer 最后提交;
  • Commit Intent 之后只能前向恢复;
  • 删除前必须取得完整证据;
  • 输入有明确上限,Non-goal 必须诚实;
  • 兼容性结论绑定实际测试过的 Client/Provider。

Git Database、Route Graph、Edge Bootstrap 与迁移命令都可以替换,这些不变式不可以。它们如今 维护在设计原则、系统模型与 发布与恢复中。

不可变的 v0.1.0 ADR 目录仍是第一手 资料。下一篇文章继续汇总独立的 v0.1 证据记录。