Repository navigation
CI: the compiled-core parity battery gates every PR, with determinism fences proven to fire - #246
Merged
Merged
Conversation
- tests/compiled-core/core_compiler_pin is the one place the release pin lives - build_core.sh verifies the supplied command reports that release and refuses any other, because the profile's fence table is release-pinned data
- fence_check.sh compiles the pristine markup fixture and asserts its co-emitted sidecar attests deterministic: true - the same fixture with one injected ambient read (Date.now() in update) must refuse, naming the fenced surface id, with no archive or sidecar emitted - skip-clean when no external toolchain is supplied, like the parity battery
- new ubuntu job installs the pinned external core compiler, stages the contract artifacts, and builds all five fixture cores through build_core.sh - runs the determinism-fence negative control, then the full test-compiled-core-parity battery over the compiled archives - the release pin is read from tests/compiled-core/core_compiler_pin, so a bump stays a one-line change
- one line per comment paragraph across the new CI job, the pin check, and the fence-check script
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
- The parity battery runs its test binaries serially in CI: five suites racing on a two-core runner turn scheduler contention into dispatch-budget failures the budgets were never meant to catch. - A budget failure now prints the measured whole-pipeline and core-only nanoseconds, so a real regression and a noisy runner are distinguishable from the log alone.
- The paired-core module declares paired_lanes, the staged root re-exports it, and the soundboard dispatch pin reads it: a dispatch that runs both lanes and byte-compares every seam gets half the frame budget, while the single-lane suite keeps the strict microseconds-class pin. - The measured CI shape that set the number: core-only paired dispatch at just over the single-core budget on a shared runner, with the whole pipeline well inside its frame.
This branch was successfully deployed
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.
The compiled-core parity battery becomes a CI gate, and the determinism fences gain a pinned negative control proving they fire.
What changed
compiled-core-parityCI job (ubuntu-latest, mirroring the existing setup steps): installs the pinned external core compiler from npm, verifies the installed version against the pin, stages the generated contracts, runs the fence check, builds all five fixture cores throughbuild_core.sh, and runs the full parity battery. What was an env-gated local harness now guards every pull request.tests/compiled-core/core_compiler_pin— read by the CI install step and enforced bybuild_core.shitself, which refuses any other release with a teaching. The generated profiles' fence table is release-pinned data, so an unpinned compiler could silently change what the battery proves; a version bump is a one-line edit.tests/compiled-core/fence_check.sh: the determinism fences now have both controls. The pristine markup compile must attestdeterministic: true; a staged variant with an ambient wall-clock read injected intoupdatemust refuse — the fence names the surface and teaches the journaled-clock alternative — and emit no artifacts. The injection is anchor-verified: if the fixture is ever reshaped so the injection lands nowhere, the check fails with a teaching instead of passing vacuously. Without a compiler on PATH the check skips cleanly, like the battery.Verification
zig build,zig build test,zig build test-ts-core-e2e,zig build sidecar-conformanceall pass; workflow yaml parses.