Skip to content

feat(implementation): pass the Brief's goal, out-of-scope and assumptions verbatim in each dispatch brief #8541

Description

@kyle-sexton

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.md does 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:route role 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 none for 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:route keeps 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):

Key interfaces:

Acceptance criteria:

  • plugins/implementation/skills/implement-dispatch/SKILL.md mentions "out-of-scope" or "out of scope" (case-insensitive), and contains verbatim within the new brief item.
  • SKILL.md has at least two pointers, to choosing-a-model and to build-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.json gains 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 --check passes, with one minor fragment for implementation. The PR's CI runs scripts/check-changelog-fragments.sh --check-required origin/main and it passes.
  • CI's check-skills (skill gate, eval sets) and check-plugins (fragments) pass.

Out of scope:

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, :233 stay 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions