From 466f48d0ff01f959c137441ade67fb9da8b6d742 Mon Sep 17 00:00:00 2001 From: Test Date: Sat, 29 Aug 2026 06:58:55 +0000 Subject: [PATCH] =?UTF-8?q?fix(ci):=20first-live-run=20fixes=20=E2=80=94?= =?UTF-8?q?=20executor=20history=20+=20two=20environment-blind=20assertion?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The sliced lane's first run (PR #2721) did its job: the planner and report worked, the manifest governed, and every failure had a name. Three were fixable on the spot: - executor + gate-census checkouts get fetch-depth: 0 — files with SELF-derived selection (the LLM-judge map, routing) walk git at module load, and selection is deliberately fail-closed on git errors, so the shallow checkout crashed those shards ('ambiguous argument main...HEAD'). The manifest still governs WHICH shards run. - landscape --toc gate: the exact toBe(3) landscape-page count was font-metric-dependent (3 on Amazon Linux, 2 on ubuntu CI — the same disease the file's own page-index comment warns about). Now a comparative invariant: --toc must not CHANGE the landscape count vs a baseline render. - paid-run-manifest parse test builds its manifest under EVALS_ALL so it never walks git (proven with GIT_DIR=/nonexistent). Remaining first-run failures are newly-exposed rot in gate files that had never executed in CI (skillify D1 refusal, session-intelligence context-restore, one tpa-apple-ban retry flake) — being probed separately; they are the lane WORKING, not the lane failing. Co-Authored-By: Claude Fable 5 --- .github/workflows/evals-periodic.yml | 12 ++++++++++++ .github/workflows/evals.yml | 6 ++++++ make-pdf/test/e2e/landscape-gate.test.ts | 11 ++++++++++- test/paid-run-manifest.test.ts | 6 +++++- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.github/workflows/evals-periodic.yml b/.github/workflows/evals-periodic.yml index 98c68988e..9c168f01d 100644 --- a/.github/workflows/evals-periodic.yml +++ b/.github/workflows/evals-periodic.yml @@ -135,6 +135,12 @@ jobs: steps: - uses: actions/checkout@v7 with: + # Full history: files with SELF-derived selection (the LLM-judge + # map, routing) walk git at module load, and selection is + # fail-closed on git errors — a shallow checkout crashed those + # shards on the lane's first live run ("ambiguous argument + # 'main...HEAD'"). The manifest still governs WHICH shards run. + fetch-depth: 0 persist-credentials: false - name: Fix bun temp @@ -257,6 +263,12 @@ jobs: steps: - uses: actions/checkout@v7 with: + # Full history: files with SELF-derived selection (the LLM-judge + # map, routing) walk git at module load, and selection is + # fail-closed on git errors — a shallow checkout crashed those + # shards on the lane's first live run ("ambiguous argument + # 'main...HEAD'"). The manifest still governs WHICH shards run. + fetch-depth: 0 persist-credentials: false - name: Fix bun temp diff --git a/.github/workflows/evals.yml b/.github/workflows/evals.yml index d481e8f5f..f79612631 100644 --- a/.github/workflows/evals.yml +++ b/.github/workflows/evals.yml @@ -568,6 +568,12 @@ jobs: steps: - uses: actions/checkout@v7 with: + # Full history: files with SELF-derived selection (the LLM-judge + # map, routing) walk git at module load, and selection is + # fail-closed on git errors — a shallow checkout crashed those + # shards on the lane's first live run ("ambiguous argument + # 'main...HEAD'"). The manifest still governs WHICH shards run. + fetch-depth: 0 persist-credentials: false - name: Fix bun temp diff --git a/make-pdf/test/e2e/landscape-gate.test.ts b/make-pdf/test/e2e/landscape-gate.test.ts index 91c4f645d..a583fe65a 100644 --- a/make-pdf/test/e2e/landscape-gate.test.ts +++ b/make-pdf/test/e2e/landscape-gate.test.ts @@ -111,10 +111,19 @@ describe("landscape promotion gate", () => { if (!avail.ok) return; const workDir = fs.mkdtempSync("/tmp/make-pdf-landscape-toc-"); const outputPdf = path.join(workDir, "out.pdf"); + const baselinePdf = path.join(workDir, "baseline.pdf"); try { + // Comparative invariant, not an exact count: whether a wide table + // spills onto an extra landscape page depends on font metrics (the + // fixed `toBe(3)` passed on Amazon Linux and failed on ubuntu CI with + // 2 — the same disease the page-index comment above warns about). + // What --toc must not do is CHANGE the landscape promotion outcome. + generate([], baselinePdf); + const baselineLandscape = pageBoxes(baselinePdf).filter(isLandscape).length; + expect(baselineLandscape).toBeGreaterThanOrEqual(1); generate(["--toc"], outputPdf); const boxes = pageBoxes(outputPdf); - expect(boxes.filter(isLandscape).length).toBe(3); + expect(boxes.filter(isLandscape).length).toBe(baselineLandscape); const pdftotext = resolvePopplerTool("pdftotext")!; const text = execFileSync(pdftotext, [outputPdf, "-"], { encoding: "utf8", timeout: CHILD_TIMEOUT_MS }); diff --git a/test/paid-run-manifest.test.ts b/test/paid-run-manifest.test.ts index 402f63e24..0c2ffb196 100644 --- a/test/paid-run-manifest.test.ts +++ b/test/paid-run-manifest.test.ts @@ -68,7 +68,11 @@ describe('run manifest (planner)', () => { }); test('parse round-trips and rejects malformed manifests', () => { - const manifest = buildRunManifest({ tier: 'gate', sliceCount: 2, evalsAll: false, env: {} }); + // EVALS_ALL short-circuits diff selection BEFORE any git walk: selection + // is deliberately fail-closed on git errors, and CI's shallow free-tests + // checkout has no base ref (first CI run failed here with + // "ambiguous argument 'main...HEAD'"). + const manifest = buildRunManifest({ tier: 'gate', sliceCount: 2, evalsAll: false, env: { EVALS_ALL: '1' } }); expect(parseRunManifest(JSON.stringify(manifest))).toEqual(manifest); expect(() => parseRunManifest('{}')).toThrow(/version/); expect(() => parseRunManifest(JSON.stringify({ ...manifest, tier: 'e2e' }))).toThrow(/tier/);