Repository navigation
Conversation
garrytan
force-pushed
the
capy/fixwave-3
branch
from
October 15, 2026 22:01
854efb5 to
c11a187
Compare
garrytan
force-pushed
the
capy/fixwave-4
branch
2 times, most recently
from
October 15, 2026 23:27
459321d to
0183414
Compare
garrytan
force-pushed
the
capy/fixwave-3
branch
from
October 16, 2026 00:07
283da3f to
c54b5e1
Compare
garrytan
force-pushed
the
capy/fixwave-4
branch
from
October 16, 2026 00:07
0183414 to
8441fd6
Compare
garrytan
force-pushed
the
capy/fixwave-3
branch
from
October 16, 2026 00:21
c54b5e1 to
7fe9dff
Compare
garrytan
force-pushed
the
capy/fixwave-4
branch
from
October 16, 2026 00:21
8441fd6 to
acc9e47
Compare
garrytan
force-pushed
the
capy/fixwave-3
branch
from
October 16, 2026 00:26
7fe9dff to
ce27af4
Compare
garrytan
force-pushed
the
capy/fixwave-4
branch
from
October 16, 2026 00:26
acc9e47 to
241de85
Compare
…3182) Claude Code 2.1.277 removed TaskOutput, so the plan-review native fallback's preflight always failed and users without the Codex CLI never got a second voice. The fallback now uses primitives the host still enforces: a background `sleep 300` Bash timer (its exit re-invokes the parent; the 2.1.300 sleep block applies only to foreground commands), a background Plan dispatch whose completion arrives as a <task-notification>, and TaskStop for whichever task loses. Only a matching completed notification that beats the timer counts; interim ("is waiting on its own background work"), turn-limit, foreground and late results get no credit. The "[Subagent hand-back]" header (2.1.277) is treated as framing. The unavailable line now names its cause and fix, ends with OUTSIDE_VOICE_UNAVAILABLE (new result code + troubleshooting entry), and the review-log row carries unavailable_reason. The bounded-wait prose was tightened so plan-ceo-review and plan-eng-review stay under their existing size ceilings (no ratchet raise for this item). Intentional pin change: test/run-in-background-guidance.test.ts hasBoundedOutsideVoiceWait and the dispatch-contract cases now pin the timer/notification/TaskStop contract instead of TaskOutput's envelope. bin/gstack-doctor-components.sh is regenerated from lib/result-codes.ts. Reported by HuellintonMota in #3182. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
/plan-ceo-review saves its scope decisions under the state root's ceo-plans/, but no plan review can find them: only /design-html reads that directory, newest file first. This helper is the CEO-plan sibling of gstack-design-doc-find, so /plan-eng-review can call one command instead of a glob in prose. It prints the newest top-level plan whose "Branch:" header names the branch, compared the way gstack-slug writes BRANCH (feat/x matches feat-x), else the newest plan, else nothing. Subdirectories are not read. A usage error exits 2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/plan-eng-review never looked in ceo-plans/, so an eng review after /plan-ceo-review ran without the scope that review accepted, deferred or skipped. capy-ai closed #414 asking for this focused fix, and TODOS.md scopes it as a gstack-ceo-plan-find sibling of gstack-design-doc-find. The Design Doc Check now prints "CEO plan found: <path>" or "No CEO plan found" after the design doc line, and the prose says what to read the plan for. The data-not-instructions rule names the CEO plan too, since another agent may have written it. Only plan-eng-review changes: the shared {{DESIGN_DOC_DISCOVERY}} block and the branch-scoped review log are untouched. Reported by @chancheuklap in #280. main left plan-eng-review 4 bytes under its parity cap, so the +325 bytes raise maxSizeRatio to the measured 1.2196, noted the way earlier growth was. Fixes #280 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#280) Review changes on top of #3159 (szsunyuan / y$un_): - gstack-ceo-plan-find keeps stdout a bare path or empty; when it falls back to another branch's plan it prints one stderr line, "CEO plan found (from branch <b>, not <current>): <path>", with control characters stripped from the plan header ("unknown" when it has none). - The Design Doc Check tells an interactive reviewer to ask before using such a plan, and a spawned session to use it and quote the disclosure. - The Design Doc Check prose is tightened so plan-eng-review fits the owner-approved 1.2196 ceiling (measured 151,950 / 124,597 = 1.2195). Reviewer tests: test/ceo-plan-find-cross-branch.test.ts (5 of 7 fail on the Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> #3159 head). The design-doc finder's matching disclosure stays deferred.
) detectSectionReads trims the longest suffix/prefix overlap between consecutive Bash outputs. Two chunks that abut exactly (tail -c +N after a chunk ending at N-1) can share an edge byte by chance; the trim then drops a real byte and a fully printed section reads as incomplete. #3182's review-sections edit moved plan-ceo-review's 66,999-byte boundary onto "cur|rent", which turned the existing byte-range test red. The detector now also checks the plain concatenation; a gap still refuses. Detector/fixture defect, not a product change. New regression case in test/section-capture-native-tools.test.ts fails without the fix. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan
force-pushed
the
capy/fixwave-3
branch
from
October 16, 2026 00:31
ce27af4 to
e970f08
Compare
garrytan
force-pushed
the
capy/fixwave-4
branch
from
October 16, 2026 00:31
241de85 to
35d6669
Compare
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix wave 2026-10-15, layer 4: native outside voice without TaskOutput (#3182) and the CEO plan finder (#3159, #280)
This layer stacks on
capy/fixwave-3(Lane D). It has no VERSION or CHANGELOG stamp; the release layer adds those.Item 17 (#3182): bound the native outside voice without TaskOutput
On Claude Code 2.1.277 and later, plan reviews lost their native second opinion when Codex was missing or failed, because the fallback depended on
TaskOutput. A free spike against the Claude Code docs and the published 2.1.300 binary showed a deadline can still be enforced:<task-notification>(task-id, status, summary, result). Its summary marks interim results ("is waiting on its own background work") and partial ones (turn limit).sleep 300(run_in_background: true,timeout: 300000) works as a host timer.The fallback now starts the background timer, dispatches the Plan agent in the background, waits for notifications, and stops whichever task loses with TaskStop. Only a matching completed notification that beats the timer counts. Late, partial, interim and foreground results get no credit.
If the bounded fallback can't run (for example
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1or bare mode), the review printsOutside voice unavailable: <cause>. Fix: <fix>. … (OUTSIDE_VOICE_UNAVAILABLE). That's a new result code with adocs/troubleshooting.mdentry (#outside-voice-unavailable). Review-log rows for unavailable outcomes carryunavailable_reason.bin/gstack-doctor-components.shis regenerated.The prose was tightened so the change shrinks the plan-eng-review union by 17 bytes and adds 4 to plan-ceo-review, which keeps both under their caps.
Tests:
test/outside-voice-native-deadline.test.tsis new. It fails 4/4 on the base and passes on this branch.test/run-in-background-guidance.test.tspins now check the timer, notification and TaskStop contract instead of TaskOutput's output format.test/helpers/auq-sdk-capture.tsdetectSectionReadsfix (separate commit): two chunks that touch exactly and share an edge byte by chance lost a real byte when overlap was trimmed. A new case intest/section-capture-native-tools.test.tsfails without the fix.Item 14 (#3159, #280):
/plan-eng-reviewreads the branch's CEO planThe two commits from #3159 are cherry-picked with their original authorship (thanks @szsunyuan):
bin/gstack-ceo-plan-findlocates the CEO plan for a branch.Follow-up changes on top:
CEO plan found (from branch <b>, not <current>): <path>. Control characters are stripped, and the branch readsunknownwhen the plan has no Branch line.test/ceo-plan-find-cross-branch.test.tsis new. It fails 5 of 7 on the fix(plan-eng-review): read the CEO plan in the Design Doc Check (#280) #3159 head; all 7 pass here.Behavior changes
OUTSIDE_VOICE_UNAVAILABLEwith the cause and the fix./plan-eng-reviewreads the branch's CEO plan. If the plan comes from another branch, it says so, and interactive sessions ask first.Validation
Focused tests and ratchets pass on this branch: typecheck, typecheck:test (no new diagnostics), the spawnSync tripwire, module size, parity, context budget, gen-skill-docs freshness, and the item tests above. The paid gate runs once on the wave PR.
Not verified
<task-notification>comes from the binary's prompt text, not from a captured notification.