From d2f53fcb9caea8bdccb7208130f23143e2582c6c Mon Sep 17 00:00:00 2001 From: garrytan Date: Sat, 3 Oct 2026 01:21:02 +0000 Subject: [PATCH] test(W7h): retire CEO TODO-menu prose pins from plan-review-calibration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit W7h retirement (t04 F11; W7c list). The calibration corpus and buildPlanReviewDecisionPrompt never read this CEO prose; the AUQ format tokens (consumed by plan-tune and judges) and the calibration-harness outcome tests are unchanged. Retirement card: - test: plan-review-calibration.test.ts, the six CEO TODO-menu pins ('Only unanswered TODO proposals reach this menu', 'Do not ask again about an item already deferred, skipped or kept', 'carry its actual answer and destination forward', 'Resolve each remaining proposal through all four steps of 0D, using the menu below', 'Never batch TODOs — one per question'). - detects: edits to plan-ceo-review TODO-menu prose. - non_test_callers: none (test-only reads of the template). - search_command: grep -rn "Never batch TODOs\|Only unanswered TODO" test/ - stronger_proof / replacement: skill-ceo-section-ordering.test.ts 'TODOS.md updates' slice keeps /i meaning checks for unanswered-only, no re-asking and one TODO per question (CEO invariants are periodic-only under the W7c gate, so they keep a free check); 'route through 0D' stays covered by that file's 0D route checks. - history: 636175d v1.87.6.0. - validation: bun test test/plan-review-calibration.test.ts. Controls (scratch worktree): replacing 'Never batch TODOs — one per question' or deleting 'Only unanswered TODO proposals reach this menu' turns skill-ceo-section-ordering.test.ts red (2/2); in this file, removing an AUQ format token goes red and rewording the retired TODO sentence stays green (2/2). Log: .context/mutation-plan-review-calibration.md. --- test/plan-review-calibration.test.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/test/plan-review-calibration.test.ts b/test/plan-review-calibration.test.ts index ba5447537..e151b1a6d 100644 --- a/test/plan-review-calibration.test.ts +++ b/test/plan-review-calibration.test.ts @@ -9,14 +9,7 @@ const ROOT = path.resolve(import.meta.dir, '..'); test('calibration briefs preserve source-required structure and actual choices without phase/qid reliance', () => { const format = fs.readFileSync(path.join(ROOT, 'scripts/resolvers/preamble/generate-ask-user-format.ts'), 'utf8'); const split = fs.readFileSync(path.join(ROOT, 'docs/askuserquestion-split.md'), 'utf8'); - const ceo = fs.readFileSync(path.join(ROOT, 'plan-ceo-review/sections/review-sections.md.tmpl'), 'utf8'); for (const token of ['Project/branch/task:', 'ELI10:', 'Stakes if we pick wrong:', 'Recommendation:', 'Pros / cons:', 'Net:']) expect(format).toContain(token); - const todo = ceo.slice(ceo.indexOf('Only unanswered TODO proposals'), ceo.indexOf('For each TODO, describe:')).replace(/\s+/g, ' '); - expect(todo).toContain('Only unanswered TODO proposals reach this menu'); - expect(todo).toContain('Do not ask again about an item already deferred, skipped or kept'); - expect(todo).toContain('carry its actual answer and destination forward'); - expect(todo).toContain('Resolve each remaining proposal through all four steps of 0D, using the menu below'); - expect(todo).toContain('Never batch TODOs — one per question'); for (const token of ['Include', 'Defer', 'Cut', 'Hold']) expect(split).toContain(token); const corpus = planDecisionCalibrations(); expect(corpus).toHaveLength(4);