diff --git a/agents/bugfixer.md b/agents/bugfixer.md index f24cd33..cbff813 100644 --- a/agents/bugfixer.md +++ b/agents/bugfixer.md @@ -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, not the symptom. A plan hole or an open choice (naming, data shape, API - surface, dependency) → STOP, report `NEED-DECISION` with the precise - question. Never re-investigate or improvise a different fix. + surface, dependency, a user-visible choice such as placement, wording or + 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 → `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 @@ -73,5 +74,6 @@ FILE(S) : TEST(S) : SMOKE : NOTES : + question + the options you see + CLASS: visible | public-name | + scope | internal | BLOCKED: the blocker verbatim> ``` diff --git a/agents/feater.md b/agents/feater.md index 1346f59..6144fdd 100644 --- a/agents/feater.md +++ b/agents/feater.md @@ -37,8 +37,9 @@ report below is optional on this path (the dispatcher needs the edit applied ## EXECUTION RULES - Follow the plan to the letter. A plan hole or an open choice (naming, - data shape, API surface, dependency) → STOP, report `NEED-DECISION` with - the precise question. Never improvise a design decision. + data shape, API surface, dependency, a user-visible choice such as + 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 → `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 @@ -84,5 +85,6 @@ STATUS : DONE | NEED-DECISION | BLOCKED FILES : TESTS : NOTES : + question + the options you see + CLASS: visible | public-name | + scope | internal | BLOCKED: the blocker verbatim> ``` diff --git a/agents/hotfixer.md b/agents/hotfixer.md index 89843fe..d766591 100644 --- a/agents/hotfixer.md +++ b/agents/hotfixer.md @@ -43,6 +43,10 @@ the edit applied + self-verified, not the report grammar). BLOCKED`, report why (the orchestrator escalates to `/bugfix`), never expand scope yourself. On the applier path it is the files named in the 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: ```bash # JS/TS @@ -78,5 +82,6 @@ STATUS : DONE | BLOCKED FILE(S) : FIX : SMOKE : -NOTES : +NOTES : ``` diff --git a/lib/tests/gates.test.sh b/lib/tests/gates.test.sh index 76d5fa7..efdbb0a 100644 --- a/lib/tests/gates.test.sh +++ b/lib/tests/gates.test.sh @@ -311,6 +311,9 @@ lock "bugfixer passes" "$BF" "## FOUR PASSES" lock "bugfixer stays minimal" "$BF" "keep the fix minimal" lock "bugfixer neg control" "$BF" "**Negative control.**" 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 "gates: $PASS pass, $FAIL fail"