Repository navigation
feat(implementation): pass the Brief's goal, out-of-scope and assumptions verbatim in each dispatch brief #8541
Description
Refs: #7587
Agent Brief
Type: Feature
Summary: /implementation:implement-dispatch quotes the PLAN.md Brief's goal, out-of-scope list and assumptions in every worker brief, and picks each spawn's model and effort from the task's stated complexity through dated pointers to the upstream docs.
Current behavior:
- Brief item 5 gives the worker "the reason the phase exists" plus the PLAN.md path "where the Brief lives" (
plugins/implementation/skills/implement-dispatch/SKILL.md:93). The worker's worktree has no memory slice (SKILL.md:99), so it reads the Brief only if it follows the path; nothing quotes the Brief's goal, out-of-scope list or assumptions (SKILL.mddoes not mention "out-of-scope" or "out of scope"). - Model choice per worker comes from the plan's routing row (
SKILL.md:95,SKILL.md:106-113), with pointers to the sub-agents and model-config pages (SKILL.md:115-117). The orchestrator's own pick, when the plan names none, uses/multi-agent:routerole defaults (SKILL.md:186). Nothing ties model or effort to the task's stated complexity, and nothing sets effort per spawn.
Desired behavior:
- A new brief item (beside item 5) quotes three parts of the PLAN.md Brief verbatim, never paraphrased: the goal, the out-of-scope list and the assumptions. When the Brief has no such part, the item says
nonefor it. Under--items(no PLAN.md), the item quotes the same parts from the work item when present. The "Do not dispatch a brief with a gap" rule (SKILL.md:105) covers the new item. - Model and effort per spawn: when the plan's routing row names a model, it still wins. Otherwise the orchestrator picks model and effort from the complexity stated in the phase's brief or ticket, using pointers to the upstream model guide and effort docs, and names in the brief which docs row it matched.
/multi-agent:routekeeps supplying each role's default. No workload or class names are invented. Each pointer carries an as-of date and a recheck trigger, per.claude/rules/skill-bodies-state-current-rules.md; no table is copied from the docs. - Skills use plain role names (orchestrator, worker, verifier, reviewer).
- No existing sentence is removed.
Known call (2026-10-20):
- "Docs row" means the row of the choosing-a-model page's Model selection matrix (https://platform.claude.com/docs/en/about-claude/models/choosing-a-model#model-selection-matrix, its "When you need..." column) plus the row of the effort page's Effort levels table (https://platform.claude.com/docs/en/build-with-claude/effort#effort-levels, its "Typical use case" column). Where the effort page's per-model recommendations differ from its table, the per-model recommendations win.
- Per-spawn
effortoverrides the agent's frontmattereffortpin (https://code.claude.com/docs/en/sub-agents#choose-an-effort-level);implementer.mdandscoped-implementer.mdpineffort: medium. SKILL.md:113(no frontier tier on a concurrent wave),:186(the route floor) and:233(the trail verifier passes no per-calleffort) stay in force above the complexity pick.SKILL.mdchanges are added lines only; changing a word in an existing line counts as a deleted line.- Uncertainty is Known: the meaning of "docs row", whether per-spawn effort exists, and how the pick sits under existing rules each have a cited answer above, per poteto's slice research of 2026-10-20.
Key interfaces:
plugins/implementation/skills/implement-dispatch/SKILL.md("Dispatch cadence" item 1 brief list and item 2 dispatch).plugins/implementation/skills/implement-dispatch/evals/evals.json.- Upstream pages to point at: https://platform.claude.com/docs/en/about-claude/models/choosing-a-model, https://platform.claude.com/docs/en/build-with-claude/effort, and https://code.claude.com/docs/en/sub-agents for the per-spawn
effortsetting (each returned HTTP 200 on 2026-10-20; the lane reads the sections it cites).
Acceptance criteria:
-
plugins/implementation/skills/implement-dispatch/SKILL.mdmentions "out-of-scope" or "out of scope" (case-insensitive), and containsverbatimwithin the new brief item. -
SKILL.mdhas at least two pointers, tochoosing-a-modeland tobuild-with-claude/effort, each followed by an as-of date and a recheck trigger. - The PR deletes no line from
plugins/implementation/skills/implement-dispatch/SKILL.md. -
evals/evals.jsongains two cases: a dispatch whose brief must quote the Brief's out-of-scope list verbatim; a phase with no routing row where the brief names the model, the effort and the docs row matched. -
scripts/check-changelog-fragments.sh --checkpasses, with oneminorfragment forimplementation. The PR's CI runsscripts/check-changelog-fragments.sh --check-required origin/mainand it passes. - CI's
check-skills(skill gate, eval sets) andcheck-plugins(fragments) pass.
Out of scope:
- A bundled
hardworkload or any new role in/multi-agent:route(rejected, D102). /implementation:implement(inline mode) and the PR body carrying the Brief (closed slices implementation: pass the PLAN.md pointer at each handoff #7603, source-control/pull-request: carry the Brief's acceptance criteria into the PR body #7604).- Paved-path reading in implement (discipline: paved-path file and principle placement #7589's paved-path slice, feat(discipline): make reuse-or-replace the paved-path writer and add a codemod-first migration row #8545).
Origin:
- Pass the Brief's goal, out-of-scope and assumptions to workers verbatim: ours, D5, checked against Matt's to-spec and to-tickets (D95).
- Model and effort per spawn from the task's stated complexity via dated pointers; route keeps role defaults; name the docs row matched: owner's amendment, D102, Q163.
- Plain role names in skills: owner's preference, D2.
- Known call (docs row definition, per-spawn effort override,
:113,:186,:233stay in force): poteto's slice research, 2026-10-20, recorded by Issue Triage.
Do not run with: the paved-path-and-lever-check slice of #7589 (#8545) if it edits plugins/implementation/skills/implement-dispatch/; otherwise none open (PLAN's matrix pairs Phase 19 with Phase 2, whose implementation slice #7603 is closed). #8545 runs after this slice.
Slice of #7587, drafted by the Issue Triage session from the thread's recorded decisions.
Activity
fix(implementation): keep the attempt-brief line intact and add item …