Skip to content

Correct the browser suite's cost with the measured CI number - #224

Merged
wormeyman merged 1 commit into
wormeyman-space-age-supportfrom
fix/ci-suite-timing
Aug 12, 2026
Merged

Correct the browser suite's cost with the measured CI number#224
wormeyman merged 1 commit into
wormeyman-space-age-supportfrom
fix/ci-suite-timing

Conversation

@wormeyman

Copy link
Copy Markdown
Collaborator

Follow-up to #223, correcting a number I got wrong in it.

Six places asserted the e2e job takes five minutes. The first push run measured it at 774s — just under thirteen — against 4.6 minutes locally:

Playwright:              success  774s
checks:                  success   46s
Rust exporter:           success   42s
Rust exporter (Windows): success   98s
Deploy to Cloudflare:    success   49s

A GitHub runner is about 2.8x slower at this than an M-series laptop. All six figures came from extrapolating the local run rather than measuring, hours before there was anything to measure.

Why it matters beyond tidiness

The deploy gate. deploy waits on e2e now, so a deploy that used to start after 46s of checks waits about thirteen minutes — 2.6x the price the comment quoted for that line. That is the number to weigh if the gate ever stops looking worth it, and it should be the real one.

What does not change

Nothing behaves differently. timeout-minutes: 30 was loose enough to survive being wrong, which is luck rather than judgement — so it now says why it stays 30 instead of implying it was derived from a doubled local run.

Files: .github/workflows/ci.yml (three), CLAUDE.md, zoomLevels.ts, zoomLevels.test.ts, blueprint-files.test.ts.

Verified: vp check . clean; no five minutes claim remains anywhere; deploy needs: ['checks', 'e2e'] and e2e timeout: 30 unchanged in the parsed YAML.

🤖 Generated with Claude Code

https://claude.ai/code/session_017Dbza77QEZnkqt1mGssY71

Six places asserted the e2e job takes "five minutes". The first push run
measured it at 774s - just under thirteen - against 4.6 minutes locally. A
GitHub runner is about 2.8x slower at this than an M-series laptop, and every
one of those six figures was written by extrapolating from the laptop hours
earlier rather than by measuring.

The one that matters is the deploy gate: `deploy` now waits on this job, so a
deploy that used to start after 46s of `checks` waits about thirteen minutes,
not five. That is 2.6x the price the comment quoted for the line, and it is
the number to weigh if the gate ever stops looking worth it.

Nothing behaves differently - timeout-minutes: 30 was sized loosely enough to
survive being wrong, which is luck rather than judgement and is now stated as
the reason it stays 30.

A figure in a comment is a measurement with a date on it. These had one, and
it was a guess.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Dbza77QEZnkqt1mGssY71
@wormeyman
wormeyman merged commit 4c2e760 into wormeyman-space-age-support Aug 12, 2026
9 checks passed
@wormeyman
wormeyman deleted the fix/ci-suite-timing branch August 12, 2026 23:27
wormeyman added a commit that referenced this pull request Aug 12, 2026
The four legs on this job's own first run: 201/187/192/213s wall clock, of
which 160/144/144/153 were specs. So 774s becomes 213 - the slowest leg is
the wall clock, not the mean - a 3.6x speedup for 561s saved, and the deploy
behind it waits three and a half minutes rather than thirteen.

The prediction in the previous commit was wrong in a way worth keeping. It
said to expect lopsided shards, reasoning that Playwright splits by test count
while the corpus-wide specs dwarf the rest. Measured, the legs land within 11%
of each other. The reasoning was sound and the answer was not, which is the
usual argument for measuring.

Also fixes CLAUDE.md's deploy-cost sentence, which #224 missed while
correcting six others. It has now carried a wrong number twice - "five
minutes" guessed from a laptop, then thirteen once #224 corrected everything
around it - so it now says to believe ci.yml and re-measure if the two ever
disagree. A sentence that has been wrong twice is worth annotating rather than
just correcting.

Swept the whole tree for stale minute-claims afterwards rather than trusting
one grep pattern, which is how the miss happened.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Dbza77QEZnkqt1mGssY71
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant