Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 0 additions & 6 deletions dag/gunbc/ci_layer_roots.dag
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,6 @@ data witness_exclusion_frontier: List<WitnessExclusionRow> = [
reason: "interpreted corpus walk prices out of every CI lane (measured ~33s/module parse, hours full run; see corpus_witness_note in the test file); the CI-cadence corpus consumer is the retained host projection v2.lens.mandatory_tag.corpus_scan",
dissolution: unbound_dissolution(description: "witness realization executes the corpus walk at native speed; then the witness enrolls and this row deletes")
},
WitnessExclusionRow {
pattern: "long/qualified_spelling_identity_witness_test.dag",
classification: OfflineLocalRecipe,
reason: "QUARANTINED ON OPERATOR RULING 2026-08-23, AND THE MEASUREMENT IS WHY IT IS ALSO A FILED DEFECT RATHER THAN ONLY A COST ROW. qualified_spelling_takes_the_shared_layer completed and then exceeded the 5000ms executor fail-stop by 11x -- wall_ms=57337, cpu_ms=57193 on run 32657761997 -- while growing RSS by 1.22GB to a 11.70GB process. THE SPLIT THAT WAS SUPPOSED TO FIX THIS DID NOT: gunbc#8984 measured the conjoined two-arm claim at 1.22GB, split the arms into separate test fns on that reasoning, and the QUALIFIED ARM ALONE still measures 1.22GB -- the identical figure -- while the bare arm appears in no over-cost or memory line at all. So the cost was never the two live compile_dag_rust_emit_check calls; it is specific to the qualified-name resolution path, which is the path #8984 exists to repair. This row therefore quarantines a witness AND records an unexplained cost-shape defect; it is not a witness that is merely heavy. WHY IT WAS NOT CAUGHT BEFORE MERGE: #8984 landed in the batch after the last green main run, while main refused at floor PREPARATION on an unrelated ArgvCommand seal break, so its floor phase never executed and this row never surfaced on its own check -- the same masking that hid gunbc#9022's roster defect in the same batch. Local recipe: claim_batch --source-root dag --source-root src/v2 --entry dag/test/claim/long/qualified_spelling_identity_witness_test.dag --functions qualified_spelling_takes_the_shared_layer,bare_spelling_shared_layer_is_unchanged",
dissolution: unbound_dissolution(description: "the qualified-name resolution cost defect is root-caused and repaired, at which point the arm measures under gunbc_ci_fast_lane_eval_budget_ms and this row deletes with the move back to dag/test/claim/. This row does NOT dissolve on a per-witness cost envelope: an envelope large enough to admit 1.22GB and 57s would admit the defect rather than measure it, and the operator's ruling was to quarantine AND find the cause, not to raise the ceiling")
},
WitnessExclusionRow {
pattern: "long/cited_symbol_resolution_witness_test.dag",
classification: OfflineLocalRecipe,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module test.claim.long.qualified_spelling_identity_witness_test
module test.claim.qualified_spelling_identity_witness_test

data qualified_spelling_identity_note: String = "THE EMITTER CONTRACT, IN THE DIRECTION THE CORPUS IS MOVING. Same resolved declaration, different authored spelling, must produce the same Rust. Its converse is the container-head law already recorded in this repository -- same leaf, different resolved identity, must produce different Rust -- and both are one principle: emission is decided from RESOLVED IDENTITY, never from the authored string. MECHANISM: emit_field_value_with_context decided the shared reference layer of a record-literal FIELD VALUE with set_contains(shared_types, rc_name) where rc_name is the name AS AUTHORED, while shared_types is keyed on the bare declared name (the same mismatch alias_rhs_qualified_name_routing_note records for every other lookup on that path). A qualified spelling matched nothing, so the field value was emitted UNWRAPPED into a field whose declared type is Rc<T> -- not a style difference but a type error rustc reports as E0308, and one that no amount of correct declaration can compensate for. needs_box_wrapping read the same authored spelling for the same decision and is repaired with it. MEASURED, minimal, both arms in one fixture: the qualified consumer emitted `uri: QualspellUri \{` where the bare consumer emitted `uri: Rc::new(QualspellUri \{`, against one provider both consumers reference. WHY MAIN IS GREEN WITHOUT THIS: the measured v1 seed closure contains almost no qualified type reference, so an ordinary green regen exercises the bare arm only -- which is exactly why this witness authors the qualified arm rather than relying on the corpus to contain one. 4066 qualified dotted type references already exist corpus-wide (555 files, 2314 of them in src/v2) and enter the seed closure as v2 self-hosting advances, so the population that reaches this path grows with the roadmap. ZERO-DRIFT: qualified_last_segment is the identity on an unqualified name, so every bare spelling emits exactly as before -- receipt, a full required-regen over the 132-module subject drifted only v1_compiler_emit_rust.rs, this repair itself. DECLARED RESIDUE, not covered here and not claimed: a qualified reference to a zero-parameter ALIAS is still peeled to its target, and where that target lives in a THIRD module the peeled name reaches the output with no use-line (E0412). Located cause: a qualified reference parses as a module-projection spine, so it fails the NoConnective-and-childless guard on the alias-preserving branch of render_rust_fn_sig_type and never reaches the alias lookup at all. The fixture already carries that shape (QualspellFloor aliases into test.fixture.qualspell_target) so the next repair has its RED waiting. dissolve-on: never -- permanent regression control for the spelling-identity law. COST, MEASURED ON THE FIRST CI RUN RATHER THAN PREDICTED: as a single conjoined claim this witness was the floor worst single claim at 1.22GB RSS growth, against 0.12GB for the whole rest of the roster on the same-day main run -- both compile_dag_rust_emit_check calls are live inside one claim and each builds a corpus-wide scope. The two arms are therefore separate test fns: they are independent propositions (the RED and its regression control), a failure now names WHICH arm broke instead of one conjoined false, and each compile is evaluated and collected on its own. DESIGN section 6 bare-minimum-cost -- a proven cost-shape defect is fixed regardless of the realized n, and this one measured 10x the roster worst."

Expand Down
2 changes: 1 addition & 1 deletion dag/test/fixture/qualspell_provider.dag
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module test.fixture.qualspell_provider

data qualspell_provider_fixture_note: String = "Provider fixture for test.claim.long.qualified_spelling_identity_witness_test (moved to the long/ home 2026-08-23, see gunbc.ci_layer_roots): one shared nominal RECORD (QualspellUri) and a HOLDER whose field declares it, which is the smallest pair that puts a record literal in a FIELD position whose declared type sits at the shared reference layer. No imports, so the witness closure stays minimal (witness-cost ruling, DESIGN open thread 2026-08-04). The names are deliberately unlike anything in the seed, so a homonym in the bare-name registry cannot satisfy the assertions by accident. SCOPE, learned by execution rather than assumed: this module stays self-contained because compile_dag_rust_emit_check compiles the probe against a restricted source set -- an earlier revision aliased into a THIRD fixture module and the check went red on the BARE control, which is the harness refusing the closure, not the emitter failing. The alias-peel class therefore has no witness here and is carried as declared residue in the claim note."
data qualspell_provider_fixture_note: String = "Provider fixture for test.claim.qualified_spelling_identity_witness_test: one shared nominal RECORD (QualspellUri) and a HOLDER whose field declares it, which is the smallest pair that puts a record literal in a FIELD position whose declared type sits at the shared reference layer. No imports, so the witness closure stays minimal (witness-cost ruling, DESIGN open thread 2026-08-04). The names are deliberately unlike anything in the seed, so a homonym in the bare-name registry cannot satisfy the assertions by accident. SCOPE, learned by execution rather than assumed: this module stays self-contained because compile_dag_rust_emit_check compiles the probe against a restricted source set -- an earlier revision aliased into a THIRD fixture module and the check went red on the BARE control, which is the harness refusing the closure, not the emitter failing. The alias-peel class therefore has no witness here and is carried as declared residue in the claim note."

type QualspellScheme
= QualspellHttp
Expand Down
Loading