From 88e3cc026b6f0213ad109411ed57c2960729fd16 Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 26 Oct 2026 00:56:26 +0000 Subject: [PATCH 1/6] fix: pre-landing review fixes (CHANGELOG says 3 characters shorter; model-overlays guards the coverage half) The completeness section shrank by 3 characters (5 bytes), matching the 89 pins lowered by 3. The default-copy test pinned only the minimal-code half; an expectMentions check now fails if the full-coverage or never-excuses-a-gap clause is dropped. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 2 +- test/model-overlays.test.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index acbf63b84..830c6c00d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ **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. +- **`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 3 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". diff --git a/test/model-overlays.test.ts b/test/model-overlays.test.ts index ad321fb70..d4bde32c9 100644 --- a/test/model-overlays.test.ts +++ b/test/model-overlays.test.ts @@ -14,6 +14,7 @@ import { CLAUDE_JUDGE_EVAL_MODEL } from '../lib/eval-model'; import { readOverlay } from '../scripts/resolvers/model-overlay'; import { generateCompletenessSection } from '../scripts/resolvers/preamble/generate-completeness-section'; import { generateSetupCommand } from '../scripts/resolvers/utility'; +import { expectMentions } from './helpers/prompt-structure'; describe('model-overlay-fable-5', () => { function makeCtx(model: string): TemplateContext { @@ -121,6 +122,7 @@ describe('GPT-5.6 Sol model profile', () => { expect(generic).toContain('make your best judgment and proceed'); expect(completeness).toContain('Complete coverage, minimal code.'); expect(completeness).toContain('prefer the smaller diff'); + expectMentions(completeness, [['full coverage', 'requirement', 'error paths'], ['never', 'gap']], 'default completeness section'); }); test('terse mode still suppresses the completeness section for Sol', () => { From 44eacaf532f3fa908476c7f089023dea9785035f Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 26 Oct 2026 01:06:39 +0000 Subject: [PATCH 2/6] fix: pre-landing review fixes (model-overlays binds smaller diff to equal coverage) The default-copy check now also fails if 'on equal coverage' is dropped from the smaller-diff rule (which would tell models to prefer the smaller diff unconditionally) or if the no-impossible-state-checks clause is removed. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- test/model-overlays.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/model-overlays.test.ts b/test/model-overlays.test.ts index d4bde32c9..e1caa4bb2 100644 --- a/test/model-overlays.test.ts +++ b/test/model-overlays.test.ts @@ -122,7 +122,7 @@ describe('GPT-5.6 Sol model profile', () => { expect(generic).toContain('make your best judgment and proceed'); expect(completeness).toContain('Complete coverage, minimal code.'); expect(completeness).toContain('prefer the smaller diff'); - expectMentions(completeness, [['full coverage', 'requirement', 'error paths'], ['never', 'gap']], 'default completeness section'); + expectMentions(completeness, [['full coverage', 'requirement', 'error paths'], ['equal coverage', 'smaller diff'], ['impossible states'], ['never', 'gap']], 'default completeness section'); }); test('terse mode still suppresses the completeness section for Sol', () => { From 732597be2a2062a6eb399c52657938b89b356fc7 Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 26 Oct 2026 01:19:35 +0000 Subject: [PATCH 3/6] docs: CHANGELOG lists the model-overlays coverage checks The [Unreleased] Tests bullet now says the default-copy test checks both halves of the rule (full coverage of the requirement; smaller diff only at equal coverage; no impossible-state checks; never excuses a gap), matching 88e3cc0 and 44eacaf. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 830c6c00d..a73a586a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ - `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/model-overlays.test.ts` asserts the new default wording ("Complete coverage, minimal code.", "prefer the smaller diff") and checks that the section still states full coverage of the requirement, the smaller diff only at equal coverage, no impossible-state checks, and that unrelated scope never excuses a gap. - `test/fixtures/skill-md-size-allowlist.json`: 89 pins lowered by 3 characters each. None raised. ### Gate integrity From 53545c616503984878209869efd79e6b5fe2885b Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 26 Oct 2026 01:31:25 +0000 Subject: [PATCH 4/6] fix: plan-ceo-review and ETHOS say completeness means coverage, not more code Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 5 +++-- ETHOS.md | 6 +++--- plan-ceo-review/SKILL.md | 2 +- plan-ceo-review/SKILL.md.tmpl | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a73a586a1..5bee98459 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,12 +6,13 @@ ### 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 3 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. +- **`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. Section 1's opener now says "When covering the whole requirement costs minutes more than the shortcut, cover it. Every time. Complete means complete coverage, not more code.", and "How They Work Together" says Boil the Ocean means "cover the whole requirement with the least code" instead of "do the complete thing". +- **`plan-ceo-review/SKILL.md.tmpl`**: the Philosophy bullet "COMPLETENESS IS CHEAP: AI makes 70 LOC seconds. Prefer complete ~150 LOC over 90% ~80 LOC. Boil the ocean." becomes "COMPLETENESS IS COVERAGE": cover the whole requirement (tests, edge cases, error paths) rather than a 90% shortcut, add no code beyond it, and choose the smaller diff at equal coverage. plan-ceo-review is under the 100,000-character limit on every host and has no size pin, so it grows about 100 characters without a pin change. - `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") and checks that the section still states full coverage of the requirement, the smaller diff only at equal coverage, no impossible-state checks, and that unrelated scope never excuses a gap. -- `test/fixtures/skill-md-size-allowlist.json`: 89 pins lowered by 3 characters each. None raised. +- `test/fixtures/skill-md-size-allowlist.json`: 89 pins lowered by 3 characters each. None raised; the plan-ceo-review rewording touches no pinned skill. ### 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. diff --git a/ETHOS.md b/ETHOS.md index 5fe8cb42e..aa809bcad 100644 --- a/ETHOS.md +++ b/ETHOS.md @@ -37,8 +37,8 @@ The last 10% of completeness that teams used to skip? It costs seconds now. "Don't boil the ocean" was the right advice when engineering time was the bottleneck. That era is over. AI-assisted coding makes the marginal cost of completeness near-zero, so the old caution has quietly turned into an excuse. -When the complete implementation costs minutes more than the shortcut — do the -complete thing. Every time. +When covering the whole requirement costs minutes more than the shortcut, cover +it. Every time. Complete means complete coverage, not more code. **Ocean, lakes first:** The ocean is the destination — 100% test coverage for a module, full feature implementation, all edge cases, complete error paths. You @@ -179,7 +179,7 @@ against, and gstack's countermeasure for each, lives in ## How They Work Together -Boil the Ocean says: **do the complete thing.** +Boil the Ocean says: **cover the whole requirement with the least code.** Search Before Building says: **know what exists before you decide what to build.** Honest Work says: **the proof is the work, and a report is a claim until re-executed.** diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index 034e8e934..2fe0a9c6f 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -447,7 +447,7 @@ Make this plan extraordinary. Match posture: * SELECTIVE EXPANSION: Harden current scope; neutrally offer each expansion's opportunity, effort and risk. Accepted items govern later sections; rejected ones go to "NOT in scope." * HOLD SCOPE: Preserve scope; trace failures, edge cases, error paths, tests and observability. * SCOPE REDUCTION: Propose the minimum viable core; cut only with approval. -* COMPLETENESS IS CHEAP: AI makes 70 LOC seconds. Prefer complete ~150 LOC over 90% ~80 LOC. Boil the ocean. +* COMPLETENESS IS COVERAGE: Prefer the approach that covers the whole requirement (tests, edge cases, error paths) over a 90% shortcut, add no code beyond the requirement, and at equal coverage choose the smaller diff. Approval is required for each scope change. Raise concerns in Step 0, then commit: no arguing for less in EXPANSION, silent SELECTIVE additions/cuts, or scope restored to REDUCTION. Review only. Do not change code or implement. diff --git a/plan-ceo-review/SKILL.md.tmpl b/plan-ceo-review/SKILL.md.tmpl index a40d8531f..256c2eb96 100644 --- a/plan-ceo-review/SKILL.md.tmpl +++ b/plan-ceo-review/SKILL.md.tmpl @@ -64,7 +64,7 @@ Make this plan extraordinary. Match posture: * SELECTIVE EXPANSION: Harden current scope; neutrally offer each expansion's opportunity, effort and risk. Accepted items govern later sections; rejected ones go to "NOT in scope." * HOLD SCOPE: Preserve scope; trace failures, edge cases, error paths, tests and observability. * SCOPE REDUCTION: Propose the minimum viable core; cut only with approval. -* COMPLETENESS IS CHEAP: AI makes 70 LOC seconds. Prefer complete ~150 LOC over 90% ~80 LOC. Boil the ocean. +* COMPLETENESS IS COVERAGE: Prefer the approach that covers the whole requirement (tests, edge cases, error paths) over a 90% shortcut, add no code beyond the requirement, and at equal coverage choose the smaller diff. Approval is required for each scope change. Raise concerns in Step 0, then commit: no arguing for less in EXPANSION, silent SELECTIVE additions/cuts, or scope restored to REDUCTION. Review only. Do not change code or implement. From b8fd2850026a8331c07ca76950ef42cf43b09b09 Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 26 Oct 2026 01:43:58 +0000 Subject: [PATCH 5/6] fix: pre-landing review fixes (CEO bullet bounds code by accepted scope; tests bind each completeness rule) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 5 +++-- plan-ceo-review/SKILL.md | 2 +- plan-ceo-review/SKILL.md.tmpl | 2 +- test/ceo-workflow-clarity.test.ts | 10 +++++++++- test/model-overlays.test.ts | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bee98459..e7287ffa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,12 @@ ### 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 3 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. Section 1's opener now says "When covering the whole requirement costs minutes more than the shortcut, cover it. Every time. Complete means complete coverage, not more code.", and "How They Work Together" says Boil the Ocean means "cover the whole requirement with the least code" instead of "do the complete thing". -- **`plan-ceo-review/SKILL.md.tmpl`**: the Philosophy bullet "COMPLETENESS IS CHEAP: AI makes 70 LOC seconds. Prefer complete ~150 LOC over 90% ~80 LOC. Boil the ocean." becomes "COMPLETENESS IS COVERAGE": cover the whole requirement (tests, edge cases, error paths) rather than a 90% shortcut, add no code beyond it, and choose the smaller diff at equal coverage. plan-ceo-review is under the 100,000-character limit on every host and has no size pin, so it grows about 100 characters without a pin change. +- **`plan-ceo-review/SKILL.md.tmpl`**: the Philosophy bullet "COMPLETENESS IS CHEAP: AI makes 70 LOC seconds. Prefer complete ~150 LOC over 90% ~80 LOC. Boil the ocean." becomes "COMPLETENESS IS COVERAGE": cover the whole requirement (tests, edge cases, error paths) rather than a 90% shortcut, add no code beyond the accepted scope (so SCOPE EXPANSION and SELECTIVE EXPANSION still build what the user accepted), and choose the smaller diff at equal coverage. plan-ceo-review is under the 100,000-character limit on every host and has no size pin, so it grows about 100 characters without a pin change. - `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") and checks that the section still states full coverage of the requirement, the smaller diff only at equal coverage, no impossible-state checks, and that unrelated scope never excuses a gap. +- `test/model-overlays.test.ts` asserts the new default wording ("Complete coverage, minimal code.", "prefer the smaller diff") and checks, one sentence per rule, that the section still states full coverage of the requirement with no code beyond it, the smaller diff only at equal coverage, no checks for impossible states, and that unrelated work is separate scope that never excuses a gap. +- `test/ceo-workflow-clarity.test.ts` checks that the plan-ceo-review Philosophy bullet still asks for the whole requirement over a 90% shortcut, no code beyond the accepted scope and the smaller diff at equal coverage, and that "COMPLETENESS IS CHEAP" and "~150 LOC" stay gone. - `test/fixtures/skill-md-size-allowlist.json`: 89 pins lowered by 3 characters each. None raised; the plan-ceo-review rewording touches no pinned skill. ### Gate integrity diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index 2fe0a9c6f..2d708bfa0 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -447,7 +447,7 @@ Make this plan extraordinary. Match posture: * SELECTIVE EXPANSION: Harden current scope; neutrally offer each expansion's opportunity, effort and risk. Accepted items govern later sections; rejected ones go to "NOT in scope." * HOLD SCOPE: Preserve scope; trace failures, edge cases, error paths, tests and observability. * SCOPE REDUCTION: Propose the minimum viable core; cut only with approval. -* COMPLETENESS IS COVERAGE: Prefer the approach that covers the whole requirement (tests, edge cases, error paths) over a 90% shortcut, add no code beyond the requirement, and at equal coverage choose the smaller diff. +* COMPLETENESS IS COVERAGE: Prefer the approach that covers the whole requirement (tests, edge cases, error paths) over a 90% shortcut, add no code beyond the accepted scope, and at equal coverage choose the smaller diff. Approval is required for each scope change. Raise concerns in Step 0, then commit: no arguing for less in EXPANSION, silent SELECTIVE additions/cuts, or scope restored to REDUCTION. Review only. Do not change code or implement. diff --git a/plan-ceo-review/SKILL.md.tmpl b/plan-ceo-review/SKILL.md.tmpl index 256c2eb96..9a8a0f47b 100644 --- a/plan-ceo-review/SKILL.md.tmpl +++ b/plan-ceo-review/SKILL.md.tmpl @@ -64,7 +64,7 @@ Make this plan extraordinary. Match posture: * SELECTIVE EXPANSION: Harden current scope; neutrally offer each expansion's opportunity, effort and risk. Accepted items govern later sections; rejected ones go to "NOT in scope." * HOLD SCOPE: Preserve scope; trace failures, edge cases, error paths, tests and observability. * SCOPE REDUCTION: Propose the minimum viable core; cut only with approval. -* COMPLETENESS IS COVERAGE: Prefer the approach that covers the whole requirement (tests, edge cases, error paths) over a 90% shortcut, add no code beyond the requirement, and at equal coverage choose the smaller diff. +* COMPLETENESS IS COVERAGE: Prefer the approach that covers the whole requirement (tests, edge cases, error paths) over a 90% shortcut, add no code beyond the accepted scope, and at equal coverage choose the smaller diff. Approval is required for each scope change. Raise concerns in Step 0, then commit: no arguing for less in EXPANSION, silent SELECTIVE additions/cuts, or scope restored to REDUCTION. Review only. Do not change code or implement. diff --git a/test/ceo-workflow-clarity.test.ts b/test/ceo-workflow-clarity.test.ts index 51a3530c4..712d12bd2 100644 --- a/test/ceo-workflow-clarity.test.ts +++ b/test/ceo-workflow-clarity.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from 'bun:test'; import { readFileSync } from 'node:fs'; import { resolve } from 'node:path'; import { readWorkflowJudgeInput } from './helpers/workflow-judge-input'; -import { expectMentions } from './helpers/prompt-structure'; +import { expectAbsent, expectMentions } from './helpers/prompt-structure'; const root = resolve(import.meta.dir, '..'); const compact = (text: string) => text.replace(/\s+/g, ' ').trim(); @@ -93,3 +93,11 @@ for (const source of sources) describe(`CEO clarity routing — ${source.label}` expectMentions(opening, [['do not', 'another', 'handoff']], 'opening'); }); }); + +describe('CEO completeness posture', () => { + test('the Philosophy bullet measures completeness in coverage, not code', () => { + const philosophy = readFileSync(resolve(root, 'plan-ceo-review/SKILL.md.tmpl'), 'utf8').split('## Philosophy')[1]!.split('## Prime Directives')[0]!; + expectMentions(philosophy, [['whole requirement', '90% shortcut', 'no code beyond', 'equal coverage', 'smaller diff']], 'philosophy'); + expectAbsent(philosophy, ['COMPLETENESS IS CHEAP', '~150 LOC'], 'philosophy'); + }); +}); diff --git a/test/model-overlays.test.ts b/test/model-overlays.test.ts index e1caa4bb2..e9bfb744e 100644 --- a/test/model-overlays.test.ts +++ b/test/model-overlays.test.ts @@ -122,7 +122,7 @@ describe('GPT-5.6 Sol model profile', () => { expect(generic).toContain('make your best judgment and proceed'); expect(completeness).toContain('Complete coverage, minimal code.'); expect(completeness).toContain('prefer the smaller diff'); - expectMentions(completeness, [['full coverage', 'requirement', 'error paths'], ['equal coverage', 'smaller diff'], ['impossible states'], ['never', 'gap']], 'default completeness section'); + expectMentions(completeness, [['full coverage', 'requirement', 'error paths', 'no code beyond'], ['equal coverage', 'smaller diff'], ['no checks', 'impossible states'], ['unrelated', 'separate scope', 'never', 'gap']], 'default completeness section'); }); test('terse mode still suppresses the completeness section for Sol', () => { From e3effa1352f6c0b08c87b46da01bec0780434f88 Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 26 Oct 2026 01:59:29 +0000 Subject: [PATCH 6/6] docs: CHANGELOG says simplification.md quotes the old rule and CLAUDE.md restates the new one Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7287ffa9..61d870156 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ - **`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 3 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. Section 1's opener now says "When covering the whole requirement costs minutes more than the shortcut, cover it. Every time. Complete means complete coverage, not more code.", and "How They Work Together" says Boil the Ocean means "cover the whole requirement with the least code" instead of "do the complete thing". - **`plan-ceo-review/SKILL.md.tmpl`**: the Philosophy bullet "COMPLETENESS IS CHEAP: AI makes 70 LOC seconds. Prefer complete ~150 LOC over 90% ~80 LOC. Boil the ocean." becomes "COMPLETENESS IS COVERAGE": cover the whole requirement (tests, edge cases, error paths) rather than a 90% shortcut, add no code beyond the accepted scope (so SCOPE EXPANSION and SELECTIVE EXPANSION still build what the user accepted), and choose the smaller diff at equal coverage. plan-ceo-review is under the 100,000-character limit on every host and has no size pin, so it grows about 100 characters without a pin change. -- `review/specialists/simplification.md` and `CLAUDE.md` quote the new house rule instead of "If A is 70 lines more, choose A". +- `review/specialists/simplification.md` quotes the new house rule instead of "If A is 70 lines more, choose A", and `CLAUDE.md` restates it in place of "Completeness is cheap ... the complete thing is the goal". ### Tests - `test/model-overlays.test.ts` asserts the new default wording ("Complete coverage, minimal code.", "prefer the smaller diff") and checks, one sentence per rule, that the section still states full coverage of the requirement with no code beyond it, the smaller diff only at equal coverage, no checks for impossible states, and that unrelated work is separate scope that never excuses a gap.