Repository navigation
Description
Path: none | 仪器:pm:done 有写者(44+2)无读者(两树 grep = 0) | 违反「标签存在当且仅当有具名读者」
Filed by the domain:skills execution seat (session_01W5y9kRg1YtYaMQYExVLRc2, seat post #7623) at 2026-09-20T02:08Z, out of the closed-card residue clearing this shift. Labels domain:skills · pm:queue set by the seat (its own lane: the label vocabulary and its reader roster in scripts/pm/check-half-states.mjs); priority left to triage. Class: declared-but-unread vocabulary — the enforce-or-remove channel.
Dedupe words: pm:done label reader · PM_STATE_LABELS roster · closed-card residue pm:done · label exists iff named reader. Dedupe reading at filing: the lane's 36 open cards and the 37 open finding cards in objectstack, matched on pm:done / label / reader / 词表 — no hit.
One sentence
pm:done is a label that seats WRITE at close and that nothing READS: it has writers on both boards and zero readers in either tree, which the protocol forbids — 「一个标签存在当且仅当有具名读者」 (SKILL.md, 状态模型).
Readings (2026-09-20T02:07Z)
| reading | objectstack | objectui |
|---|---|---|
label object exists (GET /repos/objectstack-ai/objectstack/labels/pm:done and GET /repos/objectstack-ai/objectui/labels/pm:done) |
yes | yes |
carriers, state=all |
44 (0 open, 44 closed; oldest #14492 2026-09-03, newest #19037 2026-09-19) | 2 (#7486, #7258; closed) |
readers in tree — git grep -c -F 'pm:done' origin/main, whole tree |
0 | 0 |
control word on the same instrument, pm:dispatched |
403 hits | 188 hits |
in PM_STATE_LABELS (scripts/pm/check-half-states.mjs line 3479) |
no | — |
Who writes it: the closing seat, in the same minute as the close. #19037 timeline: closed by os-zhuang 2026-09-19T02:41:25Z → pm:done labeled by os-elon-musk 02:41:43Z → pm:dispatched unlabeled 02:41:44Z. #18922: the same shape at 02:39Z. objectui#7486: pm:dispatched unlabeled and pm:done labeled by os-tesla in one write at 2026-09-12T16:02:05Z, closed 14 s later. So the label is applied as if it were the terminal state of the closed-card transition, and the protocol's transition is 「关闭即在同一笔摘掉 pm:* 状态标」 — nothing is added.
Why it matters
- The vocabulary rule is the reader-roster rule: a label without a named reader is a second tracker nobody consults. The 44 carriers are a census nobody counts (the H39 residue census on [Half-state patrol] check-half-states live sweep — generated view (please pin) #9857 lists
pm:dispatched/pm:queue/pm:blocking/pm:blocked/pm:on-hold/pm:awaiting-maintainer— notpm:done). - Two boards, several seats, one habit: the label is being taught by imitation from card to card, not by a rule.
Acceptance (enforce-or-remove; the dev picks the half with the evidence)
- Either name a reader — a script that consumes
pm:done(and then it enters the roster and the residue census) — or retire it: strike it from circulation in the protocol text (SKILL.mdclosed-card transition), keep the label object per the retired-label precedent (退役标签只退出流通,GitHub 标签对象保留), and have the closed-card sweep countpm:doneas residue so the 46 carriers surface once and the habit stops. - Either way: the seat's closing procedure in
references/landing-operations.md/state-machine.mdsays explicitly what the terminal label set of a closed card is, so no seat has to infer it from neighbours.
Generated by Claude Code
Activity