fix: allow silent cron empty replies#81374
Conversation
|
Thanks for the context here. I swept through the related work, and this is now duplicate or superseded. Close as superseded: the newer open canonical PR covers both cron runner handoffs with stronger proof, while this branch is narrower, currently conflicting, and does not remain the best landing path. Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Canonical path: Use #95725 as the canonical executor-boundary fix and keep the related issues open until one chosen policy lands. So I’m closing this here and keeping the remaining discussion on #95725. Review detailsBest possible solution: Use #95725 as the canonical executor-boundary fix and keep the related issues open until one chosen policy lands. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection shows current main still routes cron runs to CLI and embedded runners without the silent-empty opt-in, while both runner contracts require the caller flag for empty assistant output. Is this the best way to solve the issue? No. Passing the flag at the cron executor boundary is the right layer, but this branch is narrower and weaker than the newer candidate that covers both current runner paths with better proof. Security review: Security review cleared: The diff forwards an existing internal boolean and adds tests; it does not touch dependencies, CI, secrets, install scripts, package resolution, or auth boundaries. AGENTS.md: found and applied where relevant. What I checked:
Likely related people:
Codex review notes: model internal, reasoning high; reviewed against 9d68f877ac3e. |
f657702 to
9eadb90
Compare
9eadb90 to
c9f6ffe
Compare
|
This pull request has been automatically marked as stale due to inactivity. |
Summary:
Fixes #79069.
Real behavior proof
delivery.mode="none"that produce no visible assistant text should complete as silent success instead of being treated as an incomplete assistant turn.codex/fix-cron-silent-delivery, running the patched cron delivery/executor source.node --import tsx --input-type=module -e "import { resolveCronDeliveryPlan } from './src/cron/delivery-plan.ts'; const job={id:'job-1',name:'silent delivery',enabled:true,createdAtMs:0,updatedAtMs:0,schedule:{kind:'every',everyMs:60000},sessionTarget:'isolated',wakeMode:'now',payload:{kind:'agentTurn',message:'do it'},delivery:{mode:'none'},state:{}}; const plan=resolveCronDeliveryPlan(job); console.log(JSON.stringify({deliveryMode:plan.mode, deliveryRequested:plan.requested, allowEmptyAssistantReplyAsSilent:plan.mode==='none'}));"delivery.mode="none"to the silent path, and the patched executor now forwards that resolved silent flag into the embedded run instead of dropping it.Verification: