Skip to content

fix: clean codex review output and surface claude subagent progress - #417

Merged
umputun merged 2 commits into
masterfrom
fix-review-output-streaming
Jul 21, 2026
Merged

fix: clean codex review output and surface claude subagent progress#417
umputun merged 2 commits into
masterfrom
fix-review-output-streaming

Conversation

@umputun

@umputun umputun commented Jul 21, 2026

Copy link
Copy Markdown
Owner

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 typed reasoning records, which never carry that echo, instead of the stderr stream. The shouldDisplay filter forwards only the first-run model/sandbox/effort banner, and formatReasoningSummary forwards only the first line of each summary_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 in parseStream surfaces the task_started title (unthrottled) and task_progress steps (throttled to one per 10s) as <description> heartbeat lines. No agent name (stock config runs every review agent as general-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.

umputun added 2 commits July 21, 2026 02:13
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
Copilot AI review requested due to automatic review settings July 21, 2026 07:37

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@umputun
umputun merged commit b5c8e67 into master Jul 21, 2026
4 checks passed
@umputun
umputun deleted the fix-review-output-streaming branch July 21, 2026 07:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants