diff --git a/agents/commit-changer.md b/agents/commit-changer.md index 652cc20..211a66a 100644 --- a/agents/commit-changer.md +++ b/agents/commit-changer.md @@ -7,6 +7,11 @@ model: sonnet # Git Smart Commit +> MODEL (BDR-077): `MODE: propose` is dispatched with `model="opus"` (the +> call-site override — narrative reconstruction + capitalize routing are +> judgment); `MODE: apply` runs on the sonnet frontmatter pin (mechanical +> staging/committing of an approved plan). + Reconstruct the development narrative from a working directory. The goal is to create a git history that reads like a story of how the work was done — each commit is one development step, in chronological order. diff --git a/agents/validator-analyzer.md b/agents/validator-analyzer.md index 081765b..57112d0 100644 --- a/agents/validator-analyzer.md +++ b/agents/validator-analyzer.md @@ -2,7 +2,7 @@ name: validator-analyzer description: Web standards audit agent — W3C HTML validity (validator.nu), W3C CSS validity (jigsaw.w3.org), WCAG 2.1 accessibility (axe-core, pa11y, WAVE). Dispatched from /web-validate. Produces scored .claude/audits/VALIDATE.md report with concrete diffs for auto-fixable issues and user actions for judgment-required fixes. Complementary to /harden (security), /seo (indexability), /geo (AI extraction). tools: Read, Edit, Write, Bash, Grep, Glob, WebFetch -model: opus +model: sonnet --- # Validator — W3C + WCAG audit diff --git a/lib/tests/model-routing.test.sh b/lib/tests/model-routing.test.sh index 81223da..069db1a 100755 --- a/lib/tests/model-routing.test.sh +++ b/lib/tests/model-routing.test.sh @@ -58,14 +58,15 @@ has "agents/client-handover-writer.md" 'subagent_type="handover-doc-writer"' has "agents/feater.md" 'Applier path' has "skills/refactor/SKILL.md" 'subagent_type="refactorer"' has "agents/refactorer.md" 'model: sonnet' -# 11) BDR-076 — session model (Fable) = orchestration + inline reflection ONLY. -# Dispatched judgment agents pinned OPUS (big tier, session-independent; -# never sonnet — that would silently downgrade a live audit). Inline-load- -# only agents (interviewer, client-handover-writer) STAY unpinned: they run -# IN the main loop, a frontmatter pin there is inert and misleads. +# 11) BDR-076/077 — session model = orchestration + inline reflection ONLY. +# Dispatched judgment agents pinned OPUS. validator-analyzer TIERED DOWN +# to sonnet (W3 — deterministic validator-runner + fixed deduction +# tables, no deep judgment; approved plan). Inline-load-only agents +# (interviewer, client-handover-writer) STAY unpinned: they run IN the +# main loop, a frontmatter pin there is inert and misleads. has "agents/seo-analyzer.md" 'model: opus' has "agents/geo-analyzer.md" 'model: opus' -has "agents/validator-analyzer.md" 'model: opus' +has "agents/validator-analyzer.md" 'model: sonnet' has "agents/plan-challenger.md" 'model: opus' fm_lacks "agents/client-handover-writer.md" 'model:' fm_lacks "agents/interviewer.md" 'model:' @@ -125,6 +126,11 @@ has "skills/onboard/SKILL.md" 'subagent_type="onboarder"' lacks "skills/init-project/SKILL.md" 'Load `$HOME/.claude/agents/scaffolder.md`' # shellcheck disable=SC2016 lacks "skills/onboard/SKILL.md" 'Load `$HOME/.claude/agents/onboarder.md`' +# 16) BDR-077 W3 — commit-changer per-mode override: propose = opus at the +# call site (documented precedence over the sonnet pin), apply = pin +has "skills/commit-change/SKILL.md" 'model="opus"' +has "agents/commit-changer.md" 'MODE: propose' +has "agents/commit-changer.md" 'model: sonnet' printf 'model-routing census: %d pass, %d fail\n' "$pass" "$fail" [ "$fail" -eq 0 ] diff --git a/skills/commit-change/SKILL.md b/skills/commit-change/SKILL.md index 412695c..0e86daa 100644 --- a/skills/commit-change/SKILL.md +++ b/skills/commit-change/SKILL.md @@ -18,7 +18,8 @@ allowed-tools: # /commit-change — propose → confirm → apply dispatcher -Grouping and committing both run on the sonnet-pinned `commit-changer` +Grouping (propose, `model="opus"` override — judgment) and committing +(apply, sonnet pin — mechanical) both run on the dispatched `commit-changer` subagent (dispatch makes the pin effective). No inline reflection happens in this dispatcher to protect, so there is no model gate. This dispatcher owns the two approval gates that used to live inside the subagent: @@ -52,11 +53,15 @@ protected branch. ## STEP 1 — Propose ``` -Agent(subagent_type="commit-changer") +Agent(subagent_type="commit-changer", model="opus") prompt: "MODE: propose $ARGUMENTS" ``` +(`model="opus"` — BDR-077: propose = narrative reconstruction + capitalize +routing, judgment tier; the call-site override takes precedence over the +sonnet frontmatter pin. Apply, STEP 4, stays on the pin.) + Read the returned `COMMIT PLAN` + `EDGE CASES` + `CAPITALIZE CANDIDATES`, terminated by `READY TO APPLY — awaiting dispatcher confirmation`. diff --git a/skills/feat/SKILL.md b/skills/feat/SKILL.md index bcd1133..43dbeae 100644 --- a/skills/feat/SKILL.md +++ b/skills/feat/SKILL.md @@ -186,7 +186,7 @@ feat(): If the feature touched multiple concerns (e.g., feature + config + test), consider splitting into 2-3 atomic commits grouped by logical unit — or run `/commit-change` on the pending work (it dispatches the -sonnet commit-changer; never inline-load the bare agent, it is now a +commit-changer (propose opus / apply sonnet, BDR-077); never inline-load the bare agent, it is now a propose/apply executor). Print summary: