fix: clean codex review output and surface claude subagent progress - #417
Merged
Conversation
two upstream behavior changes broke review-phase output visibility. codex 0.144 echoes loaded skill and tool markdown onto the same stderr stream as its reasoning summaries, and skill headers like `**Detect stale base:**` are shape-identical to real reasoning titles, so the stderr bold filter flooded the progress log with recited skill text. Reasoning now comes from the rollout file's typed `reasoning` records, which never carry that echo, instead of the stderr stream. Stderr forwards only the first-run model/sandbox/effort banner. newer Claude Code streams Task subagent activity as `system/task_*` events with no text block, so the parser dropped them and a multi-agent review phase went silent for the whole agent run. `parseStream` now surfaces the `task_started` title (unthrottled) and `task_progress` steps (throttled to one per 10s) as ` <description>` heartbeats. No agent name (stock config runs every review agent as `general-purpose`) and no tool name (the description already names the action). The model's own text is never throttled.
- [minor] [codex.go] remove stale "also deduplicates lines" comment left when the dedup logic was dropped - [minor] [codex.go] formatReasoningSummary forwards only the first line of each summary_text, so a multiline title+paragraph from another codex version can't reintroduce the reasoning flood
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.
two upstream behavior changes affected ralphex's review-phase output visibility. This fixes both in the executor parsers.
codex review flood. The codex CLI (0.144) echoes loaded skill and tool markdown onto the same stderr stream as its reasoning summaries, and skill headers like
**Detect stale base:**are shape-identical to genuine reasoning titles, so the stderr bold filter flooded the progress log with recited skill text, hundreds of lines per review. Reasoning now comes from the codex rollout file's typedreasoningrecords, which never carry that echo, instead of the stderr stream. TheshouldDisplayfilter forwards only the first-run model/sandbox/effort banner, andformatReasoningSummaryforwards only the first line of eachsummary_text, so a multiline title plus paragraph from another codex version can't reintroduce the flood.silent claude review phase. Newer Claude Code streams Task subagent activity as
system/task_*events with no text block, so the parser dropped them and a multi-agent review phase went silent for the whole agent run (about 11 minutes in one case). The fix inparseStreamsurfaces thetask_startedtitle (unthrottled) andtask_progresssteps (throttled to one per 10s) as<description>heartbeat lines. No agent name (stock config runs every review agent asgeneral-purpose) and no tool name, the description already names the action. These lines go to the output handler only, never into the accumulated text that drives signal and rate-limit pattern detection.both root causes were found by capturing the real upstream output in a controlled terminal session and reading the raw claude stream-json and codex stderr/rollout, not by guessing. Validated end to end against a toy project.