fix #90452: Regression: Heartbeat exec completion still shows generic fallback text instead of actual output#90897
Conversation
|
Codex review: passed. Reviewed June 8, 2026, 1:47 AM ET / 05:47 UTC. Summary PR surface: Source +12, Tests +18. Total +30 across 3 files. Reproducibility: yes. Source inspection shows current main and v2026.6.1 only include raw exec details for verbose mode or timed-out cron cases, so a non-timeout heartbeat exec failure follows the generic warning path; I did not run the wall-clock heartbeat scenario in this read-only review. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Next step before merge
Security Review detailsBest possible solution: Land the narrow payload-builder fix after the usual automerge gates, keeping scheduler and channel delivery behavior unchanged. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection shows current main and v2026.6.1 only include raw exec details for verbose mode or timed-out cron cases, so a non-timeout heartbeat exec failure follows the generic warning path; I did not run the wall-clock heartbeat scenario in this read-only review. Is this the best way to solve the issue? Yes. The payload builder is the narrow decision point for whether collected tool-error details are surfaced, and threading the existing trigger into that boundary is cleaner than changing scheduler or channel delivery code. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against a4f0e508dfcb. Label changesLabel justifications:
Evidence reviewedPR surface: Source +12, Tests +18. Total +30 across 3 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
|
|
@clawsweeper automerge |
|
🦞✅ Source: What merged:
Automerge notes:
The automerge loop is complete. Automerge progress:
|
… generic fallback text instead of actual output
0e7a0e4 to
85c5d6f
Compare
… generic fallback text instead of actual output (openclaw#90897) Summary: - The PR threads heartbeat trigger state into embedded-runner payload formatting so heartbeat exec-like failures include captured error details, with a focused regression test. - PR surface: Source +12, Tests +18. Total +30 across 3 files. - Reproducibility: yes. Source inspection shows current main and v2026.6.1 only include raw exec details for v ... follows the generic warning path; I did not run the wall-clock heartbeat scenario in this read-only review. Automerge notes: - PR branch already contained follow-up commit before automerge: fix openclaw#90452: Regression: Heartbeat exec completion still shows generic… Validation: - ClawSweeper review passed for head 85c5d6f. - Required merge gates passed before the squash merge. Prepared head SHA: 85c5d6f Review: openclaw#90897 (comment) Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary
🛠️ ... failedfallback instead of showing the command's captured error/output.heartbeatand allow exec-like heartbeat tool failures to include the collected error details.buildEmbeddedRunPayloadsnow receivesisHeartbeatTrigger, threads it into the tool-error warning policy, and has a regression test for the HEARTBEAT.md tail failure shape from the issue.Fixes #90452
Real behavior proof
/media/vdc/code/ai/aispace/openclaw-worktrees/issue-90452, calling the production embedded-runner payload builder withnode --import tsx.[ { "text": "⚠️ 🛠️ show last 20 lines of ~/.openclaw/workspace/memory/2026-06-04.md failed: tail: cannot open '/home/user/.openclaw/workspace/memory/2026-06-04.md' for reading: No such file or directory", "isError": true } ]tailerror andNo such file or directorydetail that the previous generic fallback omitted.Regression Test Plan
src/agents/embedded-agent-runner/run/payloads.test.ts.show last 20 lines of ~/.openclaw/workspace/memory/2026-06-04.mdincludesNo such file or directoryin the payload.Commands run:
Observed test output:
tsgo:coreandgit diff --checkcompleted with no output and exit code 0.Merge risk
merge-risk:runtime-behavior,merge-risk:low.heartbeat; cron timeout handling and ordinary compact tool-error behavior keep their existing conditions.lastToolError.error; this only makes heartbeat exec-like failures eligible to surface that existing detail instead of dropping it.isHeartbeatTriggerthrough that policy fixes the decision point directly.Root Cause
lastToolError.errorwas dropped.