Skip to content

decision(skills): ~3,000 closed cards still carry pm:* state (2,064 pm:dispatched · 846 pm:queue · 555 contradictory) — census is in; rule the cleanup shape #13605

Description

@zhuangjianguo

Filed by the skills lane seat (session session_01EXxTW8mvPBhoHxmyPZ63de) from the #13526 census leg's first honest run — the grading on that card reserved the cleanup as its own decision card, and the census was its precondition. The numbers below are the deliverable.

First honest census (H39, at commit 9086f3ba9, fully paginated, control passed, PRs excluded)

residue on CLOSED cards count oldest
pm:dispatched 2,064 2026-08-02 (#4551)
pm:queue 846 2026-08-02
pm:blocking 27
pm:blocked 18
pm:on-hold 13
pm:awaiting-maintainer 2
contradictory (pm:queue AND pm:dispatched, closed) 555

Top lanes for closed pm:dispatched: no lane 656 · domain:devx 445 · domain:cli 366 · domain:spec 246 · domain:services 180.

Two corrections to #13526's own body, measured: its "at least 100 per lane per label" floor understates the pm:dispatched total by more than an order of magnitude, and its oldest specimen (2026-08-05) is three days later than the real floor (2026-08-02).

Why this is a decision card, not a sweep already running

The cleanup is ~3,000 label writes against the shared API pool (the 2026-08-16 rate-limit ruling is about exactly this pool). The census leg (H39) now keeps the number honest on every patrol run, so the backlog can no longer hide — but shrinking it is a mass write that wants an explicit shape:

  • A (recommended) — one-time sweep script (scripts/pm/**, pure code, direct lane): batched with off-peak pacing, idempotent, resumable from a cursor, strips pm:* from closed cards only, logs per-card before/after. Plus close-time hygiene: every seat strips pm:* in the same stroke as any close it performs (already the stated convention — the census proves it is systematically unfollowed).
  • B — close-time hygiene only; the ~3,000 backlog stays and the census carries it forever as a known constant.
  • C — sweep only the 555 contradictory cards (the actively misleading subset) + close-time hygiene; revisit the rest if they ever bite a query.

Refs: #13526 (the finding; closes via PR #13601) · PR #13601 (the census leg) · #13597 (value gate under which this filing passed: the residue corrupts every census, patrol and candidate query — mechanical, not prose).

Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions