board.ts:273 publishes a task-status vocabulary containing a member that does not exist
workers/mcp/src/instance-tools/board.ts:273 advertises runtime task status as (done/failed/cancelled).
The real vocabulary is TaskStatus, whose member is completed. done does not exist.
Found by the vocabulary guard extended in #600 — the entry's citation resolves (so it passes the citation check added in that issue), but the published value set is wrong. That is worth noting on its own: a guard that verifies "this claim names a real source" does not verify "this claim matches that source", and this is the first case that separates them.
Why it misleads
A caller filtering or branching on done gets nothing and cannot tell an empty result from a wrong filter — the same failure mode as agent_trace level:"error" in #564, where a documented value that the code never emits made a real state unreachable through the documented route.
It is also the fourth advertised-vocabulary mismatch found in this batch, after coding_session_capture (working not in the union, offline unreachable), list_instance_tools tiers (2 of 4 documented), and agent_trace levels. Those were fixed individually; this one arrived after the guard and slipped through the gap between citation resolves and values match.
Acceptance criteria
board.ts:273 publishes TaskStatus's actual members.
- The value set is derived from
TaskStatus, not transcribed — RUN_HEALTH_STATES and RUN_WAIT_REASONS both became as const arrays this week for exactly this, and if TaskStatus is not already one, making it one is the fix rather than editing a string.
- The guard is extended from citation resolves to values match the cited source wherever the source is importable. Where it is not (
workers/mcp cannot import workers/api), say so and record it as inventoried — that boundary is real and already documented.
- Denominator per ADR 0002: how many published value sets were checked against their cited source, out of how many carry a citation.
- Red demonstrated on
done.
Verified vs inferred
board.ts:273publishes a task-status vocabulary containing a member that does not existworkers/mcp/src/instance-tools/board.ts:273advertises runtime task status as(done/failed/cancelled).The real vocabulary is
TaskStatus, whose member iscompleted.donedoes not exist.Found by the vocabulary guard extended in #600 — the entry's citation resolves (so it passes the citation check added in that issue), but the published value set is wrong. That is worth noting on its own: a guard that verifies "this claim names a real source" does not verify "this claim matches that source", and this is the first case that separates them.
Why it misleads
A caller filtering or branching on
donegets nothing and cannot tell an empty result from a wrong filter — the same failure mode asagent_trace level:"error"in #564, where a documented value that the code never emits made a real state unreachable through the documented route.It is also the fourth advertised-vocabulary mismatch found in this batch, after
coding_session_capture(workingnot in the union,offlineunreachable),list_instance_toolstiers (2 of 4 documented), andagent_tracelevels. Those were fixed individually; this one arrived after the guard and slipped through the gap between citation resolves and values match.Acceptance criteria
board.ts:273publishesTaskStatus's actual members.TaskStatus, not transcribed —RUN_HEALTH_STATESandRUN_WAIT_REASONSboth becameas constarrays this week for exactly this, and ifTaskStatusis not already one, making it one is the fix rather than editing a string.workers/mcpcannot importworkers/api), say so and record it as inventoried — that boundary is real and already documented.done.Verified vs inferred
board.ts:273's published string; thatTaskStatus's member iscompletedand contains nodone; that the entry's citation resolves under The vocabulary inventory's own citations are unchecked — three name files or symbols that do not exist #600's check.