Files
openclaw/src
Watchtower dcb525de50 fix(pi-embedded-runner): gate silent-error retry on replay safety
Per @steipete review on #68310: the silent-error retry must not fire when the
failed attempt already recorded potential side effects (messaging tool sent,
cron add, or a mutating tool call that wasn't round-tripped as replay-safe).
Otherwise resubmission can duplicate those actions.

Adds `!attempt.replayMetadata.hadPotentialSideEffects` to the retry condition,
mirroring the gate used by resolveEmptyResponseRetryInstruction and the
planning-only / reasoning-only retry resolvers in run/incomplete-turn.ts.

Adds a new negative regression test:
  "does not retry when the failed attempt recorded side effects"
which reproduces the reviewer's repro — stopReason=error + output=0 + empty
content, but replayMetadata={hadPotentialSideEffects: true, replaySafe: false}.
Expected: no retry, surfaces incomplete-turn error. Confirmed locally.
2026-04-21 00:43:50 +01:00
..
2026-04-20 23:33:21 +01:00
2026-04-20 19:20:46 +01:00
2026-04-20 19:32:19 +01:00
2026-04-20 20:30:16 +01:00
2026-04-20 19:14:01 +01:00
2026-04-18 23:16:47 +01:00
2026-04-20 19:55:44 +01:00
2026-04-18 20:35:20 +01:00
2026-04-18 20:35:20 +01:00