feat(agents): W4 handover two-mode — synthesize opus / render sonnet, run-scoped draft handoff (BDR-077)

handover-doc-writer: MODE synthesize (model="opus" call-site — STEP
9/10/12 → .audit/handover-draft-<RUNID>.md + DRAFT COMPLETE sentinel) /
MODE render (sonnet pin — STEP 13-16 from the draft, fail-closed on
absent/mismatched RUNID). Mode-based, not a file split: the §9
name+dispatch census locks survive untouched. client-handover-writer 9.6
dispatches twice with the FULL PACKAGE both times (LRN-126) + RUNID mint
+ post-run draft cleanup. In-wave smokes PASSED disk-verified: draft
written+sentinel+gitignored; render BLOCKED on wrong RUNID (no phantom
synthesis); render consumed draft + honored skip-write, report grammar
intact. Census §17 (111 pass), make test exit 0.
This commit is contained in:
Bastien Chanot
2026-07-19 22:59:34 +02:00
parent d3d5e3802c
commit d2a10de08b
3 changed files with 67 additions and 5 deletions
+9
View File
@@ -131,6 +131,15 @@ lacks "skills/onboard/SKILL.md" 'Load `$HOME/.claude/agents/onboard
has "skills/commit-change/SKILL.md" 'model="opus"'
has "agents/commit-changer.md" 'MODE: propose'
has "agents/commit-changer.md" 'model: sonnet'
# 17) BDR-077 W4 — handover two-mode: synthesize = opus at the call site
# (STEP 9/10/12 → run-scoped .audit/ draft + DRAFT COMPLETE sentinel),
# render = sonnet pin (STEP 13-16, fail-closed on absent/mismatched
# draft). Name + dispatch-string locks of §9 survive untouched.
has "agents/handover-doc-writer.md" 'MODE: synthesize'
has "agents/handover-doc-writer.md" 'MODE: render'
has "agents/handover-doc-writer.md" 'DRAFT COMPLETE'
has "agents/client-handover-writer.md" 'MODE: synthesize'
has "agents/client-handover-writer.md" 'handover-doc-writer", model="opus"'
printf 'model-routing census: %d pass, %d fail\n' "$pass" "$fail"
[ "$fail" -eq 0 ]