Skip to content

Commit 1281c79

Browse files
committed
docs(pm-dispatch): H74 exempts the platform-checklist watchdog anchor by its identity label
Contract review r1's one should-fix. `fleet-patrols.yml` files its platform-checklist watchdog anchor as `pm:queue,tooling` under an App author with the title `check:platform-checklist is red on main`, which the main-red title regex does not open (no colon before `red on main`), so the anchor stayed in H74's population. It is now exempt by its identity label `platform-checklist-watchdog`, the way `queue-flake-anchor` is, because the identity label is the machine's and is never graded off while a title is one template's wording. Census of every `.github/workflows/**` template that files a card: this is the only one that applies `pm:queue` on create; the nightly-tiers and scheduled full-run cards file without it (the full-run refresh may re-queue an unassigned card) and their titles open `: red on main`. The battery pins the anchor as filed beside the same card without its identity label, which still fires. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WGufzgjcGBFsSmg6tHbbJq
1 parent bea5334 commit 1281c79

1 file changed

Lines changed: 24 additions & 6 deletions

File tree

‎scripts/pm/check-half-states.mjs‎

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8154,9 +8154,20 @@ export function isTriageRulingComment(body) {
81548154
export const H74_POPULATION_LABELS = Object.freeze(['pm:queue', 'pm:blocked']);
81558155

81568156
/**
8157-
* Exempt by label — the filing card's own list. Tracking anchors, epics, seat
8158-
* posts, QA runs, parked cards and merge-queue flake anchors are never
8159-
* first-touched the way a lane card is, so their silence is the design.
8157+
* Exempt by label — the filing card's own list, plus the one in-tree anchor
8158+
* template that is filed AS `pm:queue` and whose title the main-red regex
8159+
* below does not open: `fleet-patrols.yml`'s platform-checklist watchdog
8160+
* (title `check:platform-checklist is red on main`, routing labels
8161+
* `pm:queue,tooling`, identity label `platform-checklist-watchdog`). Read by
8162+
* its identity label the way `queue-flake-anchor` is, because the identity
8163+
* label is the machine's and is never graded off, while the title is one
8164+
* template's wording. Tracking anchors, epics, seat posts, QA runs, parked
8165+
* cards and both machine anchors are never first-touched the way a lane card
8166+
* is, so their silence is the design. Census 2026-11-03 of every
8167+
* `.github/workflows/**` template that files a card: only this one applies
8168+
* `pm:queue` on create (`test-nightly-tiers.yml` and the scheduled full-run
8169+
* card file without it — the full-run refresh may re-queue an unassigned card —
8170+
* and both titles open `: red on main`, which the regex below reads).
81608171
*/
81618172
export const H74_EXEMPT_LABELS = Object.freeze([
81628173
TRACKING_ANCHOR_LABEL,
@@ -8165,6 +8176,7 @@ export const H74_EXEMPT_LABELS = Object.freeze([
81658176
'qa-run',
81668177
'status:parked',
81678178
'queue-flake-anchor',
8179+
'platform-checklist-watchdog',
81688180
]);
81698181

81708182
/**
@@ -8324,7 +8336,7 @@ export function h74QueuedWithoutTriageAudit(issue, commentBodies, parent) {
83248336
'audit` on the triage mailbox in the same round (`record-recognisers.mjs --mailbox-keys` prints the shape) ' +
83258337
'— ⛔ never a silent wait, and never a report to the maintainer in the mailbox\'s place. Report-only: ⛔ ' +
83268338
'never a label, comment or body written from this script. Exempt by design: `tracking`, `pm:epic`, ' +
8327-
'`pm:seat`, `qa-run`, `status:parked` and `queue-flake-anchor` carriers; a non-fleet card (human ' +
8339+
'`pm:seat`, `qa-run`, `status:parked`, `queue-flake-anchor` and `platform-checklist-watchdog` carriers; a non-fleet card (human ' +
83288340
'author, no seat signature); a main-red anchor card; a sub-issue inheriting its parent\'s domain or grade.'
83298341
);
83308342
}
@@ -28637,7 +28649,7 @@ async function selfTest() {
2863728649
b(BATTERY74, 'H74 thread states: UNREADABLE fires UNJUDGED, never clean', row74(null).startsWith(UNJUDGED_MARKER) && isUnjudgedFinding(row74(null)) && row74(null).includes('not empty'), true);
2863828650
b(BATTERY74, 'H74 population: `pm:blocked` is spoken about too, and the row names it', row74([], { labels: [{ name: 'pm:blocked' }, { name: 'domain:spec' }] }).startsWith('`pm:blocked` with'), true);
2863928651
b(BATTERY74, '⛔ H74 population: a `pm:dispatched` card is out of scope (its claim is H2\'s subject)', h74([], { labels: [{ name: 'pm:dispatched' }, { name: 'domain:spec' }] }), null);
28640-
for (const exempt of ['tracking', 'pm:epic', 'pm:seat', 'qa-run', 'status:parked', 'queue-flake-anchor']) {
28652+
for (const exempt of ['tracking', 'pm:epic', 'pm:seat', 'qa-run', 'status:parked', 'queue-flake-anchor', 'platform-checklist-watchdog']) {
2864128653
b(BATTERY74, `⛔ H74 exempt: a \`${exempt}\` carrier is silent`, h74([], { labels: [{ name: 'pm:queue' }, { name: exempt }] }), null);
2864228654
}
2864328655
b(BATTERY74, 'H74 exempt control: the same card with an unrelated label beside `pm:queue` still fires', typeof h74([], { labels: [{ name: 'pm:queue' }, { name: 'tooling' }] }), 'string');
@@ -28669,7 +28681,13 @@ async function selfTest() {
2866928681
b(BATTERY74, 'H74 inherit reader: a null, undefined or sentinel parent inherits nothing, never a crash', [h74InheritsFromParent(card74(), null), h74InheritsFromParent(card74(), undefined), h74InheritsFromParent(card74(), H74_PARENT_UNREADABLE), h74InheritsFromParent(card74(), { labels: undefined })].some(Boolean), false);
2867028682
b(BATTERY74, '⛔ H74 population: a closed card, a PR row, an unreadable `labels` and a missing row are all silent, none a crash', [h74([], { state: 'closed' }), h74([], { pull_request: {} }), h74([], { labels: undefined }), h74QueuedWithoutTriageAudit(undefined, [])].every((v) => v === null), true);
2867128683
b(BATTERY74, 'H74 population: a null body is no crash and no record — the card still fires on an empty thread', typeof h74([], { body: null }), 'string');
28672-
b(BATTERY74, 'H74 exempt list: the constant carries exactly the filing card\'s six labels', [...H74_EXEMPT_LABELS].sort().join(), ['pm:epic', 'pm:seat', 'qa-run', 'queue-flake-anchor', 'status:parked', 'tracking'].join());
28684+
b(BATTERY74, 'H74 exempt list: the constant carries exactly the filing card\'s six labels plus the watchdog anchor\'s identity label', [...H74_EXEMPT_LABELS].sort().join(), ['platform-checklist-watchdog', 'pm:epic', 'pm:seat', 'qa-run', 'queue-flake-anchor', 'status:parked', 'tracking'].join());
28685+
// The watchdog anchor as fleet-patrols.yml files it: App author, `pm:queue,tooling` routing, identity label. Its
28686+
// title does NOT open the main-red regex (no colon before `red on main`), so the identity label is what exempts it.
28687+
const WATCHDOG74 = { title: 'check:platform-checklist is red on main', user: APP74, body: 'os-platform-checklist-watchdog\n\nThe gate is red on main.' };
28688+
b(BATTERY74, '⛔ H74 exempt: the platform-checklist watchdog anchor is silent by its identity label', h74([], { ...WATCHDOG74, labels: [{ name: 'platform-checklist-watchdog' }, { name: 'pm:queue' }, { name: 'tooling' }] }), null);
28689+
b(BATTERY74, 'H74 exempt control: the same card WITHOUT the identity label is in the population — the title alone does not exempt it', typeof h74([], { ...WATCHDOG74, labels: [{ name: 'pm:queue' }, { name: 'tooling' }] }), 'string');
28690+
b(BATTERY74, 'H74 exempt control: …because its title does not open the main-red regex', H74_MAIN_RED_ANCHOR_TITLE.test(WATCHDOG74.title), false);
2867328691
b(BATTERY74, 'H74 text: no angle-bracket fragment and no tracker number — the row is written into a GitHub issue', /[<>]/.test(row74([])) || /#[0-9]/.test(row74([])) || /[<>]/.test(row74(null)) || /#[0-9]/.test(row74(null)), false);
2867428692
b(BATTERY74, 'H74 text: names both remedies — the triage first touch and the lane\'s bell — and the report-only boundary', ['audit it in THIS round', '`Request: triage · #n · first-touch audit`', '--mailbox-keys', 'never a label, comment or body written'].every((x) => row74([]).includes(x)), true);
2867528693
b(BATTERY74, 'H74 summary: the coverage pair is reported', saidBy('h74Audit', summaryLine({ triageAuditCandidates: 15, triageAuditProbed: 15 }, 0)).includes('comment threads read on 15 of 15 body-clean'), true);

0 commit comments

Comments
 (0)