From b8ec19055185a10d8c52ca2a980fc16d4677ab87 Mon Sep 17 00:00:00 2001 From: garrytan Date: Sun, 4 Oct 2026 18:14:44 +0000 Subject: [PATCH] A2/auto-decide: the CEO handoff chat repeats the helper's printed line verbatim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude Code 2.1.284 collapses the helper's Bash output ('Ran 1 shell command'), so the 'Auto-decided review mode → …' line reaches the user only through chat. In lane D's auto-decide-preserved corpus every passing capture's chat starts with that line, and the reds paraphrased it ('HOLD SCOPE was auto-selected…', 'Mode decision done…', "I'm defaulting to HOLD SCOPE…"). The template now says verbatim and why. --- plan-ceo-review/SKILL.md.tmpl | 2 +- test/skill-ceo-section-ordering.test.ts | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/plan-ceo-review/SKILL.md.tmpl b/plan-ceo-review/SKILL.md.tmpl index 72628bade..fb618b75b 100644 --- a/plan-ceo-review/SKILL.md.tmpl +++ b/plan-ceo-review/SKILL.md.tmpl @@ -407,7 +407,7 @@ Follow the preamble's session rules; `CONDUCTOR_SESSION: true` changes transport wins. When `QUESTION_TUNING: true`, include ``. These modes differ in kind, not coverage; do NOT score completeness. -4. **Mode handoff:** After selection, before other tools or further questions, run `~/.claude/skills/gstack/bin/gstack-ceo-mode-handoff "" --decisions ""` (add `--auto` for `plan-ceo-review-mode: AUTO_DECIDE`). It prints the matching line below. Then send brief chat beginning with that line, before any other tool call, plan write or section load, and never skip the helper: the mode's application and rationale; every governing approved row's ID, answer reference and accepted scope. Keep rows separate. +4. **Mode handoff:** After selection, before other tools or further questions, run `~/.claude/skills/gstack/bin/gstack-ceo-mode-handoff "" --decisions ""` (add `--auto` for `plan-ceo-review-mode: AUTO_DECIDE`). It prints the matching line below. Then send brief chat beginning with that line, copied verbatim (the terminal collapses tool output, so the user sees it only in your chat; never a paraphrase such as "I've set review mode…"), before any other tool call, plan write or section load, and never skip the helper: the mode's application and rationale; every governing approved row's ID, answer reference and accepted scope. Keep rows separate. - `plan-ceo-review-mode: AUTO_DECIDE`: `Auto-decided review mode → (your preference). Change with /plan-tune. Approved decisions: . .` - Other selections: `Mode: ; approved decisions: . .` diff --git a/test/skill-ceo-section-ordering.test.ts b/test/skill-ceo-section-ordering.test.ts index 31e512378..ad52e0396 100644 --- a/test/skill-ceo-section-ordering.test.ts +++ b/test/skill-ceo-section-ordering.test.ts @@ -137,7 +137,17 @@ test('CEO handoff carries all answered rows instead of one synthetic approach', test('CEO mode handoff chat follows the helper before any other tool call', () => { const selection = between(skeletonSource(), '### 0E. Mode Selection', '### 0F.'); const instruction = selection.slice(selection.indexOf('4. **Mode handoff:**')).split('\n')[0]!; - expect(instruction).toContain('Then send brief chat beginning with that line, before any other tool call, plan write or section load, and never skip the helper'); + expect(instruction).toContain('before any other tool call, plan write or section load, and never skip the helper'); +}); + +// A2/auto-decide: Claude Code 2.1.284 collapses the helper's Bash output ("Ran 1 shell command"), so the +// printed line reaches the user only through chat. Census reds 37176837432, 37179171083 and 37182865432 +// paraphrased it ("HOLD SCOPE was auto-selected…", "Mode decision done…", "I'm defaulting to HOLD SCOPE…"); +// every passing capture's chat starts with "Auto-decided review mode →". +test('CEO mode handoff chat repeats the printed line verbatim because tool output is collapsed', () => { + const selection = between(skeletonSource(), '### 0E. Mode Selection', '### 0F.'); + const instruction = selection.slice(selection.indexOf('4. **Mode handoff:**')).split('\n')[0]!; + expect(instruction).toContain('Then send brief chat beginning with that line, copied verbatim (the terminal collapses tool output, so the user sees it only in your chat; never a paraphrase'); }); // Guards the public handoff instruction, not model compliance or posture detection.