~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/knotless

git that lives in your Atmosphere account

knotless.dev
1 collaborator

knotless 0.13.0 Latest 2 packages, 1 image

1
10

A pull's test run goes against both nets at once, as a batch's does

Merged
Merged chadtmiller.com asked to merge into main from chadtmiller.com/knotless:ci/preflight-both-nets

What changes

A pull's test run, its pre-flight, tests against the stock PDS and the spaces alpha at once, as the merge queue's batch does, rather than against the stock PDS first and the alpha only when the gate falls short. AGENTS.md, docs/design/merge-queue.md and cov.mjs's notes say so (the merge-queue page still said a pull's run only reported a shortfall).

Why

Stock first saved nothing: it fell short in every one of the last 13 pulls' runs, which then ran the alpha's runs after the stock ones (short against stock alone: making the 33 runs left). Side by side, the runs pack into the 4 cores the run's container has, with no second gate between them.

Measured on the runner, a full run, cold for the workspace's crates, no stored runs: both nets at once took 294s after the build; stock first, then the alpha, took 343s. The last 13 pulls' runs took 380–560s, against main's 407s for the same work. Host load moves these by tens of seconds, so it is about a minute a pull, not an exact number.

The spike behind it, Spike: the test check measures where its time goes, measured more, and ruled out the rest:

  • The run is CPU-bound: its container is capped at 4 cores (cpu.max 400000 100000 on an 8-core host), stays at 4.0 and is throttled, so more jobs at once would not help.
  • The build of the workspace's crates is ~40s on a quiet host; 80–210s on pulls is other runs sharing it.
  • Of the test phase's ~1035 CPU seconds, the reference PDSes take ~480, the test binaries ~390. The PDSes' busy time is ~40% SQLite: opening, preparing and closing an account's database each request. Not syncing it (synchronous = OFF) changed nothing (278s, 277s, 275s, A/B/A).
  • Reusing a stored run across builds when the change missed every function it ran, replayed over main's last five commits, reused only the cheap runs: the long integration tests reach almost everything.

How it was checked

This pull's own test run is the check: a pull's run now as a batch's.

Shortcomings

A pull whose change only the stored stock runs needed, and that would have passed without starting the alpha, now starts it: none of the last 13 was such a pull.

Changeset: none

🤖 Generated with Claude Code

Approved

This pull drops COV_NETS=${KNOTLESS_RUN_PULL:+stock} from the test workflow. A pull's run now tests against both the stock PDS and the spaces alpha, as the merge queue's batch does. The workflow comments, AGENTS.md, docs/design/merge-queue.md and the cov.mjs notes are updated to match.

I checked that KNOTLESS_RUN_PULL is still used elsewhere (harness/changes.sh, shots/compare.mjs), so nothing else depends on that line. The COV_NETS=stock option stays in cov.mjs, and its comment still describes it correctly. A search found no other docs that still say a pull's run uses the stock PDS alone.

I haven't verified the timing figures. The pull's own test run is the check it names.

Merged as 1992fca