test: count the design-draft paid file and defer marathon ids in PR selection pins

The discovered paid-file census grows by one (skill-e2e-office-hours-design-draft).
Full-fallback PR selection defers every non-gate id; the shared-input pins now
expect periodic and marathon ids there.
This commit is contained in:
garrytan committed 2026-09-29 15:37:55 +00:00
1 parent 2506c4728e
commit 05ffcaf9e2
2 files changed
+5 -4

No files matched your search

+1 -1
View File
@@ -135,7 +135,7 @@ test('live periodic census fits the declared CI wall including setup', () => {
test('registered allocation is deterministic and preserves every discovered file', () => { test('registered allocation is deterministic and preserves every discovered file', () => {
const files = collectPaidTestFiles(); const files = collectPaidTestFiles();
expect(files).toHaveLength(104); expect(files).toHaveLength(105);
expect(files).toContain('test/skill-e2e-ship-skip.test.ts'); expect(files).toContain('test/skill-e2e-ship-skip.test.ts');
const m = livePlan(files); const m = livePlan(files);
expect(livePlan([...files].reverse())).toEqual(m); expect(livePlan([...files].reverse())).toEqual(m);
+4 -3
View File
@@ -9,7 +9,8 @@ const sharedInputs = [
]; ];
const skipId = 'ship-skipped-queued-finding'; const skipId = 'ship-skipped-queued-finding';
const gateIds = Object.keys(E2E_TOUCHFILES).filter(id => E2E_TIERS[id] === 'gate').sort(); const gateIds = Object.keys(E2E_TOUCHFILES).filter(id => E2E_TIERS[id] === 'gate').sort();
const periodicIds = Object.keys(E2E_TOUCHFILES).filter(id => E2E_TIERS[id] === 'periodic').sort(); // Periodic and marathon cases are both deferred by the PR gate; only their lanes run them.
const deferredIds = Object.keys(E2E_TOUCHFILES).filter(id => E2E_TIERS[id] === 'periodic' || E2E_TIERS[id] === 'marathon').sort();
const judgeIds = Object.keys(LLM_JUDGE_TOUCHFILES).sort(); const judgeIds = Object.keys(LLM_JUDGE_TOUCHFILES).sort();
test.each(sharedInputs)('%s retains the full gate after native dependency registration', file => { test.each(sharedInputs)('%s retains the full gate after native dependency registration', file => {
@@ -19,7 +20,7 @@ test.each(sharedInputs)('%s retains the full gate after native dependency regist
expect(result.coverage?.mode).toBe('full-fallback'); expect(result.coverage?.mode).toBe('full-fallback');
expect(result.selection.e2e).toEqual(gateIds); expect(result.selection.e2e).toEqual(gateIds);
expect(result.selection.judges).toEqual(judgeIds); expect(result.selection.judges).toEqual(judgeIds);
expect(result.coverage?.deferred.map(({ id }) => id).sort()).toEqual(periodicIds); expect(result.coverage?.deferred.map(({ id }) => id).sort()).toEqual(deferredIds);
expect(result.coverage?.reasons).toContain(`Shared runtime/build inputs restore every gate case and judge: ${file}`); expect(result.coverage?.reasons).toContain(`Shared runtime/build inputs restore every gate case and judge: ${file}`);
expect(result.coverage?.needsFullValidation).toBe(false); expect(result.coverage?.needsFullValidation).toBe(false);
}); });
@@ -71,6 +72,6 @@ test('cumulative shared, native and prompt edits retain every gate case and judg
expect(result.coverage?.mode).toBe('full-fallback'); expect(result.coverage?.mode).toBe('full-fallback');
expect(result.selection.e2e).toEqual(gateIds); expect(result.selection.e2e).toEqual(gateIds);
expect(result.selection.judges).toEqual(judgeIds); expect(result.selection.judges).toEqual(judgeIds);
expect(result.coverage?.deferred.map(({ id }) => id).sort()).toEqual(periodicIds); expect(result.coverage?.deferred.map(({ id }) => id).sort()).toEqual(deferredIds);
expect(result.coverage?.needsFullValidation).toBe(false); expect(result.coverage?.needsFullValidation).toBe(false);
}); });