---
name: milestones-skip-wip-greenlit-goes-straight-to-acceptance
description: "milestone issues go GREENLIT -> ACCEPTANCE -> DONE and are never WIP (measured on #272 and #23 label timelines); AGENTS.md lists WIP in the chain, which is the REQUEST-level chain"
metadata:
  type: project
---

Ruled by doyle 2026-09-09 from the GitHub LABEL TIMELINE, not from a board view: milestone #272
went BACKLOG 2026-09-05 03:15Z -> GREENLIT 2026-09-06 10:25Z and nothing since — it was **never
WIP**. Precedent #23 (v0.67.0): GREENLIT 07-29 -> ACCEPTANCE 08-30 08:18Z -> DONE 09:28Z, also no
WIP. So a release cascade's pre-publish `state <milestone> acceptance` is a **GREENLIT ->
ACCEPTANCE** move, and a milestone rendering `state: greenlit` late in its build is CORRECT, not
drift to repair.

Two adjacent facts from the same ruling:
- **`type:` stays UNSET on a milestone.** Milestones carry `kind: MILESTONE`; `type: BUGFIX /
  ADDITION / CHANGE` is request-level. #23 closed DONE with no type label.
- **Prose is not a label.** doyle's "needs-operator cannot be set on a WIP milestone, so this
  comment is the flag" created no label; `flag: NEEDS-OPERATOR` on #272 was labeled 09-05 03:16Z and
  unlabeled 09-06 10:24Z, never re-set. Do not go looking for a flag to strip because a comment
  says it is one.

**Why it matters:** AGENTS.md documents the chain as BACKLOG -> EVAL -> GREENLIT -> WIP ->
ACCEPTANCE -> DONE, which reads as universal and is the REQUEST-level chain. Expecting WIP on a
milestone makes the correct state look like drift, and "fixing" a state display is how the v0.67.0
hub-card off-by-one turned into wasted motion. Read the label timeline, never a rendered view, and
never repair a state. Related: [[release-verb-grace-vs-hub-card-window]],
[[a-step-that-straddles-an-irreversible-action-reads-as-done-at-the-action]].
