refactor: make spec auto-sign always-on under /boss, drop the per-project toggle

The auto-sign panel earned its keep: in aura it signed ~20 specs autonomously and discriminates (several recent specs escalated to the human path). The needless complexity was the configuration freedom around it — spec_auto_sign was a per-project toggle that was only ever meant to be on.

Remove the toggle. Auto-sign is now fixed /boss behaviour, with the human sign-off pause as the escalation target (objective gate red / design BLOCK / INFRA_ERROR / budget spent). The panel itself, the Step-1.5 seeding machinery, grounding-check, and the spec-skeptic agent are unchanged; conventions.md can now state there is no per-project behavioural toggle at all.
This commit is contained in:
2026-06-17 13:53:00 +02:00
parent 7a58a530b1
commit c5da79f8fc
8 changed files with 63 additions and 86 deletions
+22 -26
View File
@@ -167,9 +167,10 @@ route(task):
- **Else → spec-driven (`specify``planner`).** The deliberate heavy
fallback for prose-design work the sources already settle (an
exhaustive issue body, a long in-context discussion). `specify` is
bounded (no interview); dispatch it autonomously and it pauses at its
own user-review gate (a problem-state notify, not a pre-dispatch
checkpoint) unless the project enables spec auto-sign.
bounded (no interview); dispatch it autonomously and it signs through
its own Step-6 auto-sign gate, escalating to a user-review pause (a
problem-state notify, not a pre-dispatch checkpoint) only when the
gate cannot clear.
**The straddle rule (a rule, not an example).** "Add an enum variant"
straddles the compiler-driven and the tdd/spec arms. Decide by what the
@@ -188,15 +189,13 @@ bounces back — is **not** a ranking of the paths. It is a consequence of
context budget: the four are bounded (no open Q&A; `compiler-driven` and
`debug` self-settle on a run), whereas a fresh `brainstorm` is
high-context discovery the orchestrator cannot compact on its own (see
trigger 4). `specify` dispatched in `/boss` pauses at its own Step-6
user-review gate to take sign-off — a final-sign-off notify, not a
pre-dispatch checkpoint. The one exception is spec auto-sign: when a
project enables it in its CLAUDE.md project facts, a spec that clears all
objective gates AND a unanimous adversarial `spec-skeptic` panel is
signed by the orchestrator without pausing, and the run continues to
`planner` — see §"Spec auto-sign" below. The gate is built so the
orchestrator's own confidence is never what signs; absent that, the
human signature stays mandatory. Do not let the asymmetry harden into a
trigger 4). `specify` dispatched in `/boss` signs through its own Step-6
auto-sign gate: a spec that clears all objective gates AND a unanimous
adversarial `spec-skeptic` panel is signed by the orchestrator without
pausing, and the run continues to `planner` — see §"Spec auto-sign"
below. A spec that cannot clear the gate escalates to the user-review
pause (a final-sign-off notify, not a pre-dispatch checkpoint). The gate
is built so the orchestrator's own confidence is never what signs. Do not let the asymmetry harden into a
reflex of routing borderline items to `brainstorm` "to be safe" — that
is the exact bias this reflection exists to break; walk the cascade
honestly each time. The one principled tilt is two-sided and lives
@@ -302,7 +301,7 @@ question.
## Notifications
Two states call for a notify; nothing else does — plus a third,
narrow one that exists only when spec auto-sign is enabled:
narrow one for spec auto-sign:
1. **Done-state.** The autonomous queue is empty — the cycle
closed, the audit ratified, and no further iteration is
@@ -322,7 +321,7 @@ narrow one that exists only when spec auto-sign is enabled:
the next backlog item is a new cycle (no spec yet) and
starting it would force a fresh `brainstorm`.
3. **Auto-sign (only when the project enables spec auto-sign).** The
3. **Auto-sign.** The
orchestrator signed a spec in the user's place and is
continuing the run — see §"Spec auto-sign". This is the one
sanctioned mid-flow notify, and it is sanctioned *because it
@@ -389,14 +388,11 @@ actionable ask, not a wrap-up summary.
## Spec auto-sign
Off by default. A project turns it on in its CLAUDE.md project facts
(spec auto-sign: enabled). With it off, a `specify`
dispatch in `/boss` always pauses for the user's signature — the
conservative default, unchanged.
With it on, the orchestrator MAY sign a spec in the user's place,
but only through `specify`'s Step-6 auto-sign gate, which is owned
and defined there. The boss-side contract is just this:
Under `/boss`, the orchestrator signs a spec in the user's place
through `specify`'s Step-6 auto-sign gate, which is owned and defined
there. (Outside `/boss`, the user signs every spec directly; there is
no gate to run.) A spec that cannot clear the gate escalates to the
human sign-off pause. The boss-side contract is just this:
- **The gate is not the orchestrator's judgement.** Signing requires
every objective gate green (precondition, parse, a `grounding-check`
@@ -465,7 +461,7 @@ and defined there. The boss-side contract is just this:
| "It's a bug but the fix is a one-line type edit — route it `compiler-driven`" | No. An observed bug is first in the cascade → `debug`, RED-first, regardless of how mechanical the fix looks. The bug-gate sits before the type-edit arm precisely so a regression cannot launder itself around RED-first. |
| "The issue is exhaustive but it's a new cycle, so bounce to the user before `specify`" | `specify` direct-entry is bounded and autonomously dispatchable — it is NOT the high-context `brainstorm` cycle that trigger 4 reserves for the user. Dispatch it; it will pause at its own user-review gate for sign-off. The pre-dispatch bounce is for an *open* design that needs discovery, not for a settled one that needs only production. |
| "`tdd` is the secondary skill, `brainstorm` is the real entry" | All entry paths are always available. The choice among them is the cascade, walked per item — not a habit of treating `brainstorm` as primary and the lighter arms as exceptions. The lighter arms exist to be reached; reaching past them by elimination is the failure the verification axis was added to prevent. |
| "Auto-sign is on and this spec is clearly good — I'll sign it and skip the panel" | The panel IS how a spec gets signed under auto-sign; there is no signing on judgement. Your sense that it is clearly good is the precise signal the gate is built not to trust. Run the objective gates, dispatch the five jurors, require unanimity. |
| "This spec is clearly good — I'll sign it and skip the panel" | The panel IS how a spec gets signed under `/boss`; there is no signing on judgement. Your sense that it is clearly good is the precise signal the gate is built not to trust. Run the objective gates, dispatch the five jurors, require unanimity. |
| "Four jurors said SOUND, one blocked on something I think is wrong — I'll sign" | Unanimous-or-nothing. You never sign over a `BLOCK`. If it is an editorial lens, repair it and re-run the whole panel (≤ 2 rounds); if it is a design lens or the budget is spent, it routes to the human sign-off it would have had anyway. Signing because *you* think the juror is wrong is overruling the panel — confidence by the back door. |
| "Auto-sign let me continue, so I don't need to notify — it's just progress" | The auto-sign notify is mandatory and carries a decision (the user's veto over a signature made without them). It is the one sanctioned mid-flow notify precisely because it is not progress — it is the audit trail for a delegated gate. |
@@ -482,7 +478,7 @@ and defined there. The boss-side contract is just this:
- About to route a behaviour-encoding change to `compiler-driven` because it "looks mechanical" — apply the straddle rule: if the change encodes new behaviour it is `tdd` / `spec-driven`, and doubt means it carries behaviour.
- About to accept a `compiler-driven` edit on a clean build without confirming the suite is green *unchanged* — the conjunction is the done-signal; a green-but-wrong change builds clean.
- About to sign a spec under auto-sign on confidence — without all objective gates green and a unanimous `spec-skeptic` panel; signing over any `BLOCK`; self-correcting a *design*-lens (`scope-fork` / `grounding`) `BLOCK` instead of escalating; or looping past the 2-round budget. The gate exists so the orchestrator's confidence never signs.
- About to run the auto-sign path at all when the project has not enabled spec auto-sign, or to skip the mandatory auto-sign notify after signing.
- About to run the auto-sign path outside a `/boss` session, or to skip the mandatory auto-sign notify after signing.
## Cross-references
@@ -501,8 +497,8 @@ and defined there. The boss-side contract is just this:
record-reality discipline for the only autonomous glossary writer.
- **Spec auto-sign gate:** owned by `../specify` Step 6; the
adversarial juror is `../specify/agents/spec-skeptic.md` (dispatched
five times, one per lens). Enabled per project in its CLAUDE.md
project facts — see `../docs/conventions.md`.
five times, one per lens). Runs under `/boss` — see
`../docs/conventions.md`.
- **Downstream skills dispatched:** `../brainstorm`,
`../specify` (spec-production core; autonomously dispatchable for a
settled design), `../planner`, `../implement`, `../audit`,