fix(board): clear heartbeat_at on release so the next owner has no stale liveness - #2623
Conversation
…liveness releaseTask cleared claimed_by/claimed_at but left heartbeat_at, so after a release the card kept the prior owner's pulse. when a new worker checked it out, the liveness badge computed from the old heartbeat and could show a fresh checkout as running (▶) before it ever pulsed. clear heartbeat_at in the same conditional UPDATE; add a regression test (release → heartbeatAt null → survives re-claim). found by codex PR review of #2619 (P2).
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
What
releaseTaskreturned anin_progresscard toreadyand clearedclaimed_by/claimed_atbut leftheartbeat_atbehind. After a release the card kept the prior owner's pulse, so when a new worker checked it out the liveness badge computed from the old heartbeat and could show a fresh checkout as ▶ running before it ever pulsed.Fix
Clear
heartbeat_atin the same conditional release UPDATE (the atomicWHERE ... AND status = 'in_progress'CAS is unchanged, so the done-card no-resurrection and phantom-event guarantees hold). Added a regression test: release →heartbeatAtnull → survives re-claim. Right-reason verified (test fails without the source change).Provenance
Found by the codex bot's P2 review comment on the #2619 dev→main promotion; deferred out of that promotion and landed here per the resolution note.
typecheck/biomeclean;bun test src/lib/v5/task-state.test.ts→ 67 pass / 0 fail.