diff --git a/.claude/tasks/TODO.md b/.claude/tasks/TODO.md index 927a12a..cadf255 100644 --- a/.claude/tasks/TODO.md +++ b/.claude/tasks/TODO.md @@ -11,19 +11,19 @@ rule changes for all work, hotfix included; classes VISIBLE / PUBLIC NAME / SCOPE ask, internal technical choices never. Spec: `docs/superpowers/specs/2026-09-16-ask-dont-guess-design.md`; plan: `docs/superpowers/plans/2026-09-16-ask-dont-guess.md` (9 tasks, lock-first). -- [ ] P1 `lib/contract-interview.md` — STEP 2 CLARIFY (pass A gaps, pass B +- [x] P1 `lib/contract-interview.md` — STEP 2 CLARIFY (pass A gaps, pass B open choices), MID-RUN CLARIFICATION, HOW TO ASK; 9 locks in `contract-verifier.test.sh` -- [ ] P2 `CLAUDE.global.md:51-55` — "Ask rather than guess" replaces the +- [x] P2 `CLAUDE.global.md:51-55` — "Ask rather than guess" replaces the one-question rule; bug line reconciled -- [ ] P3 `skills/feat/SKILL.md` — pass B at STEP 1, NEED-DECISION routed on class -- [ ] P4 `skills/bugfix/SKILL.md` — pass B at STEP 3, NEED-DECISION routed on class -- [ ] P5 `skills/hotfix/SKILL.md` — pass B at LOCATE, tagged BLOCKED relayed; +- [x] P3 `skills/feat/SKILL.md` — pass B at STEP 1, NEED-DECISION routed on class +- [x] P4 `skills/bugfix/SKILL.md` — pass B at STEP 3, NEED-DECISION routed on class +- [x] P5 `skills/hotfix/SKILL.md` — pass B at LOCATE, tagged BLOCKED relayed; lock `loops-light.test.sh:84` -- [ ] P6 `skills/ship-feature` STEP 2 + `skills/init-project` contract §/STEP 3 -- [ ] P7 `agents/interviewer.md` — visible/public/scope item never `(assumed)` -- [ ] P8 `agents/{feater,bugfixer,hotfixer}.md` — CLASS tag; 3 locks in `gates.test.sh` -- [ ] P9 `make test`, CHANGELOG, TODO tick; manual behavioral check before merge +- [x] P6 `skills/ship-feature` STEP 2 + `skills/init-project` contract §/STEP 3 +- [x] P7 `agents/interviewer.md` — visible/public/scope item never `(assumed)` +- [x] P8 `agents/{feater,bugfixer,hotfixer}.md` — CLASS tag; 3 locks in `gates.test.sh` +- [x] P9 `make test` green (2026-09-16), CHANGELOG, TODO tick; manual behavioral check still OPEN before merge - [ ] P10 registries at capitalize: BDR (supersedes the one-question rule), LRN (taste is invisible to a gap-only trigger; fresh re-dispatch cost favors plan-time questions) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ff4bbf..b82c69b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,25 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). destructive command under auto mode. ### Changed +- **Ask, don't guess: the orchestrators ask about open choices instead of + settling them.** `CLAUDE.global.md` replaces "one question upfront, never + mid-task" with: a choice visible in the result, a name that becomes + public, or a scope the request does not settle → ask, even mid-task; + internal technical choices stay Claude's. `lib/contract-interview.md` + STEP 2 becomes CLARIFY: pass A (the three gap checks, at contract time) + and pass B (the open-choice sweep in three classes, run once at each + flow's PLAN step, no question cap, over-5 guard, "you decide" recorded as + delegated). New MID-RUN CLARIFICATION section: an executor's + `NEED-DECISION` carries a `CLASS:` tag; visible / public-name / scope go + to the user verbatim, internal is decided in the loop; answers land in + the contract `[gated]`. New HOW TO ASK section (LRN-102). `/feat`, + `/bugfix`, `/hotfix`, `/ship-feature`, `/init-project` wire pass B at + their plan step; `/feat` and `/bugfix` stop deciding `NEED-DECISION` + themselves; `/hotfix` drops "zero questions ever" and allows one + re-dispatch for a class-tagged BLOCKED; the interviewer never ships a + visible / public-name / scope item as `(assumed)`; feater, bugfixer and + hotfixer report the class. Locks updated in the `contract-verifier`, + `loops-light` and `gates` tests. - **The classifier, not `permissions.ask`, now guards destructive shell work** (BDR-090). Ten rules left the static tiers: `rsync`, `kill -9`, `killall`, `pkill` out of `deny`, and `python3 -c`, `python -c`,