Skip to content

platform-checklist: automation.json states the ExecutionStatus vocabulary as eight hand-copied members, so it is short by refused #16424

Description

@os-litant

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:

  1. 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.
  2. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions