-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Problem
After a binary restart and taskctl resume, Pulse restarts and ticks every 5 seconds. heartbeatActiveAgents checks isSessionActivelyRunning(task.assignee) for tasks with stage: developing. The developer session is dead (not in memory after restart), so isSessionActivelyRunning should return false, triggering the developing → reviewing transition.
However, the transition is NOT happening — tasks remain stuck at stage: developing indefinitely.
Suspected Causes
-
Instance context mismatch:
startPulsecapturesinstanceContext.tryGet()at call time. After a restart, the captured context may not match the live instance, causingSessionStatus.get()insideisSessionActivelyRunningto throw and returnfalse... but something else prevents the update. -
pulse_piddisplay bug:taskctl statusshowsPulse PID: nonebecause it readsjob.pulse_pidfrom the DB, but the PID is stored in a lock file. These are never in sync. Low priority cosmetic issue but causes confusion.
Acceptance Criteria
- After binary restart + resume,
developingtasks with dead sessions advance toreviewingwithin one Pulse tick (5s) - Adversarial agent spawns after transition
-
taskctl statuscorrectly reflects Pulse running state -
bun testandbun run typecheckpass