diff --git a/CHANGELOG.md b/CHANGELOG.md index ba97bc0e7..acbf63b84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [Unreleased] + +**The Completeness Principle now asks for complete coverage with minimal code.** Every tier-2+ skill's preamble said "the complete thing is the goal", and ETHOS.md told models to "always prefer A" because "the 70-line delta costs seconds". Models read that as permission to write more code, which is the "50-line job arriving as 400" complaint (GSTA-93). Coverage of the requirement is still non-negotiable; code beyond it is no longer a virtue. + +### Changed +- **`scripts/resolvers/preamble/generate-completeness-section.ts`**: the default section reads "Complete coverage, minimal code": recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it, prefer the smaller diff at equal coverage, and add no checks for impossible states. Unrelated work stays separate scope. The `Completeness: X/10` scoring rule and the GPT-5.6 Sol variant are unchanged. The section is 5 characters shorter, so every regenerated skill shrinks and 89 size pins go down. +- **`ETHOS.md`**: "Completeness is cheap ... always prefer A" becomes "Complete coverage, minimal code": completeness is measured in coverage, not lines; at equal coverage choose the smaller diff; no speculative abstractions, impossible-state checks or unneeded refactors. A new anti-pattern names the impossible-state fallback. +- `review/specialists/simplification.md` and `CLAUDE.md` quote the new house rule instead of "If A is 70 lines more, choose A". + +### Tests +- `test/model-overlays.test.ts` asserts the new default wording ("Complete coverage, minimal code.", "prefer the smaller diff"). +- `test/fixtures/skill-md-size-allowlist.json`: 89 pins lowered by 3 characters each. None raised. + +### Gate integrity +- No threshold, budget, timeout, trial count, case kind or assertion weakened. The section heading "Completeness Principle — Boil the Ocean" is unchanged, so every skip list that names it still matches. + ## [1.91.221.0] - 2026-10-25 **The session-start updater no longer skips because of its own session's workflow lease, and the autostash tests stop failing their first pass in Free Tests.** Since #3385, `gstack-session-update` skips the fast-forward while another session holds a workflow lease, and it means to ignore the session that started it (`--exclude-ancestry-of`). The check runs in the forked background updater, though, and passed the hook's own `$$`, which has exited by then, so the ancestry walk excluded nothing. A Claude Code process that had already run a skill (and so held a lease) and then started a session again in the same process (`/clear`, resume or compaction) logged `SKIP leased pid=` and never updated. `test/session-update-autostash.test.ts` hit the same gap plus a fixture leak: its first two fixtures spawned the updater with the whole parent environment, so it read the test preload's `GSTACK_LEASE_DIR`, which every test file in the same Bun process shares. A lease another file left there gave "Received: SKIP leased pid=3196/1m" where UPDATING or PULL_FAILED was expected, in 13 Free Tests runs since #3385 merged (each passed on the serial retry). diff --git a/CLAUDE.md b/CLAUDE.md index 095a8d7b9..32cac189b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -402,10 +402,10 @@ When estimating or discussing effort, always show both human-team and CC+gstack | Architecture / design | 2 days | 4 hours | ~5x | | Research / exploration | 1 day | 3 hours | ~3x | -Completeness is cheap. Don't recommend shortcuts when the complete implementation -is achievable. Boil the ocean — the complete thing is the goal; only genuinely -unrelated multi-quarter migrations are separate scope, never an excuse for a -shortcut. See the Completeness Principle in the skill preamble for the full +Complete coverage, minimal code. Don't recommend shortcuts that leave part of +the requirement uncovered, and don't add code beyond it: when options cover the +same, prefer the smaller diff. Only genuinely unrelated multi-quarter migrations +are separate scope, never an excuse for a coverage gap. See the Completeness Principle in the skill preamble for the full philosophy. ## Search before building diff --git a/ETHOS.md b/ETHOS.md index 4a4eef033..5fe8cb42e 100644 --- a/ETHOS.md +++ b/ETHOS.md @@ -48,13 +48,17 @@ the ocean is the goal. The only thing still out of scope is genuinely unrelated work: a multi-quarter platform migration that has nothing to do with the task at hand. Flag that as separate scope. Boil everything else. -**Completeness is cheap.** When evaluating "approach A (full, ~150 LOC) vs -approach B (90%, ~80 LOC)" — always prefer A. The 70-line delta costs -seconds with AI coding. "Ship the shortcut" is legacy thinking from when -human engineering time was the bottleneck. +**Complete coverage, minimal code.** Completeness is measured in coverage, not +lines. When approach A covers the whole requirement and approach B covers 90%, +choose A: AI makes the missing 10% cheap, and "ship the shortcut" is legacy +thinking from when human engineering time was the bottleneck. When both cover +the whole requirement, choose the smaller diff. Code beyond the requirement is +not completeness: no speculative abstractions, no defensive checks for states +that cannot happen, no refactors the task does not need. **Anti-patterns:** -- "Choose B — it covers 90% with less code." (If A is 70 lines more, choose A.) +- "Choose B — it covers 90% with less code." (A coverage gap is not a saving. Choose the option that covers the requirement.) +- "Add a fallback in case this impossible state happens." (Code for states that cannot happen is bloat. Cover the real cases.) - "Let's defer tests to a follow-up PR." (Tests are the cheapest lake to boil.) - "This would take 2 weeks." (Say: "2 weeks human / ~1 hour AI-assisted.") diff --git a/autoplan/SKILL.md b/autoplan/SKILL.md index 6dfa63ba0..d8fe106f1 100644 --- a/autoplan/SKILL.md +++ b/autoplan/SKILL.md @@ -264,7 +264,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/canary/SKILL.md b/canary/SKILL.md index dd2e3c572..a5db12b8d 100644 --- a/canary/SKILL.md +++ b/canary/SKILL.md @@ -249,7 +249,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/codex/SKILL.md b/codex/SKILL.md index 033ecb507..f9e86525a 100644 --- a/codex/SKILL.md +++ b/codex/SKILL.md @@ -250,7 +250,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/context-restore/SKILL.md b/context-restore/SKILL.md index 4238273ad..c524fd6c3 100644 --- a/context-restore/SKILL.md +++ b/context-restore/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/context-save/SKILL.md b/context-save/SKILL.md index 851260191..55261d58e 100644 --- a/context-save/SKILL.md +++ b/context-save/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/design-consultation/SKILL.md b/design-consultation/SKILL.md index b6ae934f1..b6bedc649 100644 --- a/design-consultation/SKILL.md +++ b/design-consultation/SKILL.md @@ -275,7 +275,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/design-html/SKILL.md b/design-html/SKILL.md index 8ff97671d..e8ff0003a 100644 --- a/design-html/SKILL.md +++ b/design-html/SKILL.md @@ -252,7 +252,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/design-review/SKILL.md b/design-review/SKILL.md index 42e10d81d..095015649 100644 --- a/design-review/SKILL.md +++ b/design-review/SKILL.md @@ -252,7 +252,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/design-shotgun/SKILL.md b/design-shotgun/SKILL.md index 3287bb48d..0c6e43f4a 100644 --- a/design-shotgun/SKILL.md +++ b/design-shotgun/SKILL.md @@ -269,7 +269,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/devex-review/SKILL.md b/devex-review/SKILL.md index 80b2bb0ad..8c75a20bd 100644 --- a/devex-review/SKILL.md +++ b/devex-review/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/document-generate/SKILL.md b/document-generate/SKILL.md index f262eb2f9..c2c089576 100644 --- a/document-generate/SKILL.md +++ b/document-generate/SKILL.md @@ -255,7 +255,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/document-release/SKILL.md b/document-release/SKILL.md index 8c1690ca4..db85f8f32 100644 --- a/document-release/SKILL.md +++ b/document-release/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/eval-plan/SKILL.md b/eval-plan/SKILL.md index 79d793ad9..80869cdd6 100644 --- a/eval-plan/SKILL.md +++ b/eval-plan/SKILL.md @@ -254,7 +254,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/health/SKILL.md b/health/SKILL.md index 1078ec6d5..cdafd9f3e 100644 --- a/health/SKILL.md +++ b/health/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/investigate/SKILL.md b/investigate/SKILL.md index 659937b9f..28c9ec345 100644 --- a/investigate/SKILL.md +++ b/investigate/SKILL.md @@ -293,7 +293,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/ios-clean/SKILL.md b/ios-clean/SKILL.md index 5e176a996..fcb84c43c 100644 --- a/ios-clean/SKILL.md +++ b/ios-clean/SKILL.md @@ -250,7 +250,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/ios-design-review/SKILL.md b/ios-design-review/SKILL.md index bc25c0188..2690e7ff8 100644 --- a/ios-design-review/SKILL.md +++ b/ios-design-review/SKILL.md @@ -249,7 +249,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/ios-fix/SKILL.md b/ios-fix/SKILL.md index 4266f9a72..31ca32689 100644 --- a/ios-fix/SKILL.md +++ b/ios-fix/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/ios-qa/SKILL.md b/ios-qa/SKILL.md index c985f5975..71c1f6526 100644 --- a/ios-qa/SKILL.md +++ b/ios-qa/SKILL.md @@ -254,7 +254,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/ios-sync/SKILL.md b/ios-sync/SKILL.md index acc3e9cc9..cd6803cf3 100644 --- a/ios-sync/SKILL.md +++ b/ios-sync/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/land-and-deploy/SKILL.md b/land-and-deploy/SKILL.md index 9c6571b01..d2c0ffa5a 100644 --- a/land-and-deploy/SKILL.md +++ b/land-and-deploy/SKILL.md @@ -249,7 +249,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/landing-report/SKILL.md b/landing-report/SKILL.md index 5602b0ae7..c2267fb1f 100644 --- a/landing-report/SKILL.md +++ b/landing-report/SKILL.md @@ -250,7 +250,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/learn/SKILL.md b/learn/SKILL.md index 9d2626c42..5bb3b83ea 100644 --- a/learn/SKILL.md +++ b/learn/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/office-hours/SKILL.md b/office-hours/SKILL.md index 779f50df9..60b1d939e 100644 --- a/office-hours/SKILL.md +++ b/office-hours/SKILL.md @@ -290,7 +290,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/pair-agent/SKILL.md b/pair-agent/SKILL.md index 58ee1bc8c..e442e80cf 100644 --- a/pair-agent/SKILL.md +++ b/pair-agent/SKILL.md @@ -248,7 +248,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index dd1148184..034e8e934 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -274,7 +274,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/plan-design-review/SKILL.md b/plan-design-review/SKILL.md index 049e21ddc..7a2c6b44b 100644 --- a/plan-design-review/SKILL.md +++ b/plan-design-review/SKILL.md @@ -276,7 +276,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/plan-devex-review/SKILL.md b/plan-devex-review/SKILL.md index f0050d3cf..bf4efead7 100644 --- a/plan-devex-review/SKILL.md +++ b/plan-devex-review/SKILL.md @@ -244,7 +244,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/plan-eng-review/SKILL.md b/plan-eng-review/SKILL.md index 834edb8f0..90b791722 100644 --- a/plan-eng-review/SKILL.md +++ b/plan-eng-review/SKILL.md @@ -290,7 +290,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/plan-tune/SKILL.md b/plan-tune/SKILL.md index 5f96829ef..9996714dd 100644 --- a/plan-tune/SKILL.md +++ b/plan-tune/SKILL.md @@ -255,7 +255,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/qa-only/SKILL.md b/qa-only/SKILL.md index 2a662251f..83e0bbe3e 100644 --- a/qa-only/SKILL.md +++ b/qa-only/SKILL.md @@ -249,7 +249,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/qa/SKILL.md b/qa/SKILL.md index 5d4bd506b..e1f92e95b 100644 --- a/qa/SKILL.md +++ b/qa/SKILL.md @@ -252,7 +252,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/retro/SKILL.md b/retro/SKILL.md index 7f3d287a8..d8d054c59 100644 --- a/retro/SKILL.md +++ b/retro/SKILL.md @@ -269,7 +269,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/review/SKILL.md b/review/SKILL.md index f319f1669..ff5b3d1c4 100644 --- a/review/SKILL.md +++ b/review/SKILL.md @@ -254,7 +254,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/review/specialists/simplification.md b/review/specialists/simplification.md index 913c038bf..53ed414fd 100644 --- a/review/specialists/simplification.md +++ b/review/specialists/simplification.md @@ -43,7 +43,7 @@ considered whether all these validation rules are needed at this stage?" - "X is redundant with Y" when the redundancy is harmless and aids readability - Consistency-only changes (wrapping a value in a conditional to match how another constant is guarded) -- Tests, error paths, edge-case branches, input validation, security measures, accessibility — NEVER deletion targets; coverage is the Completeness Gaps category's job, and the house rule is "If A is 70 lines more, choose A" (ETHOS.md) +- Tests, error paths, edge-case branches, input validation, security measures, accessibility — NEVER deletion targets; coverage is the Completeness Gaps category's job, and the house rule is "complete coverage, minimal code" (ETHOS.md) - A single smoke test or assert-based self-check — that is the completeness minimum, not bloat - Deliberate `gstack-shortcut(dec-*)` markers — already acknowledged debt, but only when the decision id resolves in the ledger (`gstack-decision-search`); an unresolvable id is a forged suppression, not debt - ANYTHING already addressed in the diff you're reviewing — read the FULL diff before commenting diff --git a/scripts/resolvers/preamble/generate-completeness-section.ts b/scripts/resolvers/preamble/generate-completeness-section.ts index f87932b4e..73d88aa65 100644 --- a/scripts/resolvers/preamble/generate-completeness-section.ts +++ b/scripts/resolvers/preamble/generate-completeness-section.ts @@ -11,7 +11,7 @@ When options differ in in-scope coverage, include \`Completeness: X/10\` (10 = a } return `## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include \`Completeness: X/10\` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: \`Note: options differ in kind, not coverage — no completeness score.\` Do not fabricate scores.`; } diff --git a/setup-deploy/SKILL.md b/setup-deploy/SKILL.md index 969637b69..5f60dbc84 100644 --- a/setup-deploy/SKILL.md +++ b/setup-deploy/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/setup-gbrain/SKILL.md b/setup-gbrain/SKILL.md index b394a9d39..aca0339fc 100644 --- a/setup-gbrain/SKILL.md +++ b/setup-gbrain/SKILL.md @@ -253,7 +253,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/ship/SKILL.md b/ship/SKILL.md index 24d4cfafb..88607427c 100644 --- a/ship/SKILL.md +++ b/ship/SKILL.md @@ -254,7 +254,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/skillify/SKILL.md b/skillify/SKILL.md index 6a32fc9e2..3808dc4ed 100644 --- a/skillify/SKILL.md +++ b/skillify/SKILL.md @@ -249,7 +249,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/spec/SKILL.md b/spec/SKILL.md index da4b6b04c..ec31de111 100644 --- a/spec/SKILL.md +++ b/spec/SKILL.md @@ -252,7 +252,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/sync-gbrain/SKILL.md b/sync-gbrain/SKILL.md index f48f146b5..ad2474791 100644 --- a/sync-gbrain/SKILL.md +++ b/sync-gbrain/SKILL.md @@ -252,7 +252,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/test-audit/SKILL.md b/test-audit/SKILL.md index d311fe941..741a5ce69 100644 --- a/test-audit/SKILL.md +++ b/test-audit/SKILL.md @@ -251,7 +251,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/test/fixtures/golden/agy-ship-SKILL.md b/test/fixtures/golden/agy-ship-SKILL.md index 6cc30d0b4..8b3f72f35 100644 --- a/test/fixtures/golden/agy-ship-SKILL.md +++ b/test/fixtures/golden/agy-ship-SKILL.md @@ -239,7 +239,7 @@ Curated jargon list lives at `$GSTACK_ROOT/scripts/jargon-list.json`. On the fir ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/test/fixtures/golden/claude-ship-SKILL.md b/test/fixtures/golden/claude-ship-SKILL.md index 24d4cfafb..88607427c 100644 --- a/test/fixtures/golden/claude-ship-SKILL.md +++ b/test/fixtures/golden/claude-ship-SKILL.md @@ -254,7 +254,7 @@ Curated jargon list lives at `~/.claude/skills/gstack/scripts/jargon-list.json`. ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/test/fixtures/golden/codex-ship-SKILL.md b/test/fixtures/golden/codex-ship-SKILL.md index bbadb86ec..09f8b8c92 100644 --- a/test/fixtures/golden/codex-ship-SKILL.md +++ b/test/fixtures/golden/codex-ship-SKILL.md @@ -259,7 +259,7 @@ Curated jargon list lives at `$GSTACK_ROOT/scripts/jargon-list.json`. On the fir ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/test/fixtures/golden/factory-ship-SKILL.md b/test/fixtures/golden/factory-ship-SKILL.md index a59827a30..78ed7b75c 100644 --- a/test/fixtures/golden/factory-ship-SKILL.md +++ b/test/fixtures/golden/factory-ship-SKILL.md @@ -240,7 +240,7 @@ Curated jargon list lives at `$GSTACK_ROOT/scripts/jargon-list.json`. On the fir ## Completeness Principle — Boil the Ocean -AI makes completeness cheap, so the complete thing is the goal. Recommend full coverage (tests, edge cases, error paths) — boil the ocean one lake at a time. The only thing out of scope is genuinely unrelated work (rewrites, multi-quarter migrations); flag that as separate scope, never as an excuse for a shortcut. +Complete coverage, minimal code. Recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it: on equal coverage, prefer the smaller diff; no checks for impossible states. Unrelated work (rewrites, multi-quarter migrations) is separate scope: flag it; it never excuses a gap. When options differ in coverage, include `Completeness: X/10` (10 = all edge cases, 7 = happy path, 3 = shortcut). When options differ in kind, write: `Note: options differ in kind, not coverage — no completeness score.` Do not fabricate scores. diff --git a/test/fixtures/skill-md-size-allowlist.json b/test/fixtures/skill-md-size-allowlist.json index 444c0d79b..0714ab139 100644 --- a/test/fixtures/skill-md-size-allowlist.json +++ b/test/fixtures/skill-md-size-allowlist.json @@ -2,94 +2,94 @@ "_comment": "Generated SKILL.md files over the limit, pinned at their exact character count (#3199). test/skill-md-size-guard.test.ts fails when a pinned skill grows past its pin or shrinks below it: lower the pin when a skill shrinks and delete it once the skill is within the limit. Raising a pin is an owner decision. The shared-preamble hoist that would retire most pins is deferred: owner Garry, revisit 2026-11-15.", "limit": 100000, "pins": { - "agy/gstack-autoplan": 130504, - "agy/gstack-design-consultation": 108184, - "agy/gstack-design-review": 143528, - "agy/gstack-land-and-deploy": 117722, - "agy/gstack-plan-design-review": 140013, - "agy/gstack-plan-devex-review": 135760, - "agy/gstack-plan-eng-review": 152582, - "agy/gstack-review": 124218, - "claude/design-review": 136531, - "codex/gstack-autoplan": 130628, - "codex/gstack-design-consultation": 109452, - "codex/gstack-design-review": 145028, - "codex/gstack-land-and-deploy": 122272, - "codex/gstack-office-hours": 102308, - "codex/gstack-plan-design-review": 142466, - "codex/gstack-plan-devex-review": 138649, - "codex/gstack-plan-eng-review": 155128, - "codex/gstack-review": 125122, - "copilot/gstack-autoplan": 131637, - "copilot/gstack-codex": 100235, - "copilot/gstack-design-consultation": 109536, - "copilot/gstack-design-review": 144833, - "copilot/gstack-land-and-deploy": 118977, - "copilot/gstack-office-hours": 100464, - "copilot/gstack-plan-design-review": 140884, - "copilot/gstack-plan-devex-review": 136912, - "copilot/gstack-plan-eng-review": 153307, - "copilot/gstack-review": 125489, - "cursor/gstack-autoplan": 129278, - "cursor/gstack-design-consultation": 107222, - "cursor/gstack-design-review": 142507, - "cursor/gstack-land-and-deploy": 116645, - "cursor/gstack-plan-design-review": 138968, - "cursor/gstack-plan-devex-review": 134591, - "cursor/gstack-plan-eng-review": 151436, - "cursor/gstack-review": 140750, - "factory/gstack-autoplan": 131562, - "factory/gstack-codex": 100655, - "factory/gstack-design-consultation": 108670, - "factory/gstack-design-review": 144297, - "factory/gstack-land-and-deploy": 120817, - "factory/gstack-office-hours": 101343, - "factory/gstack-plan-design-review": 141749, - "factory/gstack-plan-devex-review": 137960, - "factory/gstack-plan-eng-review": 154550, - "factory/gstack-review": 144529, - "gbrain/gstack-autoplan": 129815, - "gbrain/gstack-design-review": 132842, - "gbrain/gstack-land-and-deploy": 117167, - "gbrain/gstack-plan-design-review": 127855, - "gbrain/gstack-plan-devex-review": 115129, - "gbrain/gstack-plan-eng-review": 134168, - "hermes/gstack-autoplan": 129905, - "hermes/gstack-design-review": 132949, - "hermes/gstack-land-and-deploy": 117269, - "hermes/gstack-plan-design-review": 127964, - "hermes/gstack-plan-devex-review": 115215, - "hermes/gstack-plan-eng-review": 134253, - "kiro/gstack-autoplan": 129040, - "kiro/gstack-design-consultation": 107064, - "kiro/gstack-design-review": 142321, - "kiro/gstack-land-and-deploy": 116533, - "kiro/gstack-plan-design-review": 138808, - "kiro/gstack-plan-devex-review": 134431, - "kiro/gstack-plan-eng-review": 151286, - "kiro/gstack-review": 140562, - "openclaw/gstack-autoplan": 129520, - "openclaw/gstack-design-review": 131647, - "openclaw/gstack-land-and-deploy": 116757, - "openclaw/gstack-plan-design-review": 126706, - "openclaw/gstack-plan-devex-review": 113968, - "openclaw/gstack-plan-eng-review": 132565, - "opencode/gstack-autoplan": 131640, - "opencode/gstack-design-consultation": 109357, - "opencode/gstack-design-review": 144705, - "opencode/gstack-land-and-deploy": 118762, - "opencode/gstack-office-hours": 100298, - "opencode/gstack-plan-design-review": 140738, - "opencode/gstack-plan-devex-review": 136812, - "opencode/gstack-plan-eng-review": 153188, - "opencode/gstack-review": 142985, - "slate/gstack-autoplan": 129159, - "slate/gstack-design-consultation": 107143, - "slate/gstack-design-review": 142414, - "slate/gstack-land-and-deploy": 116589, - "slate/gstack-plan-design-review": 138888, - "slate/gstack-plan-devex-review": 134511, - "slate/gstack-plan-eng-review": 151361, - "slate/gstack-review": 140656 + "agy/gstack-autoplan": 130501, + "agy/gstack-design-consultation": 108181, + "agy/gstack-design-review": 143525, + "agy/gstack-land-and-deploy": 117719, + "agy/gstack-plan-design-review": 140010, + "agy/gstack-plan-devex-review": 135757, + "agy/gstack-plan-eng-review": 152579, + "agy/gstack-review": 124215, + "claude/design-review": 136528, + "codex/gstack-autoplan": 130625, + "codex/gstack-design-consultation": 109449, + "codex/gstack-design-review": 145025, + "codex/gstack-land-and-deploy": 122269, + "codex/gstack-office-hours": 102305, + "codex/gstack-plan-design-review": 142463, + "codex/gstack-plan-devex-review": 138646, + "codex/gstack-plan-eng-review": 155125, + "codex/gstack-review": 125119, + "copilot/gstack-autoplan": 131634, + "copilot/gstack-codex": 100232, + "copilot/gstack-design-consultation": 109533, + "copilot/gstack-design-review": 144830, + "copilot/gstack-land-and-deploy": 118974, + "copilot/gstack-office-hours": 100461, + "copilot/gstack-plan-design-review": 140881, + "copilot/gstack-plan-devex-review": 136909, + "copilot/gstack-plan-eng-review": 153304, + "copilot/gstack-review": 125486, + "cursor/gstack-autoplan": 129275, + "cursor/gstack-design-consultation": 107219, + "cursor/gstack-design-review": 142504, + "cursor/gstack-land-and-deploy": 116642, + "cursor/gstack-plan-design-review": 138965, + "cursor/gstack-plan-devex-review": 134588, + "cursor/gstack-plan-eng-review": 151433, + "cursor/gstack-review": 140747, + "factory/gstack-autoplan": 131559, + "factory/gstack-codex": 100652, + "factory/gstack-design-consultation": 108667, + "factory/gstack-design-review": 144294, + "factory/gstack-land-and-deploy": 120814, + "factory/gstack-office-hours": 101340, + "factory/gstack-plan-design-review": 141746, + "factory/gstack-plan-devex-review": 137957, + "factory/gstack-plan-eng-review": 154547, + "factory/gstack-review": 144526, + "gbrain/gstack-autoplan": 129812, + "gbrain/gstack-design-review": 132839, + "gbrain/gstack-land-and-deploy": 117164, + "gbrain/gstack-plan-design-review": 127852, + "gbrain/gstack-plan-devex-review": 115126, + "gbrain/gstack-plan-eng-review": 134165, + "hermes/gstack-autoplan": 129902, + "hermes/gstack-design-review": 132946, + "hermes/gstack-land-and-deploy": 117266, + "hermes/gstack-plan-design-review": 127961, + "hermes/gstack-plan-devex-review": 115212, + "hermes/gstack-plan-eng-review": 134250, + "kiro/gstack-autoplan": 129037, + "kiro/gstack-design-consultation": 107061, + "kiro/gstack-design-review": 142318, + "kiro/gstack-land-and-deploy": 116530, + "kiro/gstack-plan-design-review": 138805, + "kiro/gstack-plan-devex-review": 134428, + "kiro/gstack-plan-eng-review": 151283, + "kiro/gstack-review": 140559, + "openclaw/gstack-autoplan": 129517, + "openclaw/gstack-design-review": 131644, + "openclaw/gstack-land-and-deploy": 116754, + "openclaw/gstack-plan-design-review": 126703, + "openclaw/gstack-plan-devex-review": 113965, + "openclaw/gstack-plan-eng-review": 132562, + "opencode/gstack-autoplan": 131637, + "opencode/gstack-design-consultation": 109354, + "opencode/gstack-design-review": 144702, + "opencode/gstack-land-and-deploy": 118759, + "opencode/gstack-office-hours": 100295, + "opencode/gstack-plan-design-review": 140735, + "opencode/gstack-plan-devex-review": 136809, + "opencode/gstack-plan-eng-review": 153185, + "opencode/gstack-review": 142982, + "slate/gstack-autoplan": 129156, + "slate/gstack-design-consultation": 107140, + "slate/gstack-design-review": 142411, + "slate/gstack-land-and-deploy": 116586, + "slate/gstack-plan-design-review": 138885, + "slate/gstack-plan-devex-review": 134508, + "slate/gstack-plan-eng-review": 151358, + "slate/gstack-review": 140653 } } diff --git a/test/model-overlays.test.ts b/test/model-overlays.test.ts index ce7fc4b23..ad321fb70 100644 --- a/test/model-overlays.test.ts +++ b/test/model-overlays.test.ts @@ -119,7 +119,8 @@ describe('GPT-5.6 Sol model profile', () => { const generic = generateModelOverlay(ctx('gpt')); const completeness = generateCompletenessSection(ctx('gpt')); expect(generic).toContain('make your best judgment and proceed'); - expect(completeness).toContain('the complete thing is the goal'); + expect(completeness).toContain('Complete coverage, minimal code.'); + expect(completeness).toContain('prefer the smaller diff'); }); test('terse mode still suppresses the completeness section for Sol', () => {