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', () => {