Repository navigation
Emit-determinism floor gate: raw 'gunbc compile dsl --target rust' corpus x2 diff=0 — the durable wall regen --verify structurally CANNOT be (rustfmt-masks it + both .rs/.dag are no-sort). Host-side effectful batch-2 gate (spawn compiler twice + diff trees, NOT a pure test fn; structure it like the - #5922
Merged
Merged
Conversation
Add EmitDeterminismGate as a batch-2 CI floor gate. Runs 'gunbc compile --target rust' twice on the full corpus and diffs the output trees — any non-determinism in the emitter exits 1. Marked gate_is_heavy_resolve=true (full resolve per run); does not invoke rustc, so gate_spawns_host_compiler=false. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Spawns gunbc compile twice; must serialize against other corpus-touching work. false was a scheduling lie (§5). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
emit_determinism_transport.dag imports extdeps.languages.bash.program to build its ShellProgram. All dsl/tools/*_transport.dag files that do this are on the roster; this one was missing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 of 3 tasks
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.
Summary
Adds
EmitDeterminismGateas a batch-2 CI floor gate: runsgunbc compile --source-root dsl --dependency-pool-index primary-precedence --target rusttwice on the dsl corpus, writes each output to amktemp -dtree, and assertsdiff -rexits 0. Any nondeterminism in the emitter — variant-owner disambiguation order, map-key sort order, import-set ordering — makes the two trees diverge and the gate exits 1.Corpus scope:
dslonly.witness_layer_roots([dsl, src/v2]) is the witness-discovery roster, not a whole-tree emit target.src/v2contains intentionally-invalid negative-test fixtures (e.g.bogus_scheme/plant.dag) that fail compilation by design; including them would make the gate permanently RED. Thedslcorpus is the correct emit-determinism target: it is not rustfmt-normalized, so raw ordering churn is visible, andsrc/v2's emit determinism is already covered by theregen_stage0 --verifyseed path.This is the durable wall that
regen --verifystructurally cannot be:regen_stage0 --verifybyte-compares the committed seed against a single-pass regen, but rustfmt normalises whitespace/order in the committed.rsfiles, and both.rsand.dagoutputs are produced by map-iteration that is not guaranteed sorted. Comparing two fresh runs from the same binary eliminates those masking effects and catches true non-determinism by construction.The gate is wired identically to
RegenVerifyGate:gate_runnable_profileclassifies itheavy_whole_tree_resolve=true, spawns_host_compiler=true, memory=per_shard+host_compiler. The shell transport is modelled through theextdeps.languages.bash.programbash AST and rendered viaserialize_bash— not a hand-written string. CarriesScaffold { dissolves_to: RealizationDispatch, bind: serialize_bash }disposition per §6.Test plan
A — GREEN: current main, dsl corpus × 2, diff = 0
B — RED: pre-#5913 binary (fierce-badger-409 @ 8e47a4d), dsl corpus × 2, diff ≠ 0
The gate catches the variant-owner disambiguation nondeterminism that #5913 fixed:
AuthScopevsRc<AuthScheme>flips between runs with the pre-fix binary..dagwiring