From 66f3f154accb598c16f8cfdeba07d8334c631c21 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 30 Oct 2026 08:43:43 +0000 Subject: [PATCH 1/2] chore(pm): run the mailbox-open self-test in CI and pin the roster's fixture lanes to its lane-word lists check:pm-record-recognisers now chains node scripts/pm/mailbox-open.mjs --self-test, so the reserved-lane refusal and the lane-word lists it exports are exercised by the existing lint job. fleet-roster.mjs --self-test asserts that every lane in its fixture is a kind or bare word from SEAT_LANE_KINDS / SEAT_BARE_LANES, read through the imported module rather than re-spelled. Fixes #27997 Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_016WV4cxhQA7zwJ62YFCW4fH --- package.json | 2 +- scripts/pm/fleet-roster.mjs | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 34597113ade..2ad1593922a 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "check:declared-population-live": "node scripts/check-declared-population-live.mjs --self-test && node scripts/check-declared-population-live.mjs", "check:pm-half-states": "node scripts/pm/check-half-states.mjs --self-test", "check:issue-citations": "node scripts/check-issue-citations.mjs --self-test", - "check:pm-record-recognisers": "node scripts/pm/record-recognisers.mjs --self-test && node scripts/pm/check-owed-reviews.mjs --self-test", + "check:pm-record-recognisers": "node scripts/pm/record-recognisers.mjs --self-test && node scripts/pm/check-owed-reviews.mjs --self-test && node scripts/pm/mailbox-open.mjs --self-test", "check:pm-prior-rulings": "node scripts/pm/check-prior-rulings.mjs --self-test", "check:pm-stale-finding": "node scripts/pm/sweep-stale-finding.mjs --self-test", "check:pm-write-pace": "node scripts/pm/write-pace.mjs --self-test", diff --git a/scripts/pm/fleet-roster.mjs b/scripts/pm/fleet-roster.mjs index ef558f6ba82..f9137f8ef83 100644 --- a/scripts/pm/fleet-roster.mjs +++ b/scripts/pm/fleet-roster.mjs @@ -551,7 +551,7 @@ const SELF_TEST_BATTERIES = Object.freeze({ 'arguments: modes and every refusal': 9, 'seat titles: lane, seat, repo, status, account, project': 13, 'wall notes, closing refs, verdicts and mailboxes': 13, - 'the fixture snapshot: rows for the three repos': 17, + 'the fixture snapshot: rows for the three repos': 18, 'the rendered body: marker, columns, footer, determinism': 9, 'refusing to overwrite what is not the roster': 6, 'the CLI: fixture runs offline, usage errors are exit 2': 6, @@ -646,6 +646,8 @@ async function selfTest() { 'objectui:domain:ui:1', 'objectui:domain:ui:4', ]); + const laneListed = (lane) => (lane.includes(':') ? mailboxOpen.SEAT_LANE_KINDS.includes(lane.slice(0, lane.indexOf(':'))) : mailboxOpen.SEAT_BARE_LANES.includes(lane)); + t('every fixture lane is a kind or bare word from the opener\'s lane-word lists — imported, not re-spelled', [...new Set(rows.map((r) => r.lane))].map((lane) => `${lane}:${laneListed(lane)}`), ['repo:hotcrm:true', 'domain:devx:true', 'domain:skills:true', 'triage:true', 'domain:ui:true']); t('the non-seat issue in the seat list is skipped', rows.some((r) => r.post === 999), false); t('today’s three seats carry the right accounts', [row(19287).account, row(6023).account, row(1353, 'objectstack-ai/hotcrm').account], ['os-elon-musk', 'os-elon-musk', 'os-elon-musk']); t('devx seat 1: its assigned dispatched card, not seat 2’s', row(6023).inFlight, [{ repo: 'objectstack-ai/objectstack', number: 25416 }]); From 9ab7fe7f0079558dd9290cfee1e0f58365571be7 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 30 Oct 2026 09:16:13 +0000 Subject: [PATCH 2/2] chore(pm): run the fleet-roster self-test in the same CI chain The lane-word pin added to fleet-roster.mjs --self-test ran in no package script or workflow, so chain it into check:pm-record-recognisers beside the mailbox-open self-test. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_016WV4cxhQA7zwJ62YFCW4fH --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2ad1593922a..4e9d2ee338e 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "check:declared-population-live": "node scripts/check-declared-population-live.mjs --self-test && node scripts/check-declared-population-live.mjs", "check:pm-half-states": "node scripts/pm/check-half-states.mjs --self-test", "check:issue-citations": "node scripts/check-issue-citations.mjs --self-test", - "check:pm-record-recognisers": "node scripts/pm/record-recognisers.mjs --self-test && node scripts/pm/check-owed-reviews.mjs --self-test && node scripts/pm/mailbox-open.mjs --self-test", + "check:pm-record-recognisers": "node scripts/pm/record-recognisers.mjs --self-test && node scripts/pm/check-owed-reviews.mjs --self-test && node scripts/pm/mailbox-open.mjs --self-test && node scripts/pm/fleet-roster.mjs --self-test", "check:pm-prior-rulings": "node scripts/pm/check-prior-rulings.mjs --self-test", "check:pm-stale-finding": "node scripts/pm/sweep-stale-finding.mjs --self-test", "check:pm-write-pace": "node scripts/pm/write-pace.mjs --self-test",