mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-20 16:07:11 +08:00
4.2 KiB
4.2 KiB
ADR-0528:跨域 reconciliation completion 演练
- 状态:Accepted(D-426c3 源码候选,阶段实物以双架构 artifact gate 为准)
- 日期:2026-09-02
- 关联:ADR-0526、ADR-0527、D-397、D-398、D-399、D-426c3
背景
ADR-0527 已证明 exact stopped capture 可以经外部 review/Automation 决策完成一次正式 Automation 应用并回滚,但交付链仍停在 reconciliation_automation_rolled_back。产品代码已经具备 Secret/Config plan/decision/apply、Run History append-only preservation 和 completion v3;缺口在于 Trial Kit 没有把这些能力组成一个可下载、可审计、可中断重放的阶段产物。
同时,原有诊断把 Legacy Apps/Auths 的空表与含真实身份数据的表一律视为 identity_custody_required。2.x readiness 又要求这两张表存在,因此删除表制造“可完成样本”会被正式 inspector 拒绝,而保留空表又永远无法完成。这是状态分类不精确,不应由 fixture 绕过。
决策
reconciliation-rehearsal.sh保留 ADR-0527 的prepare、review、apply-rollback,新增apply-plan与complete,不把人工决策合并为一个自动命令。apply-plan消费两个互相独立的 owner-private 文件:Automation row decision 和原始 review decision。它先应用并验证 Automation,再在该 exact head 上保存双侧终态 Run History,随后生成并验证 Secret/Config plan,停在secret_config_decision_required。complete消费外部 Secret/Config candidate decision 和原始 review decision,执行 decision commit/verify、apply/verify,并以 completion v3 同时绑定 Automation apply、Secret/Config apply 和 Run History preservation。成功终态固定为reconciliation_completed且adapterCount=3。- Run History 必须位于 Automation apply 与 Secret/Config plan 之间。preservation 不推进 instance head;Secret/Config plan 会推进 head。倒置顺序会使 preservation 丢失允许的 compare-and-swap 来源状态。
- target 和 Legacy 在 completion 后继续保持 stopped。脚本固定
targetRestart=not_authorized、legacyRestart=not_authorized;重启属于后续独立 authority ceremony。 - 外部 decision 目录必须为 current-UID
0700canonical directory、恰好包含一个0400|0600regular file、与所有 authority/Legacy root 不重叠,并整体只读挂载。两个 decision 不得放在同一父目录。 - completion-ready 2.x fixture 保留 readiness 所需完整 schema,只移除未知
PluginOwnedState,并让Apps/Auths保持空表。诊断仅在 Legacy 已知 identity-policy 表全部为空时把该域降为informational/catalog_evidence;任一 identity 行、未知 schema、目标侧 identity 或查询异常仍维持原有 required/blocked 行为。 - CI 同时保留一条 apply→verify→rollback→verify 流和一条独立 completion-ready 全链,避免 completion 证明覆盖回滚证明。fixture/decision generator 只存在仓库 CI,不进入 Trial Kit。
- Trial Kit、verification、offline audit 升为
@v11/@v9/@v8,manifestschemaVersion=12;Local milestone 升为@v7、schemaVersion=7。新增 required gatelegacyUpgradeReconciliationCompletion=passed,旧证据不会被新 auditor 接受。
资源与产品边界
- 所有 reconciliation Operator 命令继续使用 128 MiB memory/swap、0.5 CPU、32 PID、无网络、只读 rootfs、drop-all 和 no-new-privileges;低配设备默认 headless 不变。
- 本切片不增加 package、production dependency、daemon、listener、timer、watcher、连接池或稳态资源。
- completion 是 stopped-state durable fence,不是 target/Legacy 重启授权、生产升级、Public Release 或用户真实数据自动迁移承诺。
- Cluster 继续使用 PostgreSQL/Kubernetes authority,不复用 Local SQLite/POSIX/Docker ceremony。
后果
阶段产物将同时回答两个问题:Automation 是否能安全回滚,以及可适配的 Automation、Secret/Config、Run History 是否能在服务仍停止时形成可验证 completion。含真实 Legacy identity 数据、未知 schema、Secret/Config 冲突、非终态 Run 或缺少任一外部 decision 的部署仍会失败关闭,需要后续专用 adapter 或人工恢复方案。