用途:openspec/BACKLOG.md 保存规划其他变更时被推迟的 slice(由 hrt-change-size-gate 写入)。条目只有人工才会删除,因此已交付工作虽已覆盖部分条目,它们仍会残留,并被 discovery 当作过时的访谈上下文读取。本技能把 backlog 与实际已交付内容做对账。
调用方式:没有 schema.yaml 指令会调用它,仅由用户手动调用(/hrt-backlog-reconcile)。最好在 openspec archive <change> 之后立即运行,此时 openspec/specs/ 刚吸收了该变更的 delta specs,但任何时候都可运行。
流程:读取 openspec/BACKLOG.md,若缺失或无条目则说明并停止。对每个条目取其 Slice: 行,对照 openspec/specs/**/*.md 中的需求做语义判断(非字符串匹配,共享能力名不算证据):已覆盖(已交付需求提供该可演示行为)则提议删除;部分覆盖则报告剩余部分,不提议删除;未覆盖则保留、不作声。逐条展示每个拟删除项与部分覆盖说明:给出条目名、引用其 Slice: 行、指出覆盖它的需求,请用户确认。仅应用已确认的删除,移除条目完整块(从 ## <slug> 标题到最后一行 - ),即使文件清空也保留 # Deferred Slices 标题,且不得删除文件。最后报告删除了什么、保留了什么。
条目格式(与 hrt-change-size-gate 保持同步):## <slug-kebab>、- Raised by: <change-id> (<YYYY-MM-DD>)、- Slice: <1–2 句:该 slice 完成后用户可演示什么>、- Deferred because: <阻塞依赖 / 范围 / 容量>。文件头为 # Deferred Slices 及一段说明。hrt-change-size-gate 负责提案期间对该文件的写入,本技能负责手动对账,两者都遵循上述格式。
限制:仅基于 specs。若某条目的 Raised by 变更已被放弃且在 openspec/specs/ 中无痕迹,本技能不会检测到,需人工清理。第 3 步需要交互式用户;非交互运行时只报告拟删除项并停止,不编辑文件。