Skip to content

chore(ci): give browser proof headroom with fresh weights, a 20-minute bound and three shards - #2415

Merged
schlessera merged 4 commits into
mainfrom
chore/2414-browser-weights
Oct 18, 2026
Merged

schlessera merged 4 commits into
mainfrom
chore/2414-browser-weights

Conversation

@schlessera

@schlessera schlessera commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Closes #2414

What changed

Browser proof gets more buffer three ways, per the maintainer's direction on #2414:

  • Refreshed weights. scripts/browser-shard-costs.json browser measurements now come from successful main run 39109891338, attempt 1 (7f22bb6ac, which includes the test(ui-react): separate narrow callout geometry and capture #2393 split), via bun scripts/refresh-browser-costs.ts 39109891338 1 browser. Layout costs and provenance are untouched.

  • 20-minute browser job bound (was 15), pinned by tests/ci-workflows.test.ts. Layout stays at 25.

  • Three browser shards (layout stays two). One table, PROOF_SHARDS in scripts/proof-shards.ts, now feeds:

    • retention: scripts/proof-reuse.ts receipt divisor, source job count, per-shard validation and pair lookup;
    • the weight refresh (scripts/refresh-browser-costs.ts);
    • the inclusion partition fingerprint (scripts/inclusion-inputs.ts);
    • a new workflow guard (scripts/check-ci-workflows.ts) that matches each domain's ci.yml matrix and --shard divisor.

    scripts/ci-proof.ts and scripts/browser-sequencer.ts already parse any --shard=M/N and are unchanged.

Why

Browser (2) drifted from #2366's 840 s bar to 887 s on main and 917 s cancelled on a ready PR. The weights-only refresh in this PR's first confirmation (run 39111465321) measured 845 s and 730 s. That is better, but still above the bar.

Scored by fresh weights, each shard's slowest project:

Shards Shard 1 Shard 2 Shard 3
2, old weights 564 s 628 s —
2, refreshed 573 s 573 s —
3, refreshed 482 s 482 s 482 s

That 482 s floor is navigation-reach.pointer.tsx in one rail project, the single heaviest file. A fourth shard gives nothing more. Splitting that file is the next lever and is out of scope here.

Validation

  • bun run check:pr --base origin/main at d4cc90500 on 268b76ba6: 957 fast and 233 affected tests, all passing. Strict types pass.

  • Retention: a two-shard-era receipt ("shard":"1/2") is refused for browser (tests/proof-reuse.test.ts). Fixtures now derive their job and receipt counts from PROOF_SHARDS.

  • Refresh: browser measurements record every configured shard's job (tests/refresh-browser-costs.test.ts).

  • Guard controls (tests/ci-workflows.test.ts): a browser matrix of [1, 2], a browser /2 divisor, a layout /3 divisor and a layout [1, 2, 3] matrix are each rejected.

  • Mutation receipts, each restored byte-identically:

    Mutation Fails at
    Guard fail removed tests/ci-workflows.test.ts:354
    Guard skips the layout matrix only tests/ci-workflows.test.ts:359
  • Independent gpt-6-astra review: it verified retention integrity (three distinct jobs, exact M/3 receipts, partitions inside the fingerprint) and found the three-shard partition covers all 309 specs exactly once. Affected-only PRs still select whole domains, so no shard can be empty. Its two P3 findings are fixed: the missing layout-matrix control, and stale "two measured partitions" text in the decision record.

Gaps

No changeset: no shipped package files changed.

🤖 Generated with Claude Code

@schlessera schlessera added this to the 0.44.0 milestone Oct 18, 2026
@schlessera schlessera added type: chore Tooling, CI, release plumbing, dependencies. area: ci CI workflows, the gates they run, release scripts, packaging. labels Oct 18, 2026
schlessera and others added 4 commits October 18, 2026 10:54
Browser shard 2 drifted from the 840 s qualification bar to its 900 s
job bound (887 s on main 7f22bb6, 917 s cancelled on a ready PR).
Refresh measured weights from successful main run 39109891338 attempt
1, which includes the #2393 split. Scored by the fresh weights, the
slowest project per shard drops from 628 s to 573 s on both shards.

Closes #2414

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Browser shard 2 reached 887 s on main and 917 s on a ready PR against the
900 s bound; refreshed weights brought the slower shard to 845 s, still
above the 840 s qualification bar. The bound now leaves real buffer, and
a test pins it so it cannot shrink silently.

Refs #2414

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refreshed weights brought the slower browser shard to 845 s, above the
840 s bar. Scored by fresh weights, three shards bring each shard's
slowest project to 482 s, the cost of the single heaviest file.
Layout stays at two shards.

One table, PROOF_SHARDS in scripts/proof-shards.ts, now feeds retention
receipts and source validation, the weight refresh, the input-partition
fingerprint and a workflow guard that matches each domain's matrix and
--shard divisor. A receipt from the two-shard era names another
partition and is never admitted.

Refs #2414

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Also state that the inclusion fingerprint binds each domain's measured
partitions rather than two, and that layout keeps two shards.

Refs #2414

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@schlessera
schlessera marked this pull request as draft October 18, 2026 08:57
@schlessera schlessera changed the title chore(ci): refresh browser shard weights after the narrow callout split chore(ci): give browser proof headroom with fresh weights, a 20-minute bound and three shards Oct 18, 2026
@schlessera
schlessera force-pushed the chore/2414-browser-weights branch from ae70774 to d4cc905 Compare October 18, 2026 08:57
@schlessera
schlessera marked this pull request as ready for review October 18, 2026 08:58
@schlessera
schlessera merged commit c4d31c6 into main Oct 18, 2026
29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, the gates they run, release scripts, packaging. type: chore Tooling, CI, release plumbing, dependencies.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci: browser shard 2 drifted back to its 15-minute bound after the narrow callout split

1 participant