feat(executors): NEED-DECISION and BLOCKED carry a CLASS tag

This commit is contained in:
Bastien Chanot
2026-09-16 22:14:13 +02:00
parent 7cc95952bd
commit 17370d7e4c
4 changed files with 19 additions and 7 deletions
+5 -3
View File
@@ -27,8 +27,9 @@ Every choice was made in the plan or is a NEED-DECISION to report.
- Apply the FIX PLAN to the letter — fix the ROOT CAUSE named in DIAGNOSIS, - Apply the FIX PLAN to the letter — fix the ROOT CAUSE named in DIAGNOSIS,
not the symptom. A plan hole or an open choice (naming, data shape, API not the symptom. A plan hole or an open choice (naming, data shape, API
surface, dependency) → STOP, report `NEED-DECISION` with the precise surface, dependency, a user-visible choice such as placement, wording or
question. Never re-investigate or improvise a different fix. behavior) → STOP, report `NEED-DECISION` with the precise question and
its `CLASS:`. Never re-investigate or improvise a different fix.
- Stay inside the contract FILE SCOPE. A needed file outside it → - Stay inside the contract FILE SCOPE. A needed file outside it →
`NEED-DECISION` (the orchestrator owns scope changes); don't touch it. `NEED-DECISION` (the orchestrator owns scope changes); don't touch it.
- Add or update the regression test the plan names — it must fail before the - Add or update the regression test the plan names — it must fail before the
@@ -73,5 +74,6 @@ FILE(S) : <created/modified paths>
TEST(S) : <regression test added/updated + final suite run result, verbatim line> TEST(S) : <regression test added/updated + final suite run result, verbatim line>
SMOKE : <build/typecheck result if run, or n/a> SMOKE : <build/typecheck result if run, or n/a>
NOTES : <DONE: deviations (must be none) | NEED-DECISION: the exact NOTES : <DONE: deviations (must be none) | NEED-DECISION: the exact
question + the options you see | BLOCKED: the blocker verbatim> question + the options you see + CLASS: visible | public-name |
scope | internal | BLOCKED: the blocker verbatim>
``` ```
+5 -3
View File
@@ -37,8 +37,9 @@ report below is optional on this path (the dispatcher needs the edit applied
## EXECUTION RULES ## EXECUTION RULES
- Follow the plan to the letter. A plan hole or an open choice (naming, - Follow the plan to the letter. A plan hole or an open choice (naming,
data shape, API surface, dependency) → STOP, report `NEED-DECISION` with data shape, API surface, dependency, a user-visible choice such as
the precise question. Never improvise a design decision. placement, wording or behavior) → STOP, report `NEED-DECISION` with the
precise question and its `CLASS:`. Never improvise a design decision.
- Stay inside the contract FILE SCOPE. A needed file outside it → - Stay inside the contract FILE SCOPE. A needed file outside it →
`NEED-DECISION` (the orchestrator owns scope changes); don't touch it. On `NEED-DECISION` (the orchestrator owns scope changes); don't touch it. On
the applier path the scope is the files named in the bundle item — apply the applier path the scope is the files named in the bundle item — apply
@@ -84,5 +85,6 @@ STATUS : DONE | NEED-DECISION | BLOCKED
FILES : <created/modified paths> FILES : <created/modified paths>
TESTS : <added/updated + final suite run result, verbatim line> TESTS : <added/updated + final suite run result, verbatim line>
NOTES : <DONE: deviations (must be none) | NEED-DECISION: the exact NOTES : <DONE: deviations (must be none) | NEED-DECISION: the exact
question + the options you see | BLOCKED: the blocker verbatim> question + the options you see + CLASS: visible | public-name |
scope | internal | BLOCKED: the blocker verbatim>
``` ```
+6 -1
View File
@@ -43,6 +43,10 @@ the edit applied + self-verified, not the report grammar).
BLOCKED`, report why (the orchestrator escalates to `/bugfix`), never BLOCKED`, report why (the orchestrator escalates to `/bugfix`), never
expand scope yourself. On the applier path it is the files named in the expand scope yourself. On the applier path it is the files named in the
bundle item — apply only those. bundle item — apply only those.
- An open user-visible choice the contract does not settle (placement,
wording, behavior) → `STATUS BLOCKED` with `CLASS: visible | public-name |
scope` in NOTES, BEFORE editing anything. The orchestrator asks the user
and re-dispatches once.
- If tests exist for the affected code, run them. Detection cascade: - If tests exist for the affected code, run them. Detection cascade:
```bash ```bash
# JS/TS # JS/TS
@@ -78,5 +82,6 @@ STATUS : DONE | BLOCKED
FILE(S) : <changed files — suffix files you CREATED with " (new)"> FILE(S) : <changed files — suffix files you CREATED with " (new)">
FIX : <one-line description> FIX : <one-line description>
SMOKE : <test/build result, verbatim line> SMOKE : <test/build result, verbatim line>
NOTES : <BLOCKED: the blocker; DONE: none> NOTES : <BLOCKED: the blocker, + CLASS: visible | public-name | scope when
you halted at an open choice before editing; DONE: none>
``` ```
+3
View File
@@ -311,6 +311,9 @@ lock "bugfixer passes" "$BF" "## FOUR PASSES"
lock "bugfixer stays minimal" "$BF" "keep the fix minimal" lock "bugfixer stays minimal" "$BF" "keep the fix minimal"
lock "bugfixer neg control" "$BF" "**Negative control.**" lock "bugfixer neg control" "$BF" "**Negative control.**"
lock "bugfixer test must fail" "$BF" "A test that passes both ways" lock "bugfixer test must fail" "$BF" "A test that passes both ways"
lock "feater class tag" "$FE" "CLASS:"
lock "bugfixer class tag" "$BF" "CLASS:"
lock "hotfixer class tag" "$REPO/agents/hotfixer.md" "CLASS:"
echo "" echo ""
echo "gates: $PASS pass, $FAIL fail" echo "gates: $PASS pass, $FAIL fail"