c27a0c14cc
build / build (push) Successful in 1m22s
真实演练暴露两个只有跑起来才看得见的问题: 1. 归档要求完整兼容性契约(v0.7.1 / schema 74 / elasticsearch_v8 / 1024 维 / 映射摘要),而基线装配只填了 embedding 与映射,捕获被 "unsupported snapshot compatibility contract" 拒绝。 现在 schema 版本读目标库 schema_migrations(dirty 或版本不符直接拒), embedding 优先读目标库模型绑定(本机目标 models 表为空、引用悬空, 此时回落部署声明并说清来源),版本/引擎用受支持栈常量,映射取目标当前值。 2. 演练在"还没写目标内容"时就允许 restore_blocked=false 的窗口以 blocked 收尾, 写出 content_risk=false + restore_blocked=true 的非法 journal(恢复器拒绝加载, 目标停在停机态)。现在写 canary 时先 MarkContentRisk,allowRestore 按 "没碰内容 ⇒ 安全恢复;碰过 ⇒ 必须恢复并校验通过"。 另外给演练工具加 -recover:只把非终态窗口按原运行状态恢复,用于演练失败后 把目标救回来(不改治理记录)。 验证:库内模拟真实目标不可得,契约分支用真实 kgseal 演练覆盖: snapshot 5cb945e6… 捕获 143ms → 基线一致 → canary 后校验如预期失败 (knowledges 1 行摘要不一致)→ 恢复后校验通过 → 窗口 succeeded、服务与入口恢复。