Proof runs for #259 (not for merging) #260

Closed
kayg wants to merge 8 commits from issue/11-proof-5 into dev
Owner

Not for merging. It proves #259: the same commits on dev at dff1833, before dev went red for reasons outside #259 (a deterministic pwa-update.spec.ts failure from #164, and cargo fmt in crates/notes/src/tests.rs). It's here to get three green web runs in a row while the agents build. The runs and their numbers go on #11. Closed once that's done.

🤖 Generated with Claude Code

https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T

Not for merging. It proves #259: the same commits on dev at `dff1833`, before dev went red for reasons outside #259 (a deterministic `pwa-update.spec.ts` failure from #164, and `cargo fmt` in `crates/notes/src/tests.rs`). It's here to get three green web runs in a row while the agents build. The runs and their numbers go on #11. Closed once that's done. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
The browser tests failed on every PR, the same tests on a commit that
was green before. Measured causes, and what changed:

- CI had no priority. Job containers sat in system.slice at the same
  weight as all the agents (user-1001's CPUWeight=20 is the only slice
  under user.slice, so it changed nothing). Now every job container is
  in ci.slice (weight 1000, ci/host/ci.slice; the runner passes
  --cgroup-parent=ci.slice).
- WebKit composites the glass with Mesa's software GL in the container.
  Each shader is compiled on first use on the compositor's one thread:
  a page's first frame took ~9 s at 1440, whatever the cores. The shader
  cache now lives in a volume kept between runs (~2.5 s warm).
- Four workers on CI instead of six, WebKit 1440 at two at a time, and
  the CPU-throttled layout checks (@throttled) alone after the rest.
- The settings tests get their own server and person: flipping the
  theme of the shared person repainted every other test's pages.
- Test bugs a busy machine exposed: the shortcut helper read a
  modifier's or an earlier key's answer; ⌘⇧; was checked in today's
  note, which other tests log into too; fixed sleeps before measuring
  are now still(), which waits for animations to end.
- Every server (web, primitives, mockup) listens on a port the system
  picks, so runs side by side never collide or reuse another run's
  server; the app is built once per run instead of four times at once.

ci/README.md has the host setup and the numbers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
Two web jobs at once split CI's share between eight browsers, and
WebKit's software drawing slowed until toasts timed out before they
could be clicked (run 107 of #147). A second runner with the label web
and capacity 1 takes only the web job; rust stays on the main runner, so
a web job never waits for a rust job that can't start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
Web e2e: the contrast check waits for a still screen, not 250 ms (#11)
Some checks failed
CI / rust (pull_request) Failing after 24s
CI / web (pull_request) Failing after 11m3s
08da50e230
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
Web e2e: the contrast check gets a person of its own; WebKit 1440 one at a time (#11)
Some checks failed
CI / web (pull_request) Successful in 9m52s
CI / rust (pull_request) Failing after 24s
7a6979735c
The contrast check photographs the lists, and other tests adding notes
moved the rows between finding the words and taking the picture (#159,
run 110: ratios of 1.4 for ordinary titles). It now runs on its own
server, like the settings tests; the server comes from the project's
metadata. WebKit 1440 frames with the glass open took 1-3 s each on a
busy machine, and two at once starved each other: one at a time, a test
averages 10 s instead of 16 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
CI: one WebKit test at a time per width; CPU time in the cost guard; one job per runner (#11)
Some checks failed
CI / web (pull_request) Failing after 17m25s
CI / rust (pull_request) Failing after 13s
2ad402fa80
WebKit 1440 alone still met three WebKit 390 workers: four software-drawn
browsers at once, and the first WebKit 1440 test ran out of time twice
(#177). Now one per width, and one in the primitives. hidden-cost.test.ts
timed buildHidden by the wall clock, which on a busy machine also counts
waiting for a core; it now measures CPU time. The main runner takes one
job at a time, and both runners finish running jobs on a restart
(ci/host/graceful.conf).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
CI: the web job waits for a queued rust job, and stops at once on a failed build (#11)
Some checks failed
CI / web (pull_request) Failing after 42m36s
CI / rust (pull_request) Failing after 34s
719510a019
Two proof runs failed waiting 15 minutes for a rust job still queued
behind other runs' jobs. The web job now waits up to 40 minutes, and the
rust job leaves a build-failed mark so a broken build ends the wait at
once. The web job's container outranks the rust build inside ci.slice
(--cpu-shares on the web runner, weight 532 to 100); the main runner
stays at two jobs so a run's rust job can always start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
CI: a server job the web job needs; job timeouts (#11, proof branch)
Some checks failed
CI / server (pull_request) Successful in 23s
CI / rust (pull_request) Failing after 8s
CI / web (pull_request) Has been cancelled
7e87e396ab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
CI: wait for the binary inside the web job (#11, proof branch)
Some checks failed
CI / server (pull_request) Successful in 49s
CI / rust (pull_request) Failing after 8s
CI / web (pull_request) Successful in 7m2s
06c5e710e6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
Author
Owner

Closing: proof runs only, never meant to merge. Branch cleanup, 2026-10-15.

Closing: proof runs only, never meant to merge. Branch cleanup, 2026-10-15.
kayg closed this pull request 2026-10-15 08:36:06 +00:00
Some checks failed
CI / server (pull_request) Successful in 49s
CI / rust (pull_request) Failing after 8s
CI / web (pull_request) Successful in 7m2s

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal!260
No description provided.