fix(cron): preserve silent NO_REPLY completions#41287
fix(cron): preserve silent NO_REPLY completions#41287bde1 wants to merge 2 commits intoopenclaw:mainfrom
Conversation
Greptile SummaryThis PR fixes a bug where isolated cron jobs would incorrectly retry an intentional
Confidence Score: 4/5
Last reviewed commit: 5bd09eb |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5bd09eb707
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Summary
Describe the problem and fix in 2–5 bullets:
NO_REPLYcompletion as an interim acknowledgement and inject a second "complete the task now" prompt.not-deliveredstate for cron jobs that are supposed to end silently.runEmbeddedPiAgent()now returns a narrowsilentReplysignal for exact finalNO_REPLYcompletions with no payloads, isolated cron skips the retry when that signal is present, and cron delivery reuses the existingNO_REPLYsilent-success path so delivery state stays correct.NO_REPLYtext.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
User-visible / Behavior Changes
NO_REPLYno longer get a forced follow-up prompt.not-delivered.Security Impact (required)
Yes/No) NoYes/No) NoYes/No) NoYes/No) NoYes/No) NoYes, explain risk + mitigation:Repro + Verification
Environment
Steps
NO_REPLY.2026.3.8logic.Your previous response was only an acknowledgement...and continue the run.Expected
NO_REPLYshould end the run silently with no forced retry and no falsenot-deliveredstate.Actual
Evidence
Attach at least one:
Human Verification (required)
What you personally verified (not just CI), and how:
pnpm exec vitest run src/cron/isolated-agent/run.interim-retry.test.ts src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts src/agents/pi-embedded-runner/usage-reporting.test.tspnpm exec vitest run --config vitest.e2e.config.ts src/agents/pi-embedded-runner.e2e.test.tspnpm buildpnpm test(873files passed,7101tests passed,2skipped)git diff --checkNO_REPLYis not classified as silentpnpm checkis still failing on untouched upstream formatting drift inCONTRIBUTING.mdon currentmainReview Conversations
Compatibility / Migration
Yes/No) YesYes/No) NoYes/No) NoFailure Recovery (if this breaks)
5bd09eb70src/agents/pi-embedded-runner/run.ts,src/cron/isolated-agent/run.tsNO_REPLYcron completions being treated as deliveredRisks and Mitigations
List only real risks for this PR. Add/remove entries as needed. If none, write
None.NO_REPLYwhen payload generation already produced nothing.NO_REPLYsilent-delivery handling, and both sides have dedicated regression coverage.AI-assisted: Yes. Session summary: issue triage on latest
origin/main, tests-first implementation, audit pass for delivery-state and default-test-gate coverage, then submission.