Skip to content

[Half-state patrol] check-half-states live sweep — generated view (please pin) #9857

Description

@os-warren

os-half-state-sweep — machine-findable marker for this generated view.

Generated view — not a second tracker. Authority lives on each card and PR (one-board rule); this body is rewritten IN PLACE by the scheduled patrol workflow (.github/workflows/half-state-patrol.yml) on every run, and the edit history is the archive. Report-only: every row is patrol input, never a gate verdict, and this sweep never fixes a state. Each predicate and the protocol clause it enforces are documented in scripts/pm/check-half-states.mjs.

Swept 2026-08-22T13:48:45.359Z · run 32576813633 · commit a24b7fa4df7255818d5b6d08a6eac42e5ba6a5ae · trigger schedule

The timestamp above is the patrol's own heartbeat: a Swept line that stops advancing means the standing caller died, which is the failure this anchor was created to make visible. Read it before you read the rows.

check-half-states: swept 249 open pm-/p0-labeled issue(s), 324 open issue(s) in the unscoped pass (H13–H15, H18), 6 open PR(s) (merge state read on 0 of 0 H16 candidate(s)) and 198 recently-merged PR(s) in objectstack-ai/objectstack — 53 half-state(s) found. Hold comments read on 69 of 69 H17 candidate(s). Blocked-by: comment fallback read on 28 of 28 candidate(s). Restart-when: hold comments read on 27 of 27 H9 candidate(s). Blocker liveness (H19): targets resolved on 19 of 20 distinct Blocked-by: target(s) named by open pm:blocked card(s) — each unresolved target is named on its own card's row, never dropped. Dispatch liveness (H20): remote ref read on 0 of 0 distinct claimed branch(es) named by open pm:dispatched card(s) past the 60-minute threshold. Report-only: findings are patrol input, not a gate verdict.

Findings

  • H9 #1883pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H11 #1883 — important card parked: priority:p2 + security sitting in pm:on-hold, open ~68d (threshold 7d) — the important-parked inventory exists so a bug or security card cannot age out of sight inside a parked state. Re-check the card's Blocked-by: / Restart-when: liveness in the triage round.
  • H11 #3267 — important card parked: priority:p2 sitting in pm:on-hold, open ~34d (threshold 7d) — the important-parked inventory exists so a bug or security card cannot age out of sight inside a parked state. Re-check the card's Blocked-by: / Restart-when: liveness in the triage round.
  • H4 #3653pm:blocked with a Blocked-by: line in NEITHER channel — not in the body, and not in any comment on the thread (both were read). Either channel discharges the duty: seats park the line in a comment on purpose, because rewriting a body through the MCP escaping hazard ([finding] GitHub MCP issue reads return HTML-escaped bodies, so any seat that appends a line by rewriting a card body may store &#39; literals into its code blocks #8813) is the riskier write. So this is not a formatting nit — no machine reader anywhere knows what this card is waiting for. The unlock sweep greps this literal line, so without it in SOME channel nothing can ever return this card to the queue — the block outlives its blocker in silence.
  • H5 #6017 — unrecognized status word 「⚪ 收班 vacant · 上一班 session_01B4h3medzvhB9rpfoja9jcw R2 · 落地 16 · 0 返工」
  • H5 #6021 — title says 🟢 occupied(合并后车道:services but assignees are [none]
  • H6 #6021 — seat body is 12.2 KB (soft bound ~10 KB) — compact to the six-section current-state template (Seat-post protocol: registry bodies grow without bound — bound the live body to current state, move shift narration out #7583; edit history is the archive)
  • H5 #6025 — unrecognized status word 「🔴 收班 vacant · 上一班 session_014zHsbJoTkTZeJQ5DLbRXrE (domain:ui) R26 · 落地 20 · 在飞 0 · 决策箱 14+」
  • H5 #6026 — title says 🟢 在任 but assignees are [baozhoutao]
  • H5 #6367 — unrecognized status word 「🟡 os-elon (session_019yDEhPBC3tcGkW9bkce1HM) · 本任期落地 46 · 在飞 0 · 队列 0(可派)· 等裁决 2」
  • H9 #7611pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H5 #7623 — unrecognized status word 「⚪ 待接管 · 上一班 session_019T1sSZbQTnLhrK9HhNdNiB 收班(08-21 04:3xZ)· 本班 29 合」
  • H14 #7917pm:blocking carried while no open card's Blocked-by: line — body OR comment — targets it, judged against the two-channel index — a stale derived cache, scoped to THIS REPO ONLY: no dependent found in this repo; cross-repo dependents are not swept, so this is not a claim of exhaustiveness over the population — Blocked-by: edges are legally cross-repo. The label is not a state a seat sets: the triage sweep derives it from the Blocked-by: reverse index, and the lane selection order ranks it second only to priority:p0. So a stale one is worse than an absent one — it boosts a card nothing depends on, with authority. Report-only: verify cross-repo dependents before the triage sweep's derivation pass drops the label (or the missing Blocked-by: line landing on the card that really is waiting), never a label written from this script.
  • H15 #7917 — oldest UNCLAIMED pm:blocking card: open ~250h, 11 of 14 open pm:blocking card(s) unassigned. The lane selection order puts pm:blocking second only to priority:p0, so an unclaimed one aging while fresher cards are picked is selection-order drift — visible here by name instead of only in a seat's memory. Age is the CARD's (created_at, the same quantity the order's within-rank tie-break reads), not the label's: that would need a per-card timeline fetch this sweep never makes. Visibility row — no threshold, it reports unconditionally, and like everything here it is patrol input, not a verdict.
  • H9 #8103pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H11 #8103 — important card parked: bug + security sitting in pm:on-hold, open ~10d (threshold 7d) — the important-parked inventory exists so a bug or security card cannot age out of sight inside a parked state. Re-check the card's Blocked-by: / Restart-when: liveness in the triage round.
  • H19 #8140pm:blocked while 1 of 1 Blocked-by: target(s) — read from body OR comment — is CLOSED (#10078 (closed 2026-08-22T13:15:19Z)): the block has outlived its blocker. Nothing else here asks this question — H4 asks whether the line EXISTS, H14 asks the REVERSE index — so an expired block sits with a well-formed line, a correct label and no row anywhere: one measured card sat ~4.5h past its blocker's close and was found only by a human walking the graph, another was released only by a manual triage pass. Every target it names is closed: nothing this card declared a wait on is still running. Report-only, and the release is NOT this script's to make: the state model gives it two mechanical double-checks (pm:blocked/pm:on-hold row, 「放行双查」) — ① release only against the condition carried by the MOST RECENT conversion comment, never an earlier blocker on the thread (a condition already spent, re-fired, reinstates an expired premise as the current one), and ② refuse to release when the card carries a MERGED PR newer than that conversion comment (the card moved on after the condition was written, so the cited fact can be true and no longer current). This row surfaces the candidate; the unlock sweep releases it — ⛔ never a label written from this script.
  • H11 #8343 — important card parked: bug sitting in pm:on-hold, open ~9d (threshold 7d) — the important-parked inventory exists so a bug or security card cannot age out of sight inside a parked state. Re-check the card's Blocked-by: / Restart-when: liveness in the triage round.
  • H9 #8501pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H9 #8998pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H9 #9089pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H9 #9139pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H19 #9167pm:blocked while 1 of 1 Blocked-by: target(s) — read from body OR comment — is CLOSED (objectstack-ai/objectui#5401 (closed 2026-08-22T12:05:11Z)): the block has outlived its blocker. Nothing else here asks this question — H4 asks whether the line EXISTS, H14 asks the REVERSE index — so an expired block sits with a well-formed line, a correct label and no row anywhere: one measured card sat ~4.5h past its blocker's close and was found only by a human walking the graph, another was released only by a manual triage pass. Every target it names is closed: nothing this card declared a wait on is still running. Report-only, and the release is NOT this script's to make: the state model gives it two mechanical double-checks (pm:blocked/pm:on-hold row, 「放行双查」) — ① release only against the condition carried by the MOST RECENT conversion comment, never an earlier blocker on the thread (a condition already spent, re-fired, reinstates an expired premise as the current one), and ② refuse to release when the card carries a MERGED PR newer than that conversion comment (the card moved on after the condition was written, so the cited fact can be true and no longer current). This row surfaces the candidate; the unlock sweep releases it — ⛔ never a label written from this script.
  • H9 #9272pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H9 #9659pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H9 #9707pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H13 #9710domain:* with no pm-state label and ~36h without activity (threshold 2h) — routing landed, the state machine never did, so the card is invisible to every seat's candidate query. A half-state older than one sweep cycle is a defect of the healing loop (triage sweep disjunct ③), not inventory: pair the domain label with its pm-state in one write, oldest first.
  • H14 #9952pm:blocking carried while no open card's Blocked-by: line — body OR comment — targets it, judged against the two-channel index — a stale derived cache, scoped to THIS REPO ONLY: no dependent found in this repo; cross-repo dependents are not swept, so this is not a claim of exhaustiveness over the population — Blocked-by: edges are legally cross-repo. The label is not a state a seat sets: the triage sweep derives it from the Blocked-by: reverse index, and the lane selection order ranks it second only to priority:p0. So a stale one is worse than an absent one — it boosts a card nothing depends on, with authority. Report-only: verify cross-repo dependents before the triage sweep's derivation pass drops the label (or the missing Blocked-by: line landing on the card that really is waiting), never a label written from this script.
  • H13 #10032domain:* with no pm-state label and ~35h without activity (threshold 2h) — routing landed, the state machine never did, so the card is invisible to every seat's candidate query. A half-state older than one sweep cycle is a defect of the healing loop (triage sweep disjunct ③), not inventory: pair the domain label with its pm-state in one write, oldest first.
  • H14 #10032pm:blocking carried while no open card's Blocked-by: line — body OR comment — targets it, judged against the two-channel index — a stale derived cache, scoped to THIS REPO ONLY: no dependent found in this repo; cross-repo dependents are not swept, so this is not a claim of exhaustiveness over the population — Blocked-by: edges are legally cross-repo. The label is not a state a seat sets: the triage sweep derives it from the Blocked-by: reverse index, and the lane selection order ranks it second only to priority:p0. So a stale one is worse than an absent one — it boosts a card nothing depends on, with authority. Report-only: verify cross-repo dependents before the triage sweep's derivation pass drops the label (or the missing Blocked-by: line landing on the card that really is waiting), never a label written from this script.
  • H19 #10101pm:blocked while 1 of 2 Blocked-by: target(s) — read from body OR comment — is CLOSED (#10110 (closed 2026-08-20T14:18:11Z)): the block has outlived its blocker. Nothing else here asks this question — H4 asks whether the line EXISTS, H14 asks the REVERSE index — so an expired block sits with a well-formed line, a correct label and no row anywhere: one measured card sat ~4.5h past its blocker's close and was found only by a human walking the graph, another was released only by a manual triage pass. 1 target(s) are still open (#10999), so this is a PARTIAL discharge and the card may still be legitimately blocked — the row reports it, it does not decide it. Report-only, and the release is NOT this script's to make: the state model gives it two mechanical double-checks (pm:blocked/pm:on-hold row, 「放行双查」) — ① release only against the condition carried by the MOST RECENT conversion comment, never an earlier blocker on the thread (a condition already spent, re-fired, reinstates an expired premise as the current one), and ② refuse to release when the card carries a MERGED PR newer than that conversion comment (the card moved on after the condition was written, so the cited fact can be true and no longer current). This row surfaces the candidate; the unlock sweep releases it — ⛔ never a label written from this script.
  • H9 #10261pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H5 #10282 — unrecognized status word 「⚪ vacant (last held by os-elon, session_012qkdG6z99Eo2kKPGtwgwXX) · R1 收班 · 4 合 · 队列 9 · 在飞 0」
  • H4 #10303pm:blocked with a Blocked-by: line in NEITHER channel — not in the body, and not in any comment on the thread (both were read). Either channel discharges the duty: seats park the line in a comment on purpose, because rewriting a body through the MCP escaping hazard ([finding] GitHub MCP issue reads return HTML-escaped bodies, so any seat that appends a line by rewriting a card body may store &#39; literals into its code blocks #8813) is the riskier write. So this is not a formatting nit — no machine reader anywhere knows what this card is waiting for. The unlock sweep greps this literal line, so without it in SOME channel nothing can ever return this card to the queue — the block outlives its blocker in silence.
  • H9 #10315pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H14 #10348 — targeted by 1 open card(s)' Blocked-by: line, body or comment ([security] plugin-auth's two id-shaped platform-admin judges disagree with resolve-authz-context on three axes — two of them load-bearing on live gates #10949), but NOT carrying pm:blocking — a real unblocker the selection order cannot see. The label is the derived cache that makes a card outrank everything but priority:p0; without it this card competes on age alone while the cards waiting on it cannot start. Report-only: the remedy is the triage sweep's derivation pass applying the label, never a hand-applied one.
  • H13 #10374domain:* with no pm-state label and ~31h without activity (threshold 2h) — routing landed, the state machine never did, so the card is invisible to every seat's candidate query. A half-state older than one sweep cycle is a defect of the healing loop (triage sweep disjunct ③), not inventory: pair the domain label with its pm-state in one write, oldest first.
  • H4 #10413pm:blocked with a Blocked-by: line in NEITHER channel — not in the body, and not in any comment on the thread (both were read). Either channel discharges the duty: seats park the line in a comment on purpose, because rewriting a body through the MCP escaping hazard ([finding] GitHub MCP issue reads return HTML-escaped bodies, so any seat that appends a line by rewriting a card body may store &#39; literals into its code blocks #8813) is the riskier write. So this is not a formatting nit — no machine reader anywhere knows what this card is waiting for. The unlock sweep greps this literal line, so without it in SOME channel nothing can ever return this card to the queue — the block outlives its blocker in silence.
  • H9 #10572pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H5 #10602 — title says ⏳ vacant but assignees are [os-warren]
  • H9 #10666pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H2 #10667 — assignee set but no claim comment on the thread
  • H14 #10676 — targeted by 1 open card(s)' Blocked-by: line, body or comment (driver-sql: introspectSchema() returns only { tables } — the spec IntrospectedSchema contract's dialect and (required) introspectedAt are never emitted #10998), but NOT carrying pm:blocking — a real unblocker the selection order cannot see. The label is the derived cache that makes a card outrank everything but priority:p0; without it this card competes on age alone while the cards waiting on it cannot start. Report-only: the remedy is the triage sweep's derivation pass applying the label, never a hand-applied one.
  • H9 #10694pm:on-hold with no Restart-when: line in EITHER channel — not in the body, and not in any comment on the thread (both were read) — the hold state is legal only with a machine-fireable exit (Restart-when: closed <owner/repo>#N, or a one-line executable predicate). ⚠️ READ THE BODY AND THE THREAD BEFORE ACTING: a line that IS there but which this scan cannot parse looks exactly like an absent one. Decoration is tolerated (backticks, a -/* bullet, ** bold), but a mis-spelled or lowercased key is not — the unlock scan greps the literal. If the line is there, unwrap or re-spell it; that is the whole fix, and no state change is due. Add or repair the line first. Closing is the LAST resort and applies only to a card that genuinely has no fireable exit: such a card is closed not planned with reason + provenance in the closing comment (type:Bug holds re-route instead — see the state model's Bug branch). Channel: like Blocked-by: (H4/H14), a Restart-when: line counts from the body OR a comment — either channel discharges the duty, and the unlock scan reads both (hold protocol: widen the Restart-when: channel contract to body OR comment — unlock scan + H9 + the SKILL.md hold-row text move together (a comment-channel exit silently expired for 2 days) #10403 closed the old body-only gap).
  • H14 #10749 — targeted by 1 open card(s)' Blocked-by: line, body or comment ([finding] sys_approval_request.payload_json's doc comment claims notifications render from the snapshot — measured false against all 12 notify call sites #11041), but NOT carrying pm:blocking — a real unblocker the selection order cannot see. The label is the derived cache that makes a card outrank everything but priority:p0; without it this card competes on age alone while the cards waiting on it cannot start. Report-only: the remedy is the triage sweep's derivation pass applying the label, never a hand-applied one.
  • H2 #10757 — assignee set but no claim comment on the thread
  • H13 #10792domain:* with no pm-state label and ~25h without activity (threshold 2h) — routing landed, the state machine never did, so the card is invisible to every seat's candidate query. A half-state older than one sweep cycle is a defect of the healing loop (triage sweep disjunct ③), not inventory: pair the domain label with its pm-state in one write, oldest first.
  • H14 #10933 — targeted by 1 open card(s)' Blocked-by: line, body or comment ([finding] The scaffolded pnpm-workspace.yaml has no packages: key, so pnpm 10.0.0 refuses the install outright — "ERROR packages field missing or empty" #10497), but NOT carrying pm:blocking — a real unblocker the selection order cannot see. The label is the derived cache that makes a card outrank everything but priority:p0; without it this card competes on age alone while the cards waiting on it cannot start. Report-only: the remedy is the triage sweep's derivation pass applying the label, never a hand-applied one.
  • H19 #10938pm:blocked and 1 of 1 Blocked-by: target(s) could NOT be resolved this sweep (objectstack-ai/cloud#944 (HTTP 404)) — so whether this block has outlived its blocker is UNJUDGED, not confirmed. Unread is not still-open (check:react-declaration-parity 是唯一没接进任何 workflow 的源码审计门禁,且无 MANIFEST 时静默 skip 退出 0 —— 它现在永远不可能红 #4690): a target dropped in silence reads as a healthy block forever, which is the exact failure this item exists to end, so it is named here instead. A cross-repo target resolves when its repo answers this sweep's credential; the status is reported and the cause is not guessed at (a 404 is equally an unreachable repo and a number that does not exist). Report-only, and the release is NOT this script's to make: the state model gives it two mechanical double-checks (pm:blocked/pm:on-hold row, 「放行双查」) — ① release only against the condition carried by the MOST RECENT conversion comment, never an earlier blocker on the thread (a condition already spent, re-fired, reinstates an expired premise as the current one), and ② refuse to release when the card carries a MERGED PR newer than that conversion comment (the card moved on after the condition was written, so the cited fact can be true and no longer current). This row surfaces the candidate; the unlock sweep releases it — ⛔ never a label written from this script.
  • H19 #10966pm:blocked while 1 of 1 Blocked-by: target(s) — read from body OR comment — is CLOSED (#10486 (closed 2026-08-22T02:44:02Z)): the block has outlived its blocker. Nothing else here asks this question — H4 asks whether the line EXISTS, H14 asks the REVERSE index — so an expired block sits with a well-formed line, a correct label and no row anywhere: one measured card sat ~4.5h past its blocker's close and was found only by a human walking the graph, another was released only by a manual triage pass. Every target it names is closed: nothing this card declared a wait on is still running. Report-only, and the release is NOT this script's to make: the state model gives it two mechanical double-checks (pm:blocked/pm:on-hold row, 「放行双查」) — ① release only against the condition carried by the MOST RECENT conversion comment, never an earlier blocker on the thread (a condition already spent, re-fired, reinstates an expired premise as the current one), and ② refuse to release when the card carries a MERGED PR newer than that conversion comment (the card moved on after the condition was written, so the cited fact can be true and no longer current). This row surfaces the candidate; the unlock sweep releases it — ⛔ never a label written from this script.
  • H2 #10995 — assignee set but no claim comment on the thread
  • H14 #11025 — targeted by 1 open card(s)' Blocked-by: line, body or comment (os g agent scaffolds into a surface ADR-0063 withdrew, and there is no generator for skills — the one that replaced it #10359), but NOT carrying pm:blocking — a real unblocker the selection order cannot see. The label is the derived cache that makes a card outrank everything but priority:p0; without it this card competes on age alone while the cards waiting on it cannot start. Report-only: the remedy is the triage sweep's derivation pass applying the label, never a hand-applied one.
  • H14 #11029pm:blocking carried while no open card's Blocked-by: line — body OR comment — targets it, judged against the two-channel index — a stale derived cache, scoped to THIS REPO ONLY: no dependent found in this repo; cross-repo dependents are not swept, so this is not a claim of exhaustiveness over the population — Blocked-by: edges are legally cross-repo. The label is not a state a seat sets: the triage sweep derives it from the Blocked-by: reverse index, and the lane selection order ranks it second only to priority:p0. So a stale one is worse than an absent one — it boosts a card nothing depends on, with authority. Report-only: verify cross-repo dependents before the triage sweep's derivation pass drops the label (or the missing Blocked-by: line landing on the card that really is waiting), never a label written from this script.

On-hold trigger-file index (H17)

Before dispatching, intersect your dispatch's file surface against this list and NAME any card it hits in the dispatch brief. These are the trigger files open holds declare — the opportunistic-restart mechanism (maintainer-accepted 2026-08-11) whose intersection was measured at 0-for-19 while it lived only as a remembered protocol step (#10034). Report-only: a card here is a hold in good standing, never a finding. Extraction is deterministic — every path shown is a tracked file; anything unverifiable was dropped rather than guessed, so this list under-reports and never invents. (read on 69 of 69 open pm:on-hold card(s); 6397 tracked file(s) in the oracle.)

  • #6009packages/drivers/driver-sql/src/sql-driver.ts
  • #6736packages/plugins/plugin-sharing/src/sharing-service.ts
  • #7401packages/plugins/plugin-security/src/security-plugin.ts
  • #7898packages/core/src/security/auth-gate.ts, packages/runtime/src/http-dispatcher.ts
  • #8345packages/services/service-analytics/src/analytics-service.ts, packages/spec/src/data/currency-fraction-digits.ts, packages/spec/src/data/field.zod.ts
  • #8346docs/PLATFORM_GAPS_FROM_TEMPLATES.md, packages/spec/src/ui/view.zod.ts
  • #8347packages/client/src/realtime-api.ts, packages/runtime/src/http-dispatcher.ts
  • #8740packages/drivers/driver-sql/src/sql-driver.ts
  • #8897scripts/check-durability-degradation-log-level.mjs
  • #8966content/docs/deployment/meta.json, content/docs/meta.json
  • #9089package.json
  • #9139packages/lint/src/data-model-rules.ts, packages/lint/src/validate-security-posture.test.ts
  • #10062packages/services/service-datasource/src/sqlite-driver-fallback.ts, packages/services/service-datasource/tsup.config.ts
  • #10572examples/app-todo/package.json
  • #10666scripts/eslint-fatal-guard.mjs
  • #10694scripts/check-cross-package-test-inputs.mjs

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions