fix: surface cron errors for empty isolated agent replies#100229
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 18, 2026, 5:30 AM ET / 09:30 UTC. Summary PR surface: Source +36, Tests +274. Total +310 across 2 files. Reproducibility: yes. The source path is clear: a delivery-requested isolated cron completion with no final payload can otherwise proceed into normal delivery without content, and the focused regression suite models that path. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: Keep the guard at cron finalization, preserve only explicitly committed terminal outcomes as successful, and land after the assigned owner confirms that policy and the exact merge head completes required validation. Do we have a high-confidence way to reproduce the issue? Yes. The source path is clear: a delivery-requested isolated cron completion with no final payload can otherwise proceed into normal delivery without content, and the focused regression suite models that path. Is this the best way to solve the issue? Yes, conditionally. Cron finalization is the narrow owner boundary because it knows delivery was requested, but maintainers must confirm the branch’s listed side-effect-only success exemptions. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 5057fd9e597e. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +36, Tests +274. Total +310 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (8 earlier review cycles)
|
|
The core of this is right. A completed embedded run that produces no deliverable payload and no error signal really does fall through The guard conditions hold up. Two things before merge:
Minor: the PR body's Evidence references |
Thanks for the review,I will take a look about the two things. |
8b9a18d to
62ac1fd
Compare
62ac1fd to
485726e
Compare
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper re-review |
|
Merged via squash.
|
…00229) * fix(cron): fail empty isolated agent completions * fix: surface cron errors for empty isolated agent replies * fix(cron): preserve intentional terminal progress --------- Co-authored-by: Peter Steinberger <[email protected]> Co-authored-by: Peter Steinberger <[email protected]>
Related: #100162
What Problem This Solves
Fixes an issue where cron-driven embedded agent runs could appear completed even when the final assistant turn produced no deliverable reply, leaving the configured channel without a response or failure signal. This complements the interactive empty-reply fix that already closed #100162.
Why This Change Was Made
Cron finalization now treats a delivery-requested embedded run with no final payload or synthesized text as a cron run error instead of passing it into the silent delivery path. The guard preserves explicit silent replies, committed message-tool deliveries, message-tool/source deliveries that already satisfied the target, and committed terminal progress such as deterministic approval prompts, accepted child sessions, or successful cron adds. Bare message-tool attempt flags without committed evidence still become errors.
User Impact
Operators and channel users now get an observable cron failure state for empty final assistant completions instead of a dark lane where the job is marked complete but no reply reaches the destination. Intentional silence and already-committed side effects remain successful.
Evidence
NO_REPLY, committed message-tool text, deterministic approval prompts, accepted child-session handoffs, and successful cron adds.status=error,delivery=not-delivered, and one failure notification instead of a normal empty success reply.claude-cli/opus. The forced run completed through the cron path and delivered its QA marker.pnpm tsgo:corepassed.pnpm tsgo:core:testpassed.