feat(models): add fable tier for the four singleton judgment gates
Owner-ratified 2026-07-20: architect, grounding-check, tdd-author and debugger pin fable/xhigh — cycle-reach singleton gates whose miss silently ratifies or poisons an entire cycle (drift verdict, autonomous sign-off signature, RED executable-spec, root-cause). The set is closed: extending it requires fresh owner ratification, no fable agent ever runs per-task in a loop or in a parallel fan-out, and workflow scripts stay fable-free (the implement-loop quality gate caps at opus). Policy home: docs/agent-template.md $ model rule 1 (effort: fable gates stay xhigh, not max); the workflow policy headers now point at the exception instead of the former blanket ban.
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
name: architect
|
name: architect
|
||||||
description: Read-only architecture reviewer. Checks at cycle close whether the codebase still matches the project's design ledger and CLAUDE.md, identifies drift and technical debt with paths and short justifications, and recommends one direction for the next iteration. Names problems; does NOT propose implementations.
|
description: Read-only architecture reviewer. Checks at cycle close whether the codebase still matches the project's design ledger and CLAUDE.md, identifies drift and technical debt with paths and short justifications, and recommends one direction for the next iteration. Names problems; does NOT propose implementations.
|
||||||
tools: Read, Glob, Grep, Bash
|
tools: Read, Glob, Grep, Bash
|
||||||
model: opus
|
model: fable
|
||||||
effort: xhigh
|
effort: xhigh
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name: debugger
|
name: debugger
|
||||||
description: Diagnoses bugs in the project. Reproduces, finds the root cause, writes a RED test that pins down the symptom, and hands off to implement mini-mode for the GREEN side. Does NOT apply the fix itself.
|
description: Diagnoses bugs in the project. Reproduces, finds the root cause, writes a RED test that pins down the symptom, and hands off to implement mini-mode for the GREEN side. Does NOT apply the fix itself.
|
||||||
tools: Read, Edit, Write, Bash, Glob, Grep
|
tools: Read, Edit, Write, Bash, Glob, Grep
|
||||||
model: opus
|
model: fable
|
||||||
effort: xhigh
|
effort: xhigh
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+42
-21
@@ -109,24 +109,40 @@ unchanged; the workflow simply does the orchestration the retired
|
|||||||
|
|
||||||
### `model`
|
### `model`
|
||||||
|
|
||||||
Mandatory. Every agent pins an explicit model — `opus` or `sonnet`,
|
Mandatory. Every agent pins an explicit model — `fable`, `opus` or
|
||||||
nothing else. An omitted field means the agent inherits the *session*
|
`sonnet`, nothing else. An omitted field means the agent inherits the
|
||||||
model, which routes the dispatch to whatever the user happens to be
|
*session* model, which routes the dispatch to whatever the user happens
|
||||||
chatting on (possibly `fable` — banned for all plugin agents and
|
to be chatting on — an unintended tier for every role that has not
|
||||||
workflows, by owner decree). Pinning removes that coupling.
|
earned its pin. Pinning removes that coupling.
|
||||||
|
|
||||||
Assignment rule, in priority order:
|
Assignment rule, in priority order:
|
||||||
|
|
||||||
1. **Consequence of a miss** — agents whose errors silently poison
|
1. **Cycle-reach singleton gates** — agents that run at most a
|
||||||
downstream work (adversarial gates, root-cause diagnosis,
|
couple of times per cycle or bug AND whose miss silently
|
||||||
architecture judgment) run `opus`. Opus is the documented
|
ratifies or poisons an entire cycle run `fable` (owner-ratified
|
||||||
strength for code review, debugging, and deep reasoning.
|
2026-07-20): `architect` (the drift verdict steering the next
|
||||||
2. **Mechanical scope** — tightly-scoped execution of a pre-made
|
iteration), `grounding-check` (the autonomous sign-off
|
||||||
|
signature under `/boss`), `tdd-author` (the RED executable-spec
|
||||||
|
the GREEN side builds on), `debugger` (the root-cause a full
|
||||||
|
RED→GREEN cycle rides on). Fable is the scarcest tier and
|
||||||
|
shares its budget with a fable main session, so the set is
|
||||||
|
CLOSED — extending it requires a fresh owner ratification —
|
||||||
|
and a fable agent is never dispatched per-task inside a loop
|
||||||
|
or in a parallel fan-out. Workflow scripts stay fable-free
|
||||||
|
entirely; the implement-loop quality gate caps at `opus`.
|
||||||
|
2. **Consequence of a miss** — the remaining judgment roles —
|
||||||
|
errors still silently poison downstream work, but the role
|
||||||
|
either fans out, runs per-task, or feeds a decider rather than
|
||||||
|
gating a cycle (adversarial lenses, plan recon, field/bench
|
||||||
|
evidence, the in-loop quality review) — run `opus`. Opus is
|
||||||
|
the documented strength for code review, debugging, and deep
|
||||||
|
reasoning.
|
||||||
|
3. **Mechanical scope** — tightly-scoped execution of a pre-made
|
||||||
plan, recon, extraction, compliance-diffing run `sonnet`
|
plan, recon, extraction, compliance-diffing run `sonnet`
|
||||||
(near-opus coding quality at lower latency and cost).
|
(near-opus coding quality at lower latency and cost).
|
||||||
3. **Volume × wall-clock** — agents dispatched per-task inside
|
4. **Volume × wall-clock** — agents dispatched per-task inside
|
||||||
loops or fanned out in parallel swarms multiply their model's
|
loops or fanned out in parallel swarms multiply their model's
|
||||||
latency; they run `sonnet` unless rule 1 overrides (currently
|
latency; they run `sonnet` unless rule 2 overrides (currently
|
||||||
only `quality-reviewer`, the loop's last correctness review).
|
only `quality-reviewer`, the loop's last correctness review).
|
||||||
That override is itself **size-conditioned** (issue #30):
|
That override is itself **size-conditioned** (issue #30):
|
||||||
consequence-of-a-miss scales with diff size, so the
|
consequence-of-a-miss scales with diff size, so the
|
||||||
@@ -138,14 +154,16 @@ Assignment rule, in priority order:
|
|||||||
is what makes the lower tier defensible; the agent-file
|
is what makes the lower tier defensible; the agent-file
|
||||||
frontmatter keeps the opus default.
|
frontmatter keeps the opus default.
|
||||||
|
|
||||||
Current distribution: `opus` — architect, bencher, debugger,
|
Current distribution: `fable` — architect, debugger,
|
||||||
fieldtester, grounding-check, plan-recon, quality-reviewer,
|
grounding-check, tdd-author. `opus` — bencher, fieldtester,
|
||||||
spec-skeptic, tdd-author. `sonnet` — docwriter, glossary-extractor,
|
plan-recon, quality-reviewer, spec-skeptic. `sonnet` — docwriter,
|
||||||
implementer, spec-reviewer, synthetic-user, tester.
|
glossary-extractor, implementer, spec-reviewer, synthetic-user,
|
||||||
|
tester.
|
||||||
|
|
||||||
The same rule binds Workflow scripts: every `agent()` call passes an
|
The same rule binds Workflow scripts: every `agent()` call passes an
|
||||||
explicit `model:` option (see the model-policy header comments in
|
explicit `model:` option, and `fable` is never a valid value there —
|
||||||
`implement/workflows/*.js`).
|
rule 1's gates are frontmatter agents, not workflow stages (see the
|
||||||
|
model-policy header comments in `implement/workflows/*.js`).
|
||||||
|
|
||||||
### `effort`
|
### `effort`
|
||||||
|
|
||||||
@@ -156,9 +174,12 @@ effort, coupling every dispatch's thinking budget to whatever the user
|
|||||||
happens to be chatting at — the same session-state coupling the `model`
|
happens to be chatting at — the same session-state coupling the `model`
|
||||||
pin exists to remove. Effort follows the model split:
|
pin exists to remove. Effort follows the model split:
|
||||||
|
|
||||||
- **`xhigh` on every `opus` agent.** The judgement roles are the
|
- **`xhigh` on every `fable` and `opus` agent.** The judgement
|
||||||
pipeline's quality floor; their thinking budget must not silently
|
roles are the pipeline's quality floor; their thinking budget
|
||||||
degrade because the session runs lower.
|
must not silently degrade because the session runs lower. The
|
||||||
|
fable gates deliberately stay at `xhigh`, not `max` — the
|
||||||
|
marginal thinking is not worth the extra latency and
|
||||||
|
scarce-budget burn.
|
||||||
- **`high` on every `sonnet` agent.** Tightly-scoped execution of a
|
- **`high` on every `sonnet` agent.** Tightly-scoped execution of a
|
||||||
pre-made plan gains little from `xhigh` but pays its latency on
|
pre-made plan gains little from `xhigh` but pays its latency on
|
||||||
every dispatch — and these are exactly the roles dispatched
|
every dispatch — and these are exactly the roles dispatched
|
||||||
|
|||||||
@@ -41,7 +41,8 @@
|
|||||||
//
|
//
|
||||||
// Model policy: every agent() call pins an explicit model — never the
|
// Model policy: every agent() call pins an explicit model — never the
|
||||||
// session-model inherit (which could route to an unintended tier, e.g. fable —
|
// session-model inherit (which could route to an unintended tier, e.g. fable —
|
||||||
// banned for all plugin agents and workflows). Both phases here are mechanical
|
// reserved for the four ratified frontmatter gates, never for workflow stages;
|
||||||
|
// agent-template § model rule 1). Both phases here are mechanical
|
||||||
// (compiler-enumerated propagation, build/suite re-run), so both run sonnet.
|
// (compiler-enumerated propagation, build/suite re-run), so both run sonnet.
|
||||||
// Effort policy mirrors it: every call pins an explicit effort — the edit
|
// Effort policy mirrors it: every call pins an explicit effort — the edit
|
||||||
// (real code work) runs high, the build/suite verify (schema-bound check)
|
// (real code work) runs high, the build/suite verify (schema-bound check)
|
||||||
|
|||||||
@@ -80,7 +80,8 @@
|
|||||||
// the end-report for the orchestrator to write.
|
// the end-report for the orchestrator to write.
|
||||||
// • Model policy: every agent() call pins an explicit model — never the
|
// • Model policy: every agent() call pins an explicit model — never the
|
||||||
// session-model inherit (which could route to an unintended tier, e.g.
|
// session-model inherit (which could route to an unintended tier, e.g.
|
||||||
// fable — banned for all plugin agents and workflows). Mechanical and
|
// fable — reserved for the four ratified frontmatter gates, never for
|
||||||
|
// workflow stages; agent-template § model rule 1). Mechanical and
|
||||||
// in-loop steps run sonnet; the quality gate runs opus by default (last
|
// in-loop steps run sonnet; the quality gate runs opus by default (last
|
||||||
// correctness review before the end-verify), TIERED to sonnet/high for a
|
// correctness review before the end-verify), TIERED to sonnet/high for a
|
||||||
// small (<= 25 changed lines), non-contract diff as measured
|
// small (<= 25 changed lines), non-contract diff as measured
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name: grounding-check
|
name: grounding-check
|
||||||
description: Read-only grounding-check reviewer for spec drafts. Dispatched by the specify skill in Step 5, between linguistic self-review and user-approval. Reads the draft with fresh context, extracts its load-bearing assumptions about current codebase behaviour, and for each one searches the workspace for a currently-green test that ratifies it. Reports PASS or BLOCK. Does NOT propose fixes, does NOT edit files.
|
description: Read-only grounding-check reviewer for spec drafts. Dispatched by the specify skill in Step 5, between linguistic self-review and user-approval. Reads the draft with fresh context, extracts its load-bearing assumptions about current codebase behaviour, and for each one searches the workspace for a currently-green test that ratifies it. Reports PASS or BLOCK. Does NOT propose fixes, does NOT edit files.
|
||||||
tools: Read, Glob, Grep, Bash
|
tools: Read, Glob, Grep, Bash
|
||||||
model: opus
|
model: fable
|
||||||
effort: xhigh
|
effort: xhigh
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name: tdd-author
|
name: tdd-author
|
||||||
description: Turns a test-specifiable feature description or issue into a single minimal, autonomous RED executable-spec test ("how it should work"), then hands the GREEN side to implement mini-mode. On a design fork (behaviour not test-specifiable) it bounces to brainstorm; on a GREEN one iteration can't reach, it decomposes the headline into BLOCKER sub-tests. Does NOT implement the feature.
|
description: Turns a test-specifiable feature description or issue into a single minimal, autonomous RED executable-spec test ("how it should work"), then hands the GREEN side to implement mini-mode. On a design fork (behaviour not test-specifiable) it bounces to brainstorm; on a GREEN one iteration can't reach, it decomposes the headline into BLOCKER sub-tests. Does NOT implement the feature.
|
||||||
tools: Read, Edit, Write, Bash, Glob, Grep
|
tools: Read, Edit, Write, Bash, Glob, Grep
|
||||||
model: opus
|
model: fable
|
||||||
effort: xhigh
|
effort: xhigh
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user