Filed by the triage seat (#6015), R+80, measured across R+78 · R+79 · R+80 of this shift. ⛔ Unassigned. ⛔ Held as finding for the skills seat to grade — that lane grades its own findings and this is its text.
The measurement
Three consecutive rounds enumerated every open issue and computed disjunct ① (cards with no pm:*, no needs-user-decision, no domain:*). All three rounds saw the same tail:
| round | bare | graded that round |
|---|
| R+78 | 37 | 4 |
| R+79 | 40 | 5 |
| R+80 | 40 | — |
33 cards appear in all three enumerations untouched. The oldest, #13804, has been bare ~10 hours. Every one of those rounds ran the sweep, reported it, and was correct.
⛔ Not #8561, and the difference is the whole point
#8561 (closed; PR #8638 landed) fixed seeing: a frontier defined as changed since last round never re-sees an untouched card, because its updated_at never advances. Its remedy — "predicate ① should be answered by a stock query, not a frontier" — is in force and is working. All three rounds above ran exactly that stock query and saw all 40 every time.
⇒ ⭐ These cards are not invisible. They are seen every round and never processed.#8561's own text draws precisely this line: "This is distinct from the drain problem (#8449): these cards were never seen, not seen-and-unprocessed."
⭐ And #8449 solved the drain problem — for the other box only
#8449 (closed completed; PR #8602 MERGED) rebuilt the findings pipeline on the maintainer's direct instruction 「还有这个积压时常态,是否应该优化」. It landed four clauses:
- metric swaps to ungraded count + median age of ungraded;
- first-touch grading every round, budget 3–5, prioritized over re-verifying old holds;
- auto-concentrated mode: ungraded >15 ⇒ the next fire runs a domain-batched round of 15–20;
- lane-evidence protocol.
⇒ ⚠️Disjunct ① received none of them. It has a stock query (#8561) and nothing that drains it. Concretely:
| finding box | 裸卡 (disjunct ①) |
|---|
| stock query each round | ✅ | ✅ (#8561) |
| ungraded metric in the brief | ✅ | ⛔ — not one of the four health indicators |
| first-touch every round | ✅ | ⛔ |
| auto-concentrated at a threshold | ✅ (>15) | ⛔ |
| ordering rule | oldest-first | ⚠️「新入卡①优先最新」 |
⭐ At 40 bare cards, #8449's >15 trigger would have fired five rounds ago — if it applied here.
Why the ordering rule turns a backlog into starvation
「新入卡① 优先最新」 is sound when the queue empties each round: newest-first minimises time-to-first-touch. When intake exceeds throughput it inverts — the seat only ever reads the arrivals, and the tail is never reached by construction. ⛔ Not a discretionary lapse: three rounds followed the rule exactly and produced this.
⇒ And the tail is the worst place to starve: those cards have been unseen-by-any-lane the longest.
⚠️ The cost is hidden severity, not latency — measured
R+79 graded five bare cards. Two came out p1:
⇒ ⛔ There is no reason to believe the 33 older cards are cleaner. They are simply older. A p1 sitting label-less is invisible to every lane's candidate query, so the queue hides severity, not just routing.
Suggested shape — ⛔ not a decision, and deliberately the cheapest one
Apply #8449's clauses 1–3 to disjunct ①, since they are already written, already ruled, and already proven on the sibling population:
- the round brief reports bare count + median age alongside the finding-box line;
- first-touch every round with a budget, ⛔ ordered oldest-first once a backlog exists (or explicitly: newest-first while the queue clears each round, oldest-first once it does not);
- an auto-concentrated threshold mirroring the >15 rule.
⚠️ ⛔ Not claimed: that the numbers (15, 3–5, 15–20) transfer unchanged — bare cards cost more per unit than findings (full read + route + grade + type), so the budget may need to differ. That is the skills seat's call.
What this round did about it, so the record is honest
R+80 read the oldest bare cards rather than the newest, on the standing 「P0 嫌疑先行」 clause — since which cards are p0-suspect is unknowable before reading, and the longest-hidden are the highest prior (R+79's two p1s are the evidence). ⛔ Recorded as this seat's ordering discretion inside its own sweep, ⛔ not a protocol change, which is why this card exists.
Dedup
search_issues including closed, on sweep/backlog/ordering/starvation wordings. Nearest: #8561 (seeing — distinguished above), #8449 (drain, findings only — this card's remedy source), #6405 (closed; the sweep predicate, i.e. which shapes count), #13765 (open; the capacity decision this feeds). ⛔ None is this. ⭐ Control: the same query returned 23 results, so the non-match is a reading.
Filed by the triage seat (#6015), R+80, measured across R+78 · R+79 · R+80 of this shift. ⛔ Unassigned. ⛔ Held as
findingfor the skills seat to grade — that lane grades its own findings and this is its text.The measurement
Three consecutive rounds enumerated every open issue and computed disjunct ① (cards with no
pm:*, noneeds-user-decision, nodomain:*). All three rounds saw the same tail:33 cards appear in all three enumerations untouched. The oldest,
#13804, has been bare ~10 hours. Every one of those rounds ran the sweep, reported it, and was correct.⛔ Not #8561, and the difference is the whole point
#8561 (closed; PR #8638 landed) fixed seeing: a frontier defined as changed since last round never re-sees an untouched card, because its
updated_atnever advances. Its remedy — "predicate ① should be answered by a stock query, not a frontier" — is in force and is working. All three rounds above ran exactly that stock query and saw all 40 every time.⇒ ⭐ These cards are not invisible. They are seen every round and never processed.#8561's own text draws precisely this line: "This is distinct from the drain problem (#8449): these cards were never seen, not seen-and-unprocessed."
⭐ And #8449 solved the drain problem — for the other box only
#8449 (closed
completed; PR #8602 MERGED) rebuilt the findings pipeline on the maintainer's direct instruction 「还有这个积压时常态,是否应该优化」. It landed four clauses:⇒⚠️ Disjunct ① received none of them. It has a stock query (#8561) and nothing that drains it. Concretely:
⭐ At 40 bare cards, #8449's >15 trigger would have fired five rounds ago — if it applied here.
Why the ordering rule turns a backlog into starvation
「新入卡① 优先最新」 is sound when the queue empties each round: newest-first minimises time-to-first-touch. When intake exceeds throughput it inverts — the seat only ever reads the arrivals, and the tail is never reached by construction. ⛔ Not a discretionary lapse: three rounds followed the rule exactly and produced this.
⇒ And the tail is the worst place to starve: those cards have been unseen-by-any-lane the longest.
R+79 graded five bare cards. Two came out p1:
rollbackToPackageCommittherefore plans the wrong set of reverts #13995 —rollbackToPackageCommitselects which commits to revert by lexicographic compare overDate.toString(), whose leading token is the weekday name; on Postgres/MySQL a destructive operation reverts the wrong set, systematically.migrate-sys-notification-to-eventwritesString(row.created_at)into the new timestamp columns — on Postgres/MySQL that is aDate.toString()spelling, not ISO #13998 — a one-way migration writesDate.toString()spellings into new timestamp columns on the production default drivers.⇒ ⛔ There is no reason to believe the 33 older cards are cleaner. They are simply older. A p1 sitting label-less is invisible to every lane's candidate query, so the queue hides severity, not just routing.
Suggested shape — ⛔ not a decision, and deliberately the cheapest one
Apply #8449's clauses 1–3 to disjunct ①, since they are already written, already ruled, and already proven on the sibling population:
What this round did about it, so the record is honest
R+80 read the oldest bare cards rather than the newest, on the standing 「P0 嫌疑先行」 clause — since which cards are p0-suspect is unknowable before reading, and the longest-hidden are the highest prior (R+79's two p1s are the evidence). ⛔ Recorded as this seat's ordering discretion inside its own sweep, ⛔ not a protocol change, which is why this card exists.
Dedup
search_issuesincluding closed, on sweep/backlog/ordering/starvation wordings. Nearest: #8561 (seeing — distinguished above), #8449 (drain, findings only — this card's remedy source), #6405 (closed; the sweep predicate, i.e. which shapes count), #13765 (open; the capacity decision this feeds). ⛔ None is this. ⭐ Control: the same query returned 23 results, so the non-match is a reading.