-
- mergeAlterStatements 对 MODIFY/CHANGE/RENAME/ALTER/DROP(除 DROP FOREIGN KEY, 外键维度已移除故对称放行)登记 unsupportedAlters;CLI 非空即 exit 1 并列出子句。 此前静默跳过导致「migration 改了列但 docs/03 未同步」绿灯假阳性——恰是闸门最该抓 的场景。未 CREATE 的表同样登记(检测先于 if(!t) 跳过)。parseDDL(text, opts) 不传 收集器时行为不变(向后兼容)。 - parseDDL 三遍扫描统一单一抹除底稿(剥注释+抹字面量一次完成,REGEX-3 全覆盖; blankStringLiterals 长度不变故偏移可复用);顺带修掉第一遍在未抹除底稿上扫描、 字面量内 "CREATE TABLE ghost(...)" 产出幽灵表的缺口。 - 测试 52→58:全部拒绝臂参数化覆盖(RENAME/ALTER COLUMN/DROP INDEX/DROP PRIMARY KEY)、混合 ADD+MODIFY(ADD 仍并入且登记)、CLI exit-1 冒烟(spawnSync)、幽灵表 回归、DROP FOREIGN KEY 容忍。 - add-req SKILL.md 闸门说明同步硬拒语义,消掉悬空的「见 P2」引用。
-
- auto-continue.sh:sentinel 检测只认 transcript 的 assistant 行(修自匹配 bug—— block reason 自带 [ERP-HALT] 字面量、下次 Stop 命中自己,钩子实际只能续跑一次); 窗口 60→200 行,兜住「横幅在前、诊断在后」的回合;删 4000B 字节增长启发式 (与 PostToolUse 清零重复且方向性错误——纯文字空转一轮也超 4000B,上限永远到不了); reason 文案去掉对已删 skill 链的指挥与 [ERP-HALT] 字面量。 - [ERP-HALT] 补全到全部刻意停下点(合计 12 处打印点):add-req 4 处(前置拦截/ 基线停下/空增量/完成横幅)、coding-start 步骤 1/2、plan 阶段 5 处(plan-start 终结闸 / downstream-gen A5 / db-design-gen 审阅 / scope-lock 骨架 / project-init 安装失败);coding-start :130 说明文字去字面量防误触发。 - StopFailure:官方语义为「输出与退出码被忽略、无 decision 控制」(无法在钩子层 自动续跑;核实于 2026-06-11 code.claude.com/docs/en/hooks.md)。接线 log-stop-failure.sh:记录中断时间与 error_type 到 $TMPDIR/erp-stopfailure.log, 供人工/外部 watcher 据此续跑。 - coding.mjs preflight:起跑线按 docs/04 § 零探测 node/JDK/DB 客户端/测试入口, 工具链缺失带安装/配置命令的诊断 halt——不再拖到 test-gate 才爆、白跑几十分钟编码。
-
P1#2 — validate-ddl 支持增量 migration: - parseDDL 新增第三遍 mergeAlterStatements:ALTER TABLE ADD COLUMN / ADD [UNIQUE] INDEX|KEY / ADD PRIMARY KEY 并入对应表(仅追加式, MODIFY/CHANGE/DROP/RENAME 不处理;并集与文件顺序无关)。 - CLI 接受多个 DDL 文件:node validate-ddl docs/03 sql/migrations/V*.sql, CREATE + 各 V_n 的 ALTER ADD 并集 ↔ docs/03 累积 SSoT 做 4 维比对。 - add-req SKILL 新增「增量 DDL 校验(fail-closed)」闸门,替换原「多 migration 不适用」说明。 - 7 个新测试(含 DEFAULT 字面量里的 ALTER 文本不被误吃);52/52 通过。 P1#3 — coding 首跑自动建需求台账基线: - coding-start 透传 pluginRoot;coding.mjs ensureLedgerBaseline() 首跑若 .req-ledger.json 缺失则 commit 基线(幂等、best-effort、缺 pluginRoot 静默跳过), 使日后 /add-req 能识别增量、免空跑。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
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>
-
初始 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>