docs/qa/platform-checklist/areas/automation.json line 429 carries, inside the verify prose of the "suspending types park the run" clause:
(ExecutionStatus vocabulary: pending|running|paused|completed|failed|cancelled|timed_out|retrying)
That parenthetical announces itself as the ExecutionStatus vocabulary. The enum has nine members: refused was appended in #14945 (packages/spec/src/automation/execution.zod.ts), and this copy predates it. A human running the checklist reads the list as authoritative and has no way to see that a member is missing.
Found while sweeping the same defect class for #15890, which repaired the three sites that card named in packages/runtime. This one was deliberately left out of that PR rather than edited alongside them, for two reasons:
- There is no enum to read here. In TypeScript the repair is mechanical — the pin and both prose citations now read
ExecutionStatus / ExecutionStatus.options instead of restating the members. A JSON checklist has no such move available, so the only options are to retype nine names (which re-arms the identical trap the moment a tenth member lands) or to replace the enumeration with a pointer to the declaring file. Choosing between those is an authoring decision about checklist conventions, not a mechanical repair.
- Different verification surface.
docs/qa/platform-checklist/** has its own gates, and the runtime PR touches none of them.
Suggested direction, for whoever picks this up: prefer naming the source over restating the members, e.g. "the ExecutionStatus vocabulary declared in packages/spec/src/automation/execution.zod.ts". Minting the number nine, or a fresh nine-member list, would leave the next appended member in exactly the position refused is in today.
Scope note from the same sweep, so nobody re-litigates these: the other near-complete member lists in the tree are all correct as they stand. packages/spec/src/automation/execution.test.ts asserts an eight-member prefix on purpose (it pins the appended-last invariant that other readers index positions against), AUTOMATION_RESULT_STATUSES is a different five-member union held exhaustive by a type-level equality, plugin-approvals' TERMINAL_RUN_STATUSES documents itself as a deliberately narrower subset, and the generated reference docs under content/docs/references/ already carry all nine.
How this was found: every tracked non-dist file was scanned for windows carrying four or more of the nine member spellings, and separately for count words near ExecutionStatus. The matcher's positive control is the pre-change text of the runtime pin, which it reports at eight of nine with refused missing — the same signature this checklist line shows.
docs/qa/platform-checklist/areas/automation.jsonline 429 carries, inside theverifyprose of the "suspending types park the run" clause:That parenthetical announces itself as the
ExecutionStatusvocabulary. The enum has nine members:refusedwas appended in #14945 (packages/spec/src/automation/execution.zod.ts), and this copy predates it. A human running the checklist reads the list as authoritative and has no way to see that a member is missing.Found while sweeping the same defect class for #15890, which repaired the three sites that card named in
packages/runtime. This one was deliberately left out of that PR rather than edited alongside them, for two reasons:ExecutionStatus/ExecutionStatus.optionsinstead of restating the members. A JSON checklist has no such move available, so the only options are to retype nine names (which re-arms the identical trap the moment a tenth member lands) or to replace the enumeration with a pointer to the declaring file. Choosing between those is an authoring decision about checklist conventions, not a mechanical repair.docs/qa/platform-checklist/**has its own gates, and the runtime PR touches none of them.Suggested direction, for whoever picks this up: prefer naming the source over restating the members, e.g. "the
ExecutionStatusvocabulary declared inpackages/spec/src/automation/execution.zod.ts". Minting the number nine, or a fresh nine-member list, would leave the next appended member in exactly the positionrefusedis in today.Scope note from the same sweep, so nobody re-litigates these: the other near-complete member lists in the tree are all correct as they stand.
packages/spec/src/automation/execution.test.tsasserts an eight-member prefix on purpose (it pins the appended-last invariant that other readers index positions against),AUTOMATION_RESULT_STATUSESis a different five-member union held exhaustive by a type-level equality, plugin-approvals'TERMINAL_RUN_STATUSESdocuments itself as a deliberately narrower subset, and the generated reference docs undercontent/docs/references/already carry all nine.How this was found: every tracked non-dist file was scanned for windows carrying four or more of the nine member spellings, and separately for count words near
ExecutionStatus. The matcher's positive control is the pre-change text of the runtime pin, which it reports at eight of nine withrefusedmissing — the same signature this checklist line shows.