Bound the spec-skeptic auto-sign panel with an editorial self-correction loop #6

Closed
opened 2026-06-11 11:43:23 +02:00 by Brummel · 0 comments
Owner

Concern

The spec-skeptic auto-sign panel introduced in cbd460e was
one-shot: under /boss with pipeline.boss.spec_auto_sign: true, the
Step-6 gate in specify/SKILL.md treated any panel BLOCK as
terminal and fell straight back to the human sign-off pause.

Observed effect: the panel is adversarial-by-design and rarely returns
a unanimous SOUND, so /boss escalated to the user even for defects
the orchestrator could mechanically repair (a requirement readable two
ways, an over-broad scope, missing worked evidence). The user is
contacted for editorial work that does not require a human judgement.

Desired behaviour: contact the user only when a genuine design
question is at stake, or when self-correction has demonstrably failed.

Resolution (implemented)

The five lenses are partitioned by what a BLOCK means:

  • Editorialcriterion, ambiguity, plan-readiness. The spec
    is under-articulated; repairable by editing prose without settling a
    new design or fact.
  • Designscope-fork, grounding. The ground is not settled;
    the orchestrator may never settle these in the user's place.

Step 6 now runs a bounded loop instead of the one-shot table:

  • All five SOUND -> auto-sign (unchanged).
  • INFRA_ERROR, a design-lens BLOCK, or an exhausted budget ->
    escalate to the human sign-off pause.
  • Editorial-lens BLOCK only -> self-correct in place, re-run Step 4
    self-review and re-dispatch Step 5 grounding-check (the edit
    invalidates the prior PASS), then re-dispatch all five lenses.
  • Re-loop limit: <= 2 self-correction rounds; the 3rd unresolved
    editorial BLOCK escalates. N=2 is hard-coded, matching the
    per-task re-loop idiom in implement/agents/implement-orchestrator.md.

Safety property: re-dispatching all five lenses every round is the
backstop. If an editorial repair launders an unsourced design decision
into the spec, the re-run scope-fork / grounding jurors BLOCK on
it, and a design BLOCK escalates. Auto-sign still requires a fresh
unanimous SOUND on a green objective gate; model self-confidence
never signs. No new profile slot.

Surface touched

  • specify/SKILL.md — Step 6 loop (gate owner), Red Flags, Cross-refs
  • specify/agents/spec-skeptic.md — juror stays lens-agnostic; the
    BLOCK consequence is decided by the skill, not the juror
  • boss/SKILL.md, README.md, docs/profile-schema.md,
    docs/pipeline.md — restating-doc sync
## Concern The `spec-skeptic` auto-sign panel introduced in `cbd460e` was one-shot: under `/boss` with `pipeline.boss.spec_auto_sign: true`, the Step-6 gate in `specify/SKILL.md` treated **any** panel `BLOCK` as terminal and fell straight back to the human sign-off pause. Observed effect: the panel is adversarial-by-design and rarely returns a unanimous `SOUND`, so `/boss` escalated to the user even for defects the orchestrator could mechanically repair (a requirement readable two ways, an over-broad scope, missing worked evidence). The user is contacted for editorial work that does not require a human judgement. Desired behaviour: contact the user only when a genuine *design* question is at stake, or when self-correction has demonstrably failed. ## Resolution (implemented) The five lenses are partitioned by what a `BLOCK` means: - **Editorial** — `criterion`, `ambiguity`, `plan-readiness`. The spec is under-articulated; repairable by editing prose without settling a new design or fact. - **Design** — `scope-fork`, `grounding`. The ground is not settled; the orchestrator may never settle these in the user's place. Step 6 now runs a bounded loop instead of the one-shot table: - All five `SOUND` -> auto-sign (unchanged). - `INFRA_ERROR`, a design-lens `BLOCK`, or an exhausted budget -> escalate to the human sign-off pause. - Editorial-lens `BLOCK` only -> self-correct in place, re-run Step 4 self-review and re-dispatch Step 5 `grounding-check` (the edit invalidates the prior `PASS`), then re-dispatch all five lenses. - Re-loop limit: `<= 2` self-correction rounds; the 3rd unresolved editorial `BLOCK` escalates. N=2 is hard-coded, matching the per-task re-loop idiom in `implement/agents/implement-orchestrator.md`. Safety property: re-dispatching **all five** lenses every round is the backstop. If an editorial repair launders an unsourced design decision into the spec, the re-run `scope-fork` / `grounding` jurors `BLOCK` on it, and a design `BLOCK` escalates. Auto-sign still requires a fresh unanimous `SOUND` on a green objective gate; model self-confidence never signs. No new profile slot. ## Surface touched - `specify/SKILL.md` — Step 6 loop (gate owner), Red Flags, Cross-refs - `specify/agents/spec-skeptic.md` — juror stays lens-agnostic; the `BLOCK` consequence is decided by the skill, not the juror - `boss/SKILL.md`, `README.md`, `docs/profile-schema.md`, `docs/pipeline.md` — restating-doc sync
Brummel added the feature label 2026-06-11 11:43:23 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Skills#6