fix(review): scope per-trigger effort to the backend that can honour it #80
No reviewers
Labels
No labels
already-shipped
bug
documentation
duplicate
enhancement
good first issue
help wanted
in progress
invalid
needs-decision
proposal
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: crenshawdev/cadence#80
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "cadence/64-per-trigger-effort"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
fire()resolved{gate, tier, effort}and consumedeffortonly on the cross-model arm. Theclaude-subagentarm dispatchescad-reviewerthrough spawn-agent, whose surface is(agent_name, prompt, model?), so the value was read, resolved, and dropped with nothing said. On a stock install (reviewers: ["claude-subagent"],diff.effort: medium) that is every trigger, every fire.Wiring it through is not available
Re-verified against the host docs during this work: on the Agent/Task dispatch path Cadence uses,
effortis a subagent definition field only. There is no tool parameter, env var, or setting that varies it per dispatch. Varying it needs per-rung reviewer agent files, which is #63's proposal, and half-building that here would have been worse than the defect.So this scopes the key rather than wiring it, on the principle the issue states: either the configured value reaches the backend, or the key does not claim it does. A key read, resolved and silently dropped is the worst of the three.
What changed
review-triggers.md— step 1 states which fields reach which backend. Step 4's claude-subagent branch saystrigger.effortis not passed and cannot be, names the seam surface, and requires one visible line per fire when the configured effort differs fromcad-reviewer's pinnedhigh. Same "name the degradation" discipline the cross-modelok:falsedrop already uses.config.schema.json— the fivereview.triggers.*.effortpurposes andreview.decision_review.effortnow say the key is cross-model only. This is what feeds the/cad-configmenu, so it lands at the point of setting.review.consult.effortuntouched, since consult has no subagent arm by design.workflows/config.md— catalog row scoped.DESIGN.md— a dated⚠️ SCOPEDbullet under "Per-trigger cognitive fit" recording that this is scopable, not wirable, and that the real dial needs #63.route.test.mjs— two tests so the new claim cannot drift: every role'sbase_effortmatches the frontmatter of the agent file that runs it, and eachescalate_effort_variantreally carries thehighthatroute.mjshardcodes.Nothing in
route-table.jsontiers or the profile matrix was touched.Rebase note
Rebased onto #79. Both branches grew
cadence-core/workflows/config.md, so the sharedweight-budgets.jsonentry conflicted. Resolved to 16681, which is the combined size of both additions and matches the file exactly; self-verify enforces it as a ceiling and passes.Verification (post-rebase)
node --test cadence-core/bin/*.test.mjs→ 739 pass, 0 failnode cadence-core/bin/self-verify.mjs→{"ok":true,...,"problems":[]}Follow-up
The same silent-drop shape exists in two more places, filed as #78 rather than folded in here.
Closes #64