Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 0
waiting_until has no production writer — 89/89 runs report NULL while MCP promises 'until when' #591
Copy link
Copy link
Closed
Labels
P2: correctnessReal defect, no live harm today — inert fields, miscounts, missing guardsReal defect, no live harm today — inert fields, miscounts, missing guardsbackendBackend / Worker / API workBackend / Worker / API workbugSomething isn't workingSomething isn't workingcoderThe Coder wedge agent (#68) — Engine, Pilot, Co-pilot, Loop, OverseerThe Coder wedge agent (#68) — Engine, Pilot, Co-pilot, Loop, OverseermcpMCP server surface — the operator's instrument panel, not the productMCP server surface — the operator's instrument panel, not the productobservabilityA displayed value the code cannot produce, or that means something other than its labelA displayed value the code cannot produce, or that means something other than its label
Description
Activity
Metadata
Metadata
Assignees
Labels
P2: correctnessReal defect, no live harm today — inert fields, miscounts, missing guardsReal defect, no live harm today — inert fields, miscounts, missing guardsbackendBackend / Worker / API workBackend / Worker / API workbugSomething isn't workingSomething isn't workingcoderThe Coder wedge agent (#68) — Engine, Pilot, Co-pilot, Loop, OverseerThe Coder wedge agent (#68) — Engine, Pilot, Co-pilot, Loop, OverseermcpMCP server surface — the operator's instrument panel, not the productMCP server surface — the operator's instrument panel, not the productobservabilityA displayed value the code cannot produce, or that means something other than its labelA displayed value the code cannot produce, or that means something other than its label
waiting_untilcan only ever be NULL, and the MCP description promises itOne writer:
agent-loop-store.ts:272-273, bindingwait?.until ?? null. Three production call sites, none passesuntil:coding-session.ts:440—null(a clear)coding-session.ts:581—{ reason: wait }coding-session.ts:713—{ reason: "platform_interrupt" }Only
run-liveness.test.ts:166supplies one. This is the #570 pattern exactly: the helper is tested, the call sites are not, so the column reads as implemented while nothing populates it. Measured live:waitingUntilnull on 89 of 89 runs, including one that parked ~6h51m by its own wall clock.The instant exists and is thrown away
coding-wait.ts:210returnsuntil: now + ms, consumed atcoding-pause.ts:174, and rendered into chat prose atcoding-wait.ts:274,304. It never reachesrecordLiveness, becausepauseDeps(round, parkReason)closes over the reason only.Two descriptions disagree, and the wrong one is the general-purpose read
composition.ts:255— "waiting(deliberately parked —waitNotesays what for and until when)"coding.ts:170— "saying what for"The sibling that omits the promise is the correct one, which is the tell.
work-report.ts:127's "expected to resume in …" clause is unreachable code.Why this misleads
"Parked, resuming at 16:00" and "parked, indefinitely" are different decisions for the owner. The platform computes the first and reports the second.
Acceptance criteria
recordLivenessreceives the instantcoding-wait.ts:210already computes;waitingUntilis populated wherever a park has a known end.composition.ts:255matches behaviour, or behaviour matches it.instance_runtime_nodes.statusis a write-once "online" column — every machine an instance has ever seen reports online forever, including one last seen four days ago #570.Verified vs inferred
coding-wait.ts:210/coding-pause.ts:174, and the 89/89 live measurement.