fix: add adjudication recovery - #109
Conversation
MageByte-Zero
left a comment
There was a problem hiding this comment.
该 PR 解决的裁决恢复断点有实际价值,但以下问题必须修复后才能合并到 main:
-
移除整个
changes/add-adjudication-recovery/。其中包含.spec-superflow.yaml、.superpowers/sdd/的计划、receipt、review 报告及此次运行的 planning artifacts。仓库明确规定插件仓库不提交changes/<change>/、.spec-superflow.yaml或.superpowers/;请只保留生产代码、测试、skills 与公开文档。参见Lines 212 to 216 in f96ddc8
-
修复已授权 pass 对连续修复范围的绕过。当前
validateRepairContinuity允许 pass 复用最后一个失败 receipt 的完整旧范围;在 adjudication 后,这可以无需从previousRepair.previous_head开始审查修复就将 wave 标为 resolved 并放行依赖。allow-review路径至少应拒绝该旧范围复用,并要求 base 等于previousRepair.previous_head。请新增“拒绝旧范围 pass、接受连续范围 review”的回归测试。参见spec-superflow/scripts/lib/execution-plan.mjs
Lines 313 to 326 in f96ddc8
-
将确认事实持久化到 adjudication receipt。CLI 要求
--confirm,但写入 ledger 的 authorization 未记录该字段,未满足 #108 对 decision、reason、timestamp 和 confirmation 均可审计的要求。请写入并测试confirmed: true。参见spec-superflow/scripts/lib/execution-plan.mjs
Lines 217 to 229 in f96ddc8
另外,#108 仍写“五次失败”,而当前 main 的既定阈值是三次。此 PR 保留三次是正确的,但合并会因 Fixes #108 自动关闭 issue;请先将 issue 的验收文字改为当前阈值(3)或配置化表述。
非阻塞:请在发布前同步 INSTALL.md 中的 execution-control 示例,补充 ssf execution adjudicate 与失败后重新裁决的语义。
完成以上修改并重新通过构建、测试和 CI 后,请请求重新审查。
Summary
ssf execution adjudicate <change-dir> --wave <id> --decision allow-review --confirm --reason <text>execution show --jsonand document operator recoveryRoot cause
The repair circuit breaker correctly moved a wave to
adjudication-required, butrecordReviewthen rejected every subsequent review and no CLI command could persist the human decision requested by the workflow. Creating a new execution-plan revision discarded the identity of the repair chain instead of adjudicating it.Safety behavior
adjudication-requiredpassreceipt releases dependent wavesVerification
npm run buildssf doctor, andgit diff --checkFixes #108