Summary
openclaw doctor --fix reports legacy cron payload kind normalization repeatedly on v2026.3.11, even when all jobs already have canonical payload.kind values (agentTurn / systemEvent).
Impact
- False-positive health warning persists.
doctor --fix appears to "repair" the same jobs on every run.
- Creates noise in post-upgrade validation and automation runbooks.
Environment
- OpenClaw:
v2026.3.11
- Install path: global pnpm package (
openclaw@2026.3.11)
- Gateway: local systemd service, loopback bind
Repro
- Ensure cron jobs already store canonical values (
payload.kind == agentTurn or systemEvent).
- Run:
- Run again:
Actual
Legacy cron normalization warning reappears (same jobs), despite no semantic change needed.
Expected
Once kinds are canonical, doctor --fix should converge and stop reporting legacy kind normalization.
Root-cause analysis (local)
In the compiled update runner, normalizePayloadKind(payload) reports mutation when no effective change is required in some paths.
Local workaround (confirmed)
Patched local compiled files:
dist/update-runner-CsfK3SMx.js
dist/update-runner-CvNIx6g2.js
After patch:
openclaw doctor --fix no longer reports legacy kind normalization.
openclaw cron list --json shows canonical payload.kind values.
Notes
Workaround is local and gets overwritten on update/reinstall.
A canonical source fix in release artifacts would be ideal.
Summary
openclaw doctor --fixreports legacy cron payload kind normalization repeatedly on v2026.3.11, even when all jobs already have canonicalpayload.kindvalues (agentTurn/systemEvent).Impact
doctor --fixappears to "repair" the same jobs on every run.Environment
v2026.3.11openclaw@2026.3.11)Repro
payload.kind==agentTurnorsystemEvent).openclaw doctor --fixopenclaw doctor --fixActual
Legacy cron normalization warning reappears (same jobs), despite no semantic change needed.
Expected
Once kinds are canonical,
doctor --fixshould converge and stop reporting legacy kind normalization.Root-cause analysis (local)
In the compiled update runner,
normalizePayloadKind(payload)reports mutation when no effective change is required in some paths.Local workaround (confirmed)
Patched local compiled files:
dist/update-runner-CsfK3SMx.jsdist/update-runner-CvNIx6g2.jsAfter patch:
openclaw doctor --fixno longer reports legacy kind normalization.openclaw cron list --jsonshows canonicalpayload.kindvalues.Notes
Workaround is local and gets overwritten on update/reinstall.
A canonical source fix in release artifacts would be ideal.