• P0 — add-req 从不 git-commit 自己的产物,导致工作树脏、coding-start 起 coding.mjs
    时撞「工作树必须干净」前置(HALT 或被误并进功能分支):
    - 步骤 0 基线:写 .req-ledger.json 后 git add+commit
    - 步骤 6:把本次全部增量产物(docs/01/02/03/05/08 + sql/migrations/V_n + .req-ledger.json)
      在当前(默认)分支统一 git commit,并用 status --porcelain 复核工作树干净
    
    P1#1 — RESUME.md 原先只在主循环末尾写,硬中断(进程被杀)到不了写入点 → 本次运行零 handoff:
    - 每个模块 runMilestone 落定后即 best-effort 追加一条「✅ 模块完成」(含本模块自主决策摘要),
      按 decStart 水位线切出本模块决策;使硬中断也能复盘已完成到哪、各模块做过哪些假设
    - loop-end 的 halt / 全完成汇总条目保留(halt 原因是 per-milestone 无法捕获的)
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    yanghl authored
     
    Browse Code »
  • 初始 Plan 完结后追加/修改需求时,只跑增量、不必整仓重跑。
    
    - lib/req-ledger.mjs(+单测):对 docs/01 REQ 卡 + docs/08 §三 FE 行算 sha256 内容哈希,
      对比 .req-ledger.json,scan/commit 出 new/changed/removed/unchanged
    - skills/plan/add-req:新增 user-invocable 增量入口。基线→检测→校验真实数据→
      A3-delta(写 V_n migration + 同步 docs/03,永不改 V1)→A5-delta(docs/05/02/08)→
      作废 changed 单元的 req-done/milestone tag→提交台账。Router 无需改动,缺 tag 即重跑
    - 变更识别靠内容哈希(非仅 tag 缺失):改过的老 REQ 也能认出并作废其 req-done,
      否则 Router 会跳过它——OpenSpec delta 思路的零依赖落地
    - 首跑无台账则先建基线,避免把存量误当新增重跑整仓
    - plugin.json 注册第 9 个 skill + 版本 0.2.0→0.3.0;CLAUDE 模板 Schema 演化补增量 V_n 规约
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    yanghl authored
     
    Browse File »