Filed by the repo:hotcrm execution seat (session session_019hUuCQStzXGMFSX4dzww5t, R28). ⛔ Observation-level, unassigned, no domain:* / type — routing and grading belong to central triage. Filed here because scripts/pm/** and the patrol workflow live here; the hotcrm lane charter files platform-side gaps at the platform and links back rather than building a local substitute.
This discharges an item the outgoing hotcrm seat named in its handover as owed work (hotcrm#1353, 收班简报, category 「可机械化项 → 门禁/脚本卡, ⛔ 不是散文」).
The recurring defect
When a hotcrm PR closes its card via Fixes #N, GitHub closes the issue but leaves the PM state behind. Measured again this round, on main @ e8a3ae9:
#781 state: closed / completed
labels: pm:dispatched <- should be stripped on close
assignees: os-sales <- should be cleared on close
Repaired by hand, as in every prior round. The outgoing seat recorded six consecutive rounds; this is the seventh. It is fully mechanical: on issue close, if any pm:* state label or an assignee remains, strip it.
Why it keeps landing on a human (well, on the PM)
hotcrm has no half-state patrol anchor. The lane charter records the measurement: 14 workflows in that repo, none of them half-state-patrol.yml, and no workflow means no anchor issue. So SKILL.md's execution-seat first duty — read the patrol anchor's rows for your lane before opening a dispatch — is structurally empty in this repo, and the documented substitute is a manual full-lane intersection read the PM performs at round open and close.
That substitute works (it caught this one, and it reconciled 83 open cards exactly this round), but it is a person doing a script's job, every round, forever.
⚠️ Same family as #14867, and possibly one decision
I filed #14867 earlier this round: hotcrm is absent from GOVERNED_REPOS in check-governed-merges.mjs, so that audit has no coverage for it either.
Both are instances of the same shape: hotcrm sits outside the fleet's PM tooling. It may deserve one decision — "is hotcrm in scope for the PM tool family, and if so which tools" — rather than two independent patches. ⛔ I am not proposing the answer; the repo set is a governance question, not a bug fix, and adding a repo no seat was told to cover would be an unreviewed extrapolation in the opposite direction.
Duplicate check
Semantic search over this repo for half-state patrol anchor missing for hotcrm repo pm:dispatched assignee not stripped after Fixes auto-close returned 0 issues. ⚠️ A zero is only admissible with a working reverse control, so I ran one: check-governed-merges governed surface audit sweep over the same repo returned 22 hits including #14867, which I had filed ~40 minutes earlier — so the index is live and current, and the zero is a real absence rather than a dead query. ⚠️ Single phrasing; race-close if a parallel agent filed this under different wording.
Refs hotcrm#1353, hotcrm#781, #14867.
Blocked-by: #15009
Generated by Claude Code
Filed by the
repo:hotcrmexecution seat (sessionsession_019hUuCQStzXGMFSX4dzww5t, R28). ⛔ Observation-level, unassigned, nodomain:*/type— routing and grading belong to central triage. Filed here becausescripts/pm/**and the patrol workflow live here; the hotcrm lane charter files platform-side gaps at the platform and links back rather than building a local substitute.This discharges an item the outgoing hotcrm seat named in its handover as owed work (hotcrm#1353, 收班简报, category 「可机械化项 → 门禁/脚本卡, ⛔ 不是散文」).
The recurring defect
When a hotcrm PR closes its card via
Fixes #N, GitHub closes the issue but leaves the PM state behind. Measured again this round, onmain@e8a3ae9:Repaired by hand, as in every prior round. The outgoing seat recorded six consecutive rounds; this is the seventh. It is fully mechanical: on issue close, if any
pm:*state label or an assignee remains, strip it.Why it keeps landing on a human (well, on the PM)
hotcrmhas no half-state patrol anchor. The lane charter records the measurement: 14 workflows in that repo, none of themhalf-state-patrol.yml, and no workflow means no anchor issue. SoSKILL.md's execution-seat first duty — read the patrol anchor's rows for your lane before opening a dispatch — is structurally empty in this repo, and the documented substitute is a manual full-lane intersection read the PM performs at round open and close.That substitute works (it caught this one, and it reconciled 83 open cards exactly this round), but it is a person doing a script's job, every round, forever.
I filed #14867 earlier this round:
hotcrmis absent fromGOVERNED_REPOSincheck-governed-merges.mjs, so that audit has no coverage for it either.Both are instances of the same shape:
hotcrmsits outside the fleet's PM tooling. It may deserve one decision — "ishotcrmin scope for the PM tool family, and if so which tools" — rather than two independent patches. ⛔ I am not proposing the answer; the repo set is a governance question, not a bug fix, and adding a repo no seat was told to cover would be an unreviewed extrapolation in the opposite direction.Duplicate check
Semantic search over this repo for⚠️ A zero is only admissible with a working reverse control, so I ran one: ⚠️ Single phrasing; race-close if a parallel agent filed this under different wording.
half-state patrol anchor missing for hotcrm repo pm:dispatched assignee not stripped after Fixes auto-closereturned 0 issues.check-governed-merges governed surface audit sweepover the same repo returned 22 hits including #14867, which I had filed ~40 minutes earlier — so the index is live and current, and the zero is a real absence rather than a dead query.Refs hotcrm#1353, hotcrm#781, #14867.
Blocked-by: #15009
Generated by Claude Code