Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
f67d66c
Land the add-slice per-stage verdict instrument named as the floor_ex…
cursoragent Sep 6, 2026
b53fb12
Derive grounding for dag declared inhabitants: the add slice greens e…
cursoragent Sep 6, 2026
ffe2a1f
Derive grounding for canonical binding atoms: dag_binding_denotation …
cursoragent Sep 6, 2026
4638e6a
Add v2 self-host direct-path orientation: axes, sequence, autonomy co…
cursoragent Sep 6, 2026
8184a6f
Derive grounding for fully-evidenced Conj and Arrow products
cursoragent Sep 6, 2026
f2978e8
Ground canonical-operation and grammar-production atoms by authority …
cursoragent Sep 6, 2026
e165f2a
Ground binding-reference atoms from the enclosing arrow's domain decl…
cursoragent Sep 6, 2026
ff03246
Green the direct-rust-door: route emission through produced-decl comp…
cursoragent Sep 7, 2026
e55c179
Close the parse-product grounding frontier: widen declared-inhabitant…
cursoragent Sep 7, 2026
90b725c
Promote the add family to SelfEmittedNative: native-only verdict witn…
cursoragent Sep 7, 2026
b53893a
Merge remote-tracking branch 'origin/main' into cursor/v2-self-host-g…
cursoragent Sep 7, 2026
d5a7eed
Record the add-slice defect's repair in the declined-live-tree classi…
cursoragent Sep 7, 2026
6e6440c
Hoist two in-body annotation blocks to module-item grain
cursoragent Sep 7, 2026
8543ad4
Promote the complement family to SelfEmittedNative: native-only verdi…
cursoragent Sep 7, 2026
8a95df0
Key the emitter's host-String arm on declaration provenance, not spel…
cursoragent Sep 7, 2026
60cbd7b
Peel qualified String alias leaves in field position: XL-N closure 72…
cursoragent Sep 7, 2026
6676531
Resolve the 12 non-hop XL-N closure errors at source: text-wall conve…
cursoragent Sep 7, 2026
eca49a8
Record receipt_2 on the self-host compile-phase frontier: 15-error ce…
cursoragent Sep 7, 2026
b21d328
Emitter: a substituted declaration node carries its own provenance
cursoragent Sep 7, 2026
285b02e
Clear the remaining XL-N closure errors at source: carrier conversion…
cursoragent Sep 7, 2026
5ee4892
Pin the cargo half's toolchain channel by construction
cursoragent Sep 7, 2026
db8a1b5
Record receipt_3 on the self-host compile-phase frontier: the emitted…
cursoragent Sep 7, 2026
771dd6f
chore: regenerate drifted generated artifacts (ci auto-heal)
Sep 7, 2026
e00f0ba
Remove the stale PointwisePower inhabitant rows from the four languag…
cursoragent Sep 8, 2026
e912cc9
Regen gen-2 gate: compare executable digests in one spelling
cursoragent Sep 8, 2026
9d1986b
Model ReleaseScopeEmpty for release-excluded mirrors, end to end
cursoragent Sep 8, 2026
10a68a3
Round-cost receipt: project installed mirrors to the model's vocabulary
cursoragent Sep 8, 2026
25d8197
Hoist ReleaseScopeEmpty annotations to module-item grain
cursoragent Sep 8, 2026
77fb198
Spell the PointwisePower witness's finite-set exclusion as the applie…
cursoragent Sep 8, 2026
f8c8d84
Emit fieldless-record data values as null for the unit-struct carrier
cursoragent Sep 8, 2026
d7d410a
Merge remote-tracking branch 'origin/main' into cursor/v2-self-host-g…
cursoragent Sep 8, 2026
6f7d3a2
Bind the duplicate-definition filter ahead of its branch condition
cursoragent Sep 8, 2026
fd4a572
chore: regenerate drifted generated artifacts (ci auto-heal)
Sep 8, 2026
fecef05
Emitter: three native-parity repairs for the post-merge 00_compile cl…
cursoragent Sep 8, 2026
73b582d
Refuse variant record literals on the serde_json data path fail-closed
cursoragent Sep 8, 2026
563405e
Merge remote-tracking branch 'origin/cursor/v2-self-host-grounding-fr…
cursoragent Sep 8, 2026
5b3ca6b
Merge remote-tracking branch 'origin/main' into cursor/v2-self-host-g…
cursoragent Sep 8, 2026
49a277d
Spell variant record literals on the serde_json data path from a clos…
cursoragent Sep 8, 2026
caec92c
Promote field_access to SelfEmittedNative on the emit coverage frontier
cursoragent Sep 8, 2026
b91d8de
Drop the scratch parity probe from the tree
cursoragent Sep 8, 2026
2a32538
Promote match, loop, and fold_closure to SelfEmittedNative
cursoragent Sep 8, 2026
26536fa
Promote meet_join to SelfEmittedNative on the emit coverage frontier
cursoragent Sep 8, 2026
ff9e748
Merge remote-tracking branch 'origin/main' into cursor/v2-self-host-g…
cursoragent Sep 8, 2026
ab89d01
Promote variant_construct to SelfEmittedNative on the emit coverage f…
cursoragent Sep 8, 2026
24c4c03
Close the emit coverage frontier: final six rows to SelfEmittedNative
cursoragent Sep 8, 2026
f173aaa
Record the emit coverage frontier closure in the direct-path plan
cursoragent Sep 8, 2026
1b36cdc
Model the required-v2-native lane authority: route receipt, exclusion…
cursoragent Sep 9, 2026
22b8303
Split preparation predicates so EmittedClosureUnrecorded is reachable
cursoragent Sep 9, 2026
ca41065
Key cause ownership by diagnostic grain; classify native refusals at …
cursoragent Sep 9, 2026
a1b354e
Hoist known_frontier_causes row-group notes above the declaration
cursoragent Sep 9, 2026
e8ed171
Parse test fn as a contextual production in the v2 dag grammar
cursoragent Sep 9, 2026
f81af42
Add SourceRootEvalDriver: native whole-ingest test-execution route
cursoragent Sep 9, 2026
bebb2c2
Escape literal braces in SourceRootEvalDriver main.rs template
cursoragent Sep 9, 2026
18e1ada
Collect per-file front-end refusals in the native test context fold
cursoragent Sep 9, 2026
854a19a
Add native lane control fixtures
cursoragent Sep 9, 2026
e7f325b
Fix Vec/Vector type mismatches in the SourceRootEvalDriver main.rs te…
cursoragent Sep 9, 2026
49cccbe
Harden the v2-native route contract: test-identity grain, exact join,…
cursoragent Sep 9, 2026
b1bde4d
Wire the required-v2-native lane into the roster, workflow, and aggre…
cursoragent Sep 9, 2026
ff503a4
Add the required-v2-native host harness and phase dispatch
cursoragent Sep 9, 2026
66f757e
Regenerate stage0 mirrors for the SourceRootEvalDriver emitter arm
cursoragent Sep 9, 2026
3e03440
Name the probe crate's lib target v1_compiled, the emitter's self-nam…
cursoragent Sep 9, 2026
2663e46
Release retained emission arena before the native cargo build
cursoragent Sep 9, 2026
fc15493
Apply rustfmt to the v2-native lane host changes
cursoragent Sep 9, 2026
c8173ee
Lower FreeMonoid tail to im::Vector::skip — O(log n) share, not O(n) …
cursoragent Sep 9, 2026
65ae51a
Route FreeMonoid length/snoc through the count/list_push primitives
cursoragent Sep 9, 2026
a3a04bb
Hoist first-fold knowledge into prepared grammar expressions
cursoragent Sep 9, 2026
88ba140
Deref boxed variant fields in enum shared accessors
cursoragent Sep 9, 2026
fcb6894
Merge origin/main into required-v2-native lane branch
cursoragent Sep 9, 2026
bdf7165
Regenerate stage0 mirror for the boxed-accessor deref
cursoragent Sep 9, 2026
4bb152e
Align prepare_grammar_expr with the List<Symbol> nullable-set carrier
cursoragent Sep 10, 2026
1e775ac
Hoist dag_language_model out of the native-test context fold
cursoragent Sep 10, 2026
51e7a92
Grow lexer lexemes by snoc, not append, killing the quadratic literal…
cursoragent Sep 10, 2026
eb41dfa
Root the malformed-control run at the fixture directory alone
cursoragent Sep 10, 2026
3b40193
Own the native census's surviving fatal-grain exclusion causes
cursoragent Sep 10, 2026
9890091
Add the native lane's positive-population smoke member
cursoragent Sep 10, 2026
9a4b9e5
Raise the v2-native lane timeout to the measured post-lexer-fix envelope
cursoragent Sep 10, 2026
cff5361
Merge origin/main (0d6b6653e0) into the required-v2-native lane branch
cursoragent Sep 10, 2026
8f5c76f
Hoist megarac_media_attach in-body annotations to module-item grain
cursoragent Sep 10, 2026
6a597c3
native lane: exact provenance joins and the identity-grain ratchet (r…
cursoragent Sep 10, 2026
911944d
native driver: select declarations by exact module scope, never by ne…
cursoragent Sep 10, 2026
4e5c564
required-ci: join (phase, lane) pairs in both directions, in every la…
cursoragent Sep 10, 2026
2b24cef
Hoist v2_native_route_test ratchet annotations to module-item grain
cursoragent Sep 10, 2026
2fb67b4
v2-native lane: root the probe crate in the declared per-job temp; ca…
cursoragent Sep 10, 2026
69aaa60
Merge origin/main into required-v2-native lane branch
Sep 10, 2026
4adf735
Render rustc output in cargo_verdict_summary on a non-zero cargo
Sep 10, 2026
abe5a17
WIP: native lane adjudicates inside the emitted compiler
Sep 10, 2026
5c434ea
WIP: lane fold refinements
Sep 10, 2026
6239054
Split the per-file discovery authority out of the corpus walk
Sep 10, 2026
7c119aa
WIP: two emitter walls (double shared wrap; unknown driver refusal) +…
Sep 10, 2026
e5b1068
Regenerated emitter mirror carrying both walls; failure-mode row for …
Sep 10, 2026
299d95d
Merge remote-tracking branch 'origin/main' into session/deep-swift-530
Sep 10, 2026
efe4a25
Merge origin/main (#10882 landed) into the native-lane branch
Sep 10, 2026
5cd889f
Regenerate the emitter mirror on the merged tree
Sep 11, 2026
44e7ab8
Emitter-wall fixture: grounded shared carrier wrapped once, with its …
Sep 11, 2026
b45ede0
Two emitter walls: the grounded shared carrier is wrapped once, and a…
Sep 11, 2026
0a9c356
Repoint the last two stale member imports at the split authorities
Sep 11, 2026
0ec1949
The unknown-driver wall gets its discriminating RED: a 17-module acce…
Sep 11, 2026
c1778b1
Merge remote-tracking branch 'origin/main' into session/deep-swift-53…
Sep 11, 2026
51387fe
The wall's evidence note names the operator-invoked route, not the de…
Sep 11, 2026
269878e
Merge main (#11003: the required job is gone, the route stays) and re…
Sep 11, 2026
460aecf
The emitter-wall fixture and its test belong to #10990, not to the ro…
Sep 11, 2026
cb66cbe
Escape both interpolations into the refusal's Rust string literal
Sep 11, 2026
6f27b7b
Recut the claim, and stop requiring a v1 binary to exist so the contr…
Sep 11, 2026
919c528
File the double-wrap class where it lives, with its ceiling and next-…
Sep 11, 2026
5476a66
Closure-scoped ingest: the route tokenizes the universe's import clos…
Sep 11, 2026
86130b0
The occurrence receipt belongs inside the receipts list
Sep 11, 2026
9a44bbb
Merge origin/main: one row, both lanes' occurrence receipts
Sep 11, 2026
8ae6fac
Close the wave's two real findings and relay the child's phase receipt
Sep 11, 2026
6226531
Admit the five late TargetChanged rows the producer's re-import produced
Sep 11, 2026
5ddde5f
Review 63719: linear accumulators, and a closure budget that refuses …
Sep 11, 2026
0bcd578
Merge origin/main (f078c59b, carries #11032) into the v2-native route
Sep 11, 2026
1a38e55
Review 63719 remainder: the carried-forward prose String row becomes …
Sep 11, 2026
06e1b09
Merge origin/main (f078c59b, carries #11032) into the emitter walls
Sep 11, 2026
45ac3ae
Stack the emitter walls (#10990) under the route
Sep 11, 2026
628dcdd
Clippy: debug-format the disposition in place instead of format! insi…
Sep 11, 2026
254f5c9
Merge origin/main (199aee77: D2/D3/D4, #10988) into the emitter walls
Sep 11, 2026
bf4df92
Merge #10990 (clippy fix, main 199aee77) into the route
Sep 11, 2026
fcfad6e
Count the file refusals per rostered cause on the route's receipt
Sep 11, 2026
7f66ccf
Declare the eval-driver main's seed frontier on the function (review …
Sep 11, 2026
2fe7f6e
Regenerate the stage0 mirror(s) from the merged authorities (srv2, bu…
Sep 11, 2026
f9de725
Merge origin/main (9274f69e, #11060) into the route: one cost partiti…
Sep 11, 2026
484ec73
Merge remote-tracking branch 'origin/main' into session/deep-swift-530
Sep 11, 2026
dec1cfa
Regenerate the stage0 mirror(s) from the merged authorities (srv2, bu…
Sep 11, 2026
182ea44
Two failure-mode rows stop claiming executed evidence for tests CI ne…
Sep 11, 2026
29980d4
Merge origin/main (#10990 landed): keep the corrected rung rows, drop…
Sep 11, 2026
284ae18
Regenerate the stage0 mirror(s) from the merged authorities (srv2, bu…
Sep 11, 2026
a1a8aa1
Merge origin/main (#11011 landed): the emitted build crosses the host…
Sep 11, 2026
a831fab
Close review 64075, fix the receipt literal the floor refused, and re…
Sep 11, 2026
8a049de
Merge origin/main (#11071): both relocations keep their rows, the dis…
Sep 11, 2026
8b9c886
Regenerate the stage0 mirror(s) from the merged authorities (srv2, bu…
Sep 11, 2026
115cee1
Delete #11071's three consumed admission rows: merging main is the ev…
Sep 11, 2026
74436ae
Promote list_find_first to v2.std.algebra and consume it from both si…
Sep 11, 2026
a60952e
Merge origin/main (#11047): take main's receipt spacing, re-apply the…
Sep 12, 2026
48bf101
Close review 64181: six findings fixed, the quadratic reduced honestl…
Sep 12, 2026
1665280
Regenerate the stage0 mirror(s) from the merged authorities (srv2, bu…
Sep 12, 2026
88fab63
Move two annotation blocks to module-item grain (DESIGN section 4c)
Sep 12, 2026
b4d53f7
The tested_tree host fact refuses instead of fabricating "local" (rev…
Sep 12, 2026
2e38e02
Move the warning-denial policy out of the build module so the emitted…
Sep 12, 2026
3a120fc
Restore the cargo_argv conversion the emitted type actually requires
Sep 12, 2026
8dc2c5a
Merge #11105 and attribute the route's residual to a measured seriali…
Sep 12, 2026
1a1b47e
Merge remote-tracking branch 'origin/main' into session/deep-swift-530
Sep 12, 2026
86761d1
Regenerate the stage0 mirror(s) from the merged authorities (srv2, bu…
Sep 12, 2026
b12b215
The terminal marker's required fields are keyed by mode, and #11105's…
Sep 12, 2026
36e6ad9
Merge origin/main (#11004, #11125): union the 00_compile imports, bot…
Sep 12, 2026
ff84137
Merge origin/main; retire the #11137 admission row; close review 64431
Sep 12, 2026
9a3b74f
review 64474 x5 + receipt persists its rows
Sep 12, 2026
6f8a659
review 64499 x2 + the tee proves preservation, not just count
Sep 12, 2026
2dc792d
WIP merge: reconcile to #11165 exact-candidate semantics (sets not ye…
Sep 12, 2026
b58a676
Reconcile to #11165 exact-candidate admissions; file the probe-root c…
Sep 12, 2026
92f8b76
Bind the witness imports and qualify V2Tree (review 64561)
Sep 12, 2026
6ba5add
Merge origin/main (#11157, #11170): 12 new test identities, 1 renamed
Sep 12, 2026
1751de5
Declare the route's two scaffolds as typed rung-drop rows (review 64571)
Sep 12, 2026
8782b05
Merge main; repair the closure walk onto #11121's primitive map; reti…
Sep 12, 2026
45a9105
Delete the merge-artifact prose that contradicted the roster it docum…
Sep 12, 2026
85dd87a
Restore the declared [native-prepare-split] the route's merge resolut…
Sep 12, 2026
d85ba9c
Key the route's residual scans, name the release span, and stop prepa…
Sep 12, 2026
343949c
The deleted list scan had two dependents outside 00_compile.dag
Sep 12, 2026
ef4a21b
chore: regenerate drifted generated artifacts (ci auto-heal)
Sep 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
module gunbc.recurring_failure_mode.a_long_phase_prints_nothing_until_it_ends

import std.types { NonEmptyStr }
import gunbc.recurring_failure_mode { RecurringFailureMode }

data a_long_phase_prints_nothing_until_it_ends: RecurringFailureMode = RecurringFailureMode {
identity: "a_long_phase_prints_nothing_until_it_ends" as NonEmptyStr,

receipts: [
"**a long phase prints nothing until it ends** (a process announces that it is entering a phase, then emits its next line only when the phase TERMINATES. For the whole span in between, a healthy run and a hung run produce byte-identical output: nothing. The receipt is complete and correct once it arrives, so nothing is missing at the end -- the defect is entirely in the middle, where the log cannot answer the one question anybody asks of a long run.)",

"INVALID STATE: a receipt surface on which liveness and death share a representation. Silence is emitted by both the working process and the dead one, so no reader -- human or automated -- can distinguish them from the surface the process itself publishes.",

"WHY IT SURVIVES REVIEW: every line the process prints is correct, none is missing, and the terminal receipt is complete. The phase boundary IS announced, which is what makes it feel covered: a reviewer reads 'adjudicating through the emitted compiler' and sees a process that reports its phases. Nothing in the diff looks like a gap, because the gap is a duration rather than a line.",

"SPECIMEN (gunbc#10940, 2026-09-12, the required-v2-native route at 36e6ad91ea). The SourceRootEvalDriver printed `v2-native-route: adjudicating through the emitted compiler` at 07:04:59 and then nothing. At 08:25 the operator asked whether the run had reached adjudication and what the partition reported. The log could not answer, and neither could the absence of an answer be read as failure: the run was alive and healthy. This is not hypothetical rot -- it cost a real exchange, and it was about to cost a queue slot ordering on a run whose state nobody could name.",

"WHAT DISCRIMINATED IT WAS OUT OF BAND, WHICH IS THE POINT. Liveness was established by reading the process's own CPU accounting -- 99.7 percent of one core, single-threaded, CPU time equal to wall time to within thirteen seconds, RSS steady -- via ps and /proc on the host. That is an instrument the PROCESS does not publish and the LOG does not carry: it is available only to a reader with a shell on the machine the run happens to be on, so a CI reader, a dashboard, or anyone reading a captured log has no equivalent and is left with the ambiguity intact.",

"THE TEMPTING NON-FIX IS A TIMEOUT, and it is the absorbing fallback of DESIGN section 5 wearing an operations hat: a deadline converts 'I cannot tell whether this is alive' into 'I declare it dead', which fabricates a verdict from ignorance rather than measuring the thing. It also has to be tuned against a phase whose true duration is unknown, which is the same missing measurement, now load-bearing on a constant.",

"RUNG: found at 1, mitigatable. The ambiguity is contained only by an out-of-band reader who knows to look at /proc, which is to say it is contained by operator expertise rather than by anything the program does.",

"CEILING 2, mechanically preventable, and the reason it is not higher is worth stating rather than eliding: no type can make a process emit a line, so this cannot be constructed away. What CAN be built is a phase carrier that is obligated to report progress at a declared grain -- an identity count, a frontier size -- so that a phase which publishes nothing for longer than its own declared grain is itself a typed refusal rather than a silence.",

"NEXT-RUNG TRIGGER (a CAPABILITY, not an artifact): a long-phase carrier whose entry declares the progress grain it will report at, so that emitting nothing is a refusable state rather than the default. A single progress line added to one driver satisfies none of this -- it fixes one specimen and leaves every other long phase in the corpus with the same surface, which is exactly the artifact-for-capability substitution DESIGN section 4b(3) forbids in a restoration trigger.",

"REVIEW TELL: a phase announcement with no companion progress obligation -- a log line of the form 'starting X' whose next sibling in the source is the line that reports X finished. Ask what the surface looks like at the midpoint, and whether anyone reading it could tell a live run from a dead one.",
],

evidence: [],
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
module gunbc.recurring_failure_mode.a_shared_probe_root_lets_one_run_compile_anothers_source

import std.types { NonEmptyStr }
import gunbc.recurring_failure_mode { RecurringFailureMode }

data a_shared_probe_root_lets_one_run_compile_anothers_source: RecurringFailureMode = RecurringFailureMode {
identity: "a_shared_probe_root_lets_one_run_compile_anothers_source" as NonEmptyStr,

receipts: [
"**a shared probe root lets one run compile another run source** (two executions materialize their generated crate into a directory keyed by WHAT is built rather than by WHO builds it. The second writer overwrites the first; the loser compiles the winner source against its own dependencies, and the type errors are attributed to the loser tree. The exclusion that would stop it EXISTS in this corpus and the failing caller does not take it.)",

"INVALID STATE: a build whose SOURCE came from one revision and whose DEPENDENCIES came from another, with a diagnostic naming only the second.",

"THE PROTECTION IS BUILT AND BYPASSED, WHICH IS THE WHOLE POINT OF THIS ROW. gunbc.emitted_closure_compile_host acquire_probe_root_lock creates an exclusive lock in the probe root and REFUSES a second concurrent run with a typed located cause; its own annotation argues the design -- refusing beats waiting, which serializes into the same shared state, and beats a private directory per run, which throws away the warm target dir. That reasoning is sound and it is already written down. run_required_emit_compile takes the lock. THE v2-NATIVE ROUTE DOES NOT: v1_compiler.cli_run.native_lane_runner selects the same root through lane_emit_compile_probe_root and passes it to emission without acquiring anything. So this is not a missing mechanism; it is a mechanism one caller reaches around.",

"WHY IT SURVIVES REVIEW: the guard exists, it is well argued, and a reviewer who greps for it FINDS it. Establishing that a given caller takes it requires following the call, which nobody does when the protection is known to be present. A built wall with one gate left open reads, from a distance, exactly like a built wall.",

"SPECIMEN (gunbc#10940, 2026-09-12). A baseline run of the base revision and a successor run of the branch executed concurrently on one host. The successor refused EmittedCompilerBuildFailed with E0063 naming three missing fields on a cost-row type. The first reading -- mine -- was that the branch emitted a broken driver. It had not: the emitted main on disk was the BASE revision, written minutes earlier by the baseline, and predated the three fields the branch added. Neither run took the lock, so nothing refused and the wrong verdict was computed against an innocent tree.",

"DISTINGUISHING FACT, so the next reader arrives faster: READ THE GENERATED ARTIFACT. If its content belongs to a revision other than the one being built -- a field set, a call, a spelling from another head -- the build is compiling somebody else source, and its timestamp falling inside another run window confirms it.",

"THE LOUD FORM WAS ALREADY FIXED AND THE SILENT ONE LEFT OPEN. The same shared directory previously produced EACCES against another job artifacts, and that repair routed the required lane to a declared per-job root. A collision class repaired where it announces itself and left reachable where it does not is the more dangerous half surviving.",

"RUNG: found BELOW the ladder for the unlocked caller. The run does not merely fail; it fails with a confident, specific cause about the wrong subject. The locked caller sits at 1, mitigated by a typed refusal.",

"CEILING 4, structurally impossible, and MOST OF THE DISTANCE IS ALREADY TRAVELLED -- which is why the honest ceiling is high rather than aspirational. Selecting the probe root and taking exclusive ownership of it are one operation, so a selector that RETURNS an owned root (the lock taken, released on drop) leaves no spelling by which a caller can hold the path without the exclusion. Then the invalid state has no constructor, rather than depending on each caller remembering.",

"NEXT-RUNG TRIGGER (a CAPABILITY, not an artifact): probe-root selection yields an owned root, so acquiring the path and acquiring the exclusion cannot be separated. Adding the existing lock call to the one bypassing caller is a REPAIR of this instance and does NOT discharge the row -- it leaves the next caller free to reach around it the same way. Setting a per-run environment variable is a weaker mitigation still: it protects the launches that remember.",

"REVIEW TELL: a guard function whose callers are fewer than the callers of the thing it guards. Grep the protected resource, not the protection, and ask which callers of the resource never mention the guard.",
],

evidence: [],
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ data closed_variant_partition_read_as_a_default_arm: RecurringFailureMode = Recu
"WHAT WAS OBSERVED, and it is a silent wrong answer rather than a low rung (DESIGN section 5). Emitting src/v2/compiler/00_compile.dag — whose declaration reads `data compiler_pipeline_entry: CompilerEntryDriver = SourceRootEvalDriver` — at a 404-module import closure rendered the DIRECT-INGEST main: a 25-line main that reads one source path and translates it. The same emission rendered `compiler_pipeline_entry() -> CompilerEntryDriver::SourceRootEvalDriver` into the same crate, so the emitted VALUE and the emitted ENTRY POINT disagreed inside one artifact, with zero diagnostics of any severity. The crate compiles; the binary runs; it answers a different question than the lane that spawns it asks.",
"THE SUBJECT IS THE READING, NOT THE CLOSURE SIZE, and the cheap reproducer is what establishes that. `fixtures/unknown_pipeline_driver/probe.dag` declares `compiler_pipeline_entry: CompilerEntryDriver = std.compiler_entry.SourceRootEvalDriver` -- an ORDINARY ACCEPTED PROGRAM, spelled with its declaring module's qualifier, which resolves to the variant it names. At SEVENTEEN modules the pre-fix emitter rendered the DIRECT-INGEST main for it, with zero diagnostics of any severity. The 404-module observation that surfaced the class is therefore an instance and not the subject: any reading the span-read cannot match by bare name selects the residue arm, and a qualified spelling is the smallest such reading.",
"THE FIRST OBSERVATION, kept because it is what made the class visible and because it shows the damage in production shape. Emitting `src/v2/compiler/00_compile.dag` at a 404-module import closure rendered the direct-ingest main while the SAME emission rendered `compiler_pipeline_entry() -> CompilerEntryDriver::SourceRootEvalDriver` into the same crate -- the emitted VALUE and the emitted ENTRY POINT disagreeing inside one artifact. The identical entry renders the eval-driver main at 173 and 177 modules. Shrinking that closure back to 183 restored the correct arm, which is why the closure split MUST NOT be read as the fix: it moved the corpus off the defect, it did not remove it.",
"THE REPAIR IS THE PARTITION CLOSED BY NAME. compiler_pipeline_entry_driver_is_known tests the reading against all three declared drivers and emit_main_rs refuses first, rendering a compile_error that names the module and the reading it got, so an unrecognised reading stops the line instead of selecting an arm. That wall is executed by `v1.compiler.tests` `unknown_pipeline_driver_refusal_test`, whose fixture is the accepted program above and whose red control is the pre-fix direct-ingest shape, so the rung is mitigation WITH executed evidence rather than a declared one; the CEILING is higher and the trigger is nameable: the driver is a CLOSED coproduct, so an emitter that matched the resolved variant rather than a string read back off the source span could not express this state at all. NEXT-RUNG TRIGGER: emit_main_rs selects on the resolved CompilerEntryDriver variant (an exhaustive match the emitter cannot compile with an arm missing) instead of on authored_name_at of the declaration body.",
"THE REPAIR IS THE PARTITION CLOSED BY NAME. compiler_pipeline_entry_driver_is_known tests the reading against all three declared drivers and emit_main_rs refuses first, rendering a compile_error that names the module and the reading it got, so an unrecognised reading stops the line instead of selecting an arm. That wall has a control in `v1.compiler.tests` `unknown_pipeline_driver_refusal_test`, whose fixture is the accepted program above and whose red control is the pre-fix direct-ingest shape. THE RUNG IS MITIGATION, AND THE CONTROL IS COMPILED RATHER THAN RUN: the v1-compiler-tests crate is compiled by `cargo clippy --all-targets` in witnesses.yml and executed by no CI step (DESIGN Building & checks; gunbc.rung_drop rust_unit_tests_off_the_merge_path), so the evidence is real but off the acceptance path and may not be reported as executed. NEXT STEP BEFORE ANY HIGHER CLAIM: ENROLMENT — a claim-level witness or a required lane that runs those targets, after which this control establishes the mechanism rather than merely describing it. Beyond that the CEILING is higher and the trigger is nameable: the driver is a CLOSED coproduct, so an emitter that matched the resolved variant rather than a string read back off the source span could not express this state at all. NEXT-RUNG TRIGGER: emit_main_rs selects on the resolved CompilerEntryDriver variant (an exhaustive match the emitter cannot compile with an arm missing) instead of on authored_name_at of the declaration body.",
"THE REVIEW TELL, general to the class: a selector whose last arm is reached by `else` / `return` rather than by naming its variant, over a type whose declaration is a closed coproduct. Ask what the selector does when the discriminator reads as NONE of the names — if the answer is 'the last arm', the exhaustiveness the type carries has been dropped at that boundary.",
],

Expand Down
20 changes: 4 additions & 16 deletions dag/gunbc/repo/repo_self_build.dag
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module gunbc.repo_self_build

import std.types { String, List, NonEmptyStr }
import gunbc.stage0_crate_partition_generated { generated_partition_crate_rows }
import gunbc.repo_self_warning_policy { repo_self_warning_denial, repo_self_warning_denial_rustflags }
import extdeps.cargo_build { cargo_clippy_command }
import extdeps.exec.command { argv_words }

Expand Down Expand Up @@ -130,22 +131,9 @@ fn repo_self_clippy_command() -> String {
)
}

// THAT A WARNING IS AN ERROR IS ONE FACT ABOUT THIS REPOSITORY, SPELLED ONCE. It reaches rustc
// two ways: as the lint arguments after clippy's `--` separator (the row above), and as the
// RUSTFLAGS environment cargo forwards to every rustc it spawns -- the form the required
// v2-native lane sets EXPLICITLY on the emitted compiler crate's build
// (gunbc.witness_v2_native_route NativeRouteEmittedBuild). Until that lane set it, the emitted
// crate was built under whatever RUSTFLAGS the runner's toolchain step happened to export -- the
// setup-rust-toolchain action's DEFAULT input, which this authority never declared -- so the same
// crate compiled clean on a workstation and refused with status 101 in CI, and the receipt's
// "compiled" was true of a runner rather than of the crate. The environment form is the lint
// arguments joined by a space because that is how cargo tokenises RUSTFLAGS (whitespace-split);
// it is derived here from the same row, never re-spelled at the invocation.
data repo_self_warning_denial: List<String> = ["-D", "warnings"]

fn repo_self_warning_denial_rustflags() -> String {
join(repo_self_warning_denial, " ")
}
// The warning-denial policy row moved to gunbc.repo_self_warning_policy so a consumer wanting
// only the policy does not link this module's transport (extdeps.cargo_build,
// extdeps.exec.command). It is imported above and still spelled once.

// THE DERIVED STAGE0 PARTITION CRATES, WHICH THE PACKAGE-AS-DATA DECISION ABOVE DOES NOT REACH.
// repo_self_build_package is one package because that was the whole repository's compiler for as
Expand Down
37 changes: 37 additions & 0 deletions dag/gunbc/repo/repo_self_warning_policy.dag
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
module gunbc.repo_self_warning_policy

import std.types { String, List }

// THAT A WARNING IS AN ERROR IS ONE FACT ABOUT THIS REPOSITORY, SPELLED ONCE. It reaches rustc
// two ways: as the lint arguments after clippy's `--` separator (gunbc.repo_self_build
// repo_self_clippy_command), and as the RUSTFLAGS environment cargo forwards to every rustc it
// spawns -- the form the v2-native route sets EXPLICITLY on the emitted compiler crate's build
// (gunbc.witness_v2_native_route NativeRouteEmittedBuild). Until that route set it, the emitted
// crate was built under whatever RUSTFLAGS the runner's toolchain step happened to export -- the
// setup-rust-toolchain action's DEFAULT input, which this authority never declared -- so the same
// crate compiled clean on a workstation and refused with status 101 in CI, and the receipt's
// "compiled" was true of a runner rather than of the crate. The environment form is the lint
// arguments joined by a space because that is how cargo tokenises RUSTFLAGS (whitespace-split);
// it is derived from the same row, never re-spelled at the invocation.
//
// WHY IT LIVES HERE RATHER THAN BESIDE THE COMMAND THAT USES IT (2026-09-12, #10940 srv2 closure
// receipt). This row is POLICY: what this repository asserts about warnings. Its neighbours in
// gunbc.repo_self_build are REALIZATION: how a cargo invocation is constructed
// (extdeps.cargo_build cargo_clippy_command, extdeps.exec.command argv_words). DESIGN section 3
// keeps those apart, and a `.dag` import is module-level, so a consumer that wants only the policy
// had no way to avoid the transport.
//
// THAT COST A REAL FAILURE, which is why the split is worth its own module rather than a comment.
// gunbc.witness_v2_native_route imported this constant for ONE string comparison -- the admission
// clause asking whether the recorded build denied warnings -- and thereby pulled cargo_build and
// exec.command into the EMITTED COMPILER'S closure, because v2.compiler.compile imports that
// witness. The emitted compiler never invokes cargo (the host harness does, before the emitted
// binary is spawned), so the transport was reachable in a closure that cannot use it, and the
// route's genesis build refused with 28 rustc errors in exactly those two emitted files. The
// closure grew 180 -> 189 modules when that import landed. Policy has no transport dependency;
// keeping it that way is what lets a judge read the policy without linking the actuator.
data repo_self_warning_denial: List<String> = ["-D", "warnings"]

fn repo_self_warning_denial_rustflags() -> String {
join(repo_self_warning_denial, " ")
}
Loading
Loading