From 227ec905a79545dee8869ce60049f6fee44325ed Mon Sep 17 00:00:00 2001 From: garrytan Date: Sat, 3 Oct 2026 01:10:42 +0000 Subject: [PATCH] test(W7c): loosen auq-format-always-loaded per-skill rule pins W7c conversion (t01 F10-F12; W7c list item auq-format-always-loaded:61-72). The MANDATORY format list (machine-read Recommendation:/(recommended) and the AUQ format labels, W7 keep list) is unchanged. Removed assertion groups (invariant -> remaining protection): - plan-ceo-review /Do NOT batch/i (t01 F10): one decision per question -> kept free: /One decision unit = one AskUserQuestion call/i in the same rule list. - plan-eng-review full-sentence regexes 'Send `AskUserQuestion({ questions: [currentDecision] })` only after the pending-record checkpoint passes. Send one question object for one choice; other IDs wait' and 'If you discover another independent choice, separate it and rebuild this comparison before saving or sending the question' (t01 F11): one question object per independent choice survives the carve -> kept free: /one\s+question object for one choice/i and /independently selectable changes separate IDs/i; the checkpoint-before-send order stays pinned in eng-review-routing.test.ts. - codex /Synthesis recommendation \(REQUIRED\)/i (t01 F12, caps marker): codex keeps its synthesis rule always loaded -> kept free: /Synthesis recommendation/i and the machine format /Recommendation\s*:\s*\s* because/i. Mutation pass (scratch worktree, generated SKILL.md and sections): 8/8 as expected; removing Recommendation: because, the synthesis rule, or the CEO/eng/design decision-unit rules goes red; dropping (REQUIRED) and rewording the two dropped eng sentences stays green. Log: .context/mutation-auq-format-always-loaded.md. --- test/auq-format-always-loaded.test.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/test/auq-format-always-loaded.test.ts b/test/auq-format-always-loaded.test.ts index c419df162..51c46f1cc 100644 --- a/test/auq-format-always-loaded.test.ts +++ b/test/auq-format-always-loaded.test.ts @@ -58,20 +58,16 @@ const MANDATORY: Array<{ name: string; re: RegExp }> = [ * these into a section (they fire only once the section is loaded), but they * must never be DROPPED. Asserted against the skeleton+sections union. */ const PER_SKILL_RULES: Record = { - 'plan-ceo-review': [/One decision unit = one AskUserQuestion call/i, /Do NOT batch/i], - 'plan-eng-review': [ - /Send `AskUserQuestion\(\{ questions: \[currentDecision\] \}\)` only after the pending-record checkpoint passes\.\s+Send one\s+question object for one choice; other IDs wait/i, - /Give independently selectable changes separate IDs/i, - /If you discover another independent choice,\s+separate it and\s+rebuild this comparison before saving or sending the question/i, - ], + 'plan-ceo-review': [/One decision unit = one AskUserQuestion call/i], + 'plan-eng-review': [/one\s+question object for one choice/i, /independently selectable changes separate IDs/i], 'plan-design-review': [/One issue = one AskUserQuestion call/i], 'plan-devex-review': [ /One new or reopened decision = one AskUserQuestion call/i, /Never combine independent decisions, including in separate question tabs/i, ], - // /codex emits its recommendation as prose; the instruction MUST stay in the + // /codex emits its recommendation as prose; the instruction must stay in the // always-loaded skeleton because codex has no on-demand section. - codex: [/Synthesis recommendation \(REQUIRED\)/i, /Recommendation\s*:\s*\s*because/i], + codex: [/Synthesis recommendation/i, /Recommendation\s*:\s*\s*because/i], }; /** Discover every repo-root skill dir that ships a generated SKILL.md. */