Repository navigation
Chrome captures: pixel, DPR and break captures take 8 cases at once (same bytes) - #162
Merged
Merged
Conversation
…ode (8x faster compiles; same digests)
…of one browser (same snapshot)
…ules, so ua:capture's regen inputs leave out the compiler
…umented node:crypto fast path
…ault) planted-swift.test.ts and planted-kotlin.test.ts compiled and ran a planted harness for each of the 7 FAULTS in one test (planted-swift took 734 s on the CI runner, planted-kotlin 329 s). Each (target, fault) pair is now its own test file (planted.ts holds the shared test), so vitest schedules them across workers and shards. planted-union.test.ts proves the files cover FAULTS on both targets exactly once.
The determinism describe of parity.test.ts (356 tests, 290 s of its 548 s on the CI runner) runs from parity-determinism-<k>.test.ts, one chunk of FIXTURES per file under the same describe titles, each with its own Chrome and its own coverage check. parity.test.ts keeps a coverage test proving the chunk files together check every fixture once.
… with any NaN; corpus inputs, results and digests write every NaN as 7ff8000000000000 (x86-64 makes some fff8...)
… are not serialized through Playwright's value serializer
…each in its own context (same bytes)
Commands: pnpm regen
Commands: pnpm regen
Commands: pnpm regen
The quiet gate required zero other heavy-slot holders and load under 20. A near-idle holder (a profiling run) kept the gate shut at load ~1 while a batch's single failing file waited to be rerun. Below load 6 the machine counts as quiet regardless of holders; the quiet request still stops new jobs from starting. land.test pins both sides.
digest: SHA-256 through Node's native hash when available (8x faster compiles, same digests)
regen: ua:capture's inputs leave out the compiler (platform.ts imports the reference platforms from their own modules)
SLOW-SPLIT 1: planted translator fault tests, one file per (target, fault)
…publish, never returned without it (the landing driver's ignored-file cleanup leaves such entries)
…utputs
packages/translate/out/{kotlin,swift}/ are content-keyed caches valid for any tree. #155's clean removed their files but not
their directories, which left stale entries that blocked every later build of the key (fixed at the source in #164); keeping
them also saves the harness rebuilds on every proof. land.test adds both to the kept set.
…try root cause), where each target stopped
Commands: pnpm regen
Commands: pnpm regen
Commands: pnpm regen
Commands: pnpm regen
translate: a stale harness cache entry (artifact deleted, directory kept) is replaced, never returned; root cause of the land-147 'Unable to access jarfile' failures
land: keep the translate harness build caches when cleaning ignored outputs
land: an idle machine is quiet even with a heavy slot held
SLOW-SPLIT 2: parity determinism shards in 4 chunk files
Commands: pnpm regen
Commands: pnpm regen
Commands: pnpm regen
This was referenced Oct 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed (packages/parity)
src/chrome-pool.ts:CHROME_PAGESis one per core, at most 8.inOrder(items, width, f)runs at mostwidthitems at a time and returns results in item order.cli/pixel-capture.ts,cli/dpr-capture.tsandcli/break-capture.tstakeCHROME_PAGEScases at once in each DPR launch (research Parity: shard the determinism check per fixture #5 in speed-research.md §2.3).--recheckuses the same pool.Tests
test/chrome-pool.test.ts: the most items running at once is exactlywidth; results come back in item order whatever order they finish in; the first failure in item order is thrown only after every started item ends; nothing starts after a failure; a bad width is refused.What passed
pnpm typecheck: pass.vitest run packages/parity/test/chrome-pool.test.ts: 2 passed.pnpm regenon the branch (job regen-speed-capture-regen): dpr-capture, break-capture and pixel-capture ran. Fixed point after 1 pass, 0 files changed,git statusclean. Every PNG, DPR capture and break capture is byte-identical.The Chrome loops per DPR, from the steps' own logs. Before is two earlier local regens (mq-r0, c2); after is this branch's regen. Both were under load.
The rest of each step's time is its fixture compiles, which #151 (native hash) cuts about 6×.
Note
The text stack (TXT1a and the later PRs on it) adds an
authoredPrepareline inside these same loops, so it will need a small merge resolution when it catches up. The PM chose to take that cost now.No tolerance, check, test or fixture changed.
🤖 Generated with Claude Code