You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After a hold release on resume, batch-state keeps the task 'held' and marks the not-yet-started lane successor 'running' (dashboard mis-attributes telemetry) #651
penster batch 20260911T234647 (0.30.6 + Stage 2 build), field report on #627, item A. After a post-hold-timeoutorch_resume(force=true) released TP-2104's hold and relaunched its worker:
batch-state.json: TP-2104 status=held, exitReason="Hold timeout … the hold remains open"; TP-2105 status=running, exitReason="Lane held — awaiting ruling on an earlier task".
Status projection after release. The held task's persisted status is only re-projected at the next task-transition persist; hold-released (a strict hold-store write) does not flip the task record from held → running. Expected: the hold-store update() for a release should also project the bound task (and segment) status to running/pending in the same strict write, or resume's re-execution should upsert the outcome as running before spawning.
Successor mis-attribution. The successor on the same serial lane was persisted as running on resume. Suspects: the laneHeld pending outcome (execution.ts lane loop: status: (pauseSignal.paused || laneHeld) && !shouldSkipRemaining ? "pending" : "skipped" with exitReason "Lane held — awaiting ruling on an earlier task") being re-mapped to running by resume reconciliation (reconcileTaskStates precedence 2 "session alive → reconnect/running" matches the lane's shared sessionName), and the dashboard keying telemetry on the lane's currentTaskId while the badge keys on batch-state.json. Expected: a not-yet-started successor stays pending; the lane's telemetry attaches to the task named in the lane snapshot.
Acceptance
Behavioural test: held task → ruling → resume → after relaunch, persisted statuses are TP-A running, TP-B pending; dashboard /api/state (or the projection helper it uses) attributes lane-1 telemetry to TP-A.
hold-released strict write projects the task/segment status in the same persist.
Report
penster batch
20260911T234647(0.30.6 + Stage 2 build), field report on #627, item A. After a post-hold-timeoutorch_resume(force=true)released TP-2104's hold and relaunched its worker:batch-state.json:TP-2104 status=held, exitReason="Hold timeout … the hold remains open";TP-2105 status=running, exitReason="Lane held — awaiting ruling on an earlier task"..pi/runtime/<batch>/lanes/lane-1.json:taskId/worker.status=running, tool calls advancing — correct.heldwith no activity; TP-2105 showsrunningwith the relaunched TP-2104 worker's telemetry (53 tool calls, 17 %, $5.30) while its description says "Not Started", progress 0/25. Screenshot on Cap-ruling hold: runtime must block .DONE and merge while an operator ruling is pending (.PENDING-RULING) #627.Analysis (to verify)
Two separate defects:
task-transitionpersist;hold-released(a strict hold-store write) does not flip the task record fromheld→running. Expected: the hold-storeupdate()for a release should also project the bound task (and segment) status torunning/pendingin the same strict write, or resume's re-execution should upsert the outcome asrunningbefore spawning.runningon resume. Suspects: thelaneHeldpending outcome (execution.tslane loop:status: (pauseSignal.paused || laneHeld) && !shouldSkipRemaining ? "pending" : "skipped"with exitReason "Lane held — awaiting ruling on an earlier task") being re-mapped torunningby resume reconciliation (reconcileTaskStatesprecedence 2 "session alive → reconnect/running" matches the lane's sharedsessionName), and the dashboard keying telemetry on the lane'scurrentTaskIdwhile the badge keys onbatch-state.json. Expected: a not-yet-started successor stayspending; the lane's telemetry attaches to the task named in the lane snapshot.Acceptance
running, TP-Bpending; dashboard/api/state(or the projection helper it uses) attributes lane-1 telemetry to TP-A.hold-releasedstrict write projects the task/segment status in the same persist.