diff --git a/.claude/skills/feature-loop/SKILL.md b/.claude/skills/feature-loop/SKILL.md index fa674cb..44686e5 100644 --- a/.claude/skills/feature-loop/SKILL.md +++ b/.claude/skills/feature-loop/SKILL.md @@ -59,7 +59,10 @@ thing, and everything in the Hard row without exception. One conflict is worth o silently reversed decision costs the trust in every other decision. Then decide what you genuinely do not know. Ask **only** questions whose answer changes the code or -the bytes on disk. Maximum three, one message, up front, each with a **bold** default. +the bytes on disk โ€” but ask every one of those. Batched, one message, up front, each with a **bold** +default so silence answers. **There is no cap** (`CLAUDE.md` ยง4): a request carrying six real forks gets +six questions, and splitting them across turns to look brisk wastes more of the human's time than asking +once. This file said "maximum three" until the cap was lifted in `CLAUDE.md` and not here. Never ask about: anything `conventions.md`, `content-model.md`, or an ADR already decides; naming, formatting, file placement, test style; permission to follow the constitution; "would you like me diff --git a/HARNESS.md b/HARNESS.md index 4151949..01e9b6d 100644 --- a/HARNESS.md +++ b/HARNESS.md @@ -238,6 +238,14 @@ be stale. The harness is code and drifts like code. Same rule as the engine: **a change ships with the docs that describe it, in the same change.** +**The `CLAUDE.md`/`SKILL.md` redundancy is deliberate and has now drifted twice.** The constitution is +always loaded and the skill is not, so both state the loop on purpose (`harness/README.md`, compression +contract) โ€” but a rule changed in one and left in the other is a contradiction the agent obeys at random. +It happened when the clarifying-question cap was lifted in `CLAUDE.md` and left at "maximum three" in the +skill, and again when `[spec]` markers were deleted while the skill's conflict table still deferred to +them. No gate can catch it: both files are prose, and both are internally consistent. Changing a rule in +either means grepping the other, in that change. + - `verify.sh` fails when `CLAUDE.md`, `scripts/` or `.claude/` changes without `HARNESS.md` changing โ€” except `.claude/settings.json`, which is Claude Code's permission list rather than anything about khosra. That exemption is one path: `scripts/budgets.env` and every other file under `scripts/`