Skip to content
Closed
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
97 changes: 97 additions & 0 deletions docs/probes/e0308_partition_2026-08-22/MEMBER_SETS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Member sets per root, in the adopted identity form — and the emitted-Rust → authority-name bridge

Derived from the `1ed02057a5` measurement. **This is an additional derived artifact; it does not
replace the counts in [`REMEASURE_1ed02057a5.md`](REMEASURE_1ed02057a5.md).** Those are ref-stamped
observations, and rewriting them into member sets would substitute a later derivation for what was
actually measured — the same move as a count copied off the current tree standing in for an oracle.

## The identity

```
(module, AUTHORITY symbol, normalized expected -> found relation, root)
```

Never a positional coordinate, and never an emitter-generated name. Rows:
[`members_by_root_1ed02057a5.tsv`](members_by_root_1ed02057a5.tsv).

**148 canonical sites → 128 distinct identities, 0 unresolved, across 44 authority modules.**

| root | members | | root | members |
|---|---|---|---|---|
| R1 | 27 | | C | 6 |
| R2 | 24 | | ELEM-COLL | 5 |
| D | 16 | | W | 3 |
| T3 | 14 | | B2 | 2 |
| A-clone | 12 | | B3 | 2 |
| ARG-ORDER | 7 | | DIAG | 2 |
| **RESIDUE** | **7** | | BOX-WRAP | 1 |

Residue is published as named members, not as a remainder — all seven rows are in the TSV.

## Why the symbol alone is not the identity

Measured on the published 154-site partition: **154 sites → 99 distinct `(module, symbol)` pairs.**
33 symbols carry more than one site (the largest, `v2.compiler.eval :: eval_computation_node`, holds
ten), and one symbol spans **two different roots**. Two consequences a bare symbol set hides:

- *"Two lanes found the same symbol"* would not mean they found the same defect.
Cross-lane overlap detection is the whole point of identity-keyed reporting, and a join that
manufactures false agreement is worse than the fraction it replaces — a fraction at least
announces that it is a summary.
- A symbol spanning two roots cannot be assigned to a root at all.

The normalized `expected -> found` relation restores exactly what the symbol drops. It is also the
most stable field measured here: it survived a 63-commit gap and two different rustc builds
unchanged.

## The bridge, stated as a rule

Other lanes reporting sites in **emitted** Rust need the same mapping back to authority names.

### 1. Module — read the declaration, never transform the filename

Every emitted file carries its authority on line 2:

```rust
// Generated by v1 compiler -- do not edit.
// Source module: v2.lens.coverage
```

The tempting textual rule — replace `_` with `/` — is **ambiguous and silently wrong**.
`std_realization_schedule.rs` is `std/realization_schedule`, but nothing in the filename
distinguishes that from `std/realization/schedule`, because module segments contain underscores
themselves. It works on whichever cases you happen to check.

### 2. Symbol — top-level items only

Take the nearest enclosing `fn`/`struct`/`enum`/`type` **at column 0**. Anything indented is
emitter-generated.

**This half exists because of a measured failure.** Taking the nearest enclosing item — the obvious
rule — returned `v2_lens_coverage :: CACHED` for thirteen sites. `CACHED` is the `thread_local`
static the emitter writes inside *every* data-definition function, so thirteen distinct authority
symbols reported as one name, presenting as a tidy one-symbol-thirteen-site cluster that no reviewer
would question. Restricting to column 0 yields the thirteen real symbols
(`coverage_defect_discriminant_predicate`, `coverage_defect_degenerate_type`, …), one site each.

`CACHED`, `__m`, `__sorted` and their siblings are **collisions by construction, not identities** —
the codegen mints the same name at every site by design, so the collision is guaranteed rather than
accidental.

### 3. Then attach the relation and the root

Per the identity above.

### The rule under both halves

**Prefer the declaration the producer wrote over a name you can reconstruct.** The header is
declared; the filename transform is reconstructed. The top-level symbol is authored; `CACHED` is
generated. In both cases the reconstructed form is the one that silently merges things that differ.

## One methodological constraint on reproducing this

Line-to-symbol resolution is **positional**, so sites must be symbolized against the emit tree from
**their own ref**. Symbolizing one ref's sites against another ref's emit mis-assigns names — the
same rot that disqualifies `file:line` as an identity. This artifact was produced by rebuilding at
`1ed02057a5` and re-emitting there, rather than reusing an emit tree already on disk from a
different ref.
129 changes: 129 additions & 0 deletions docs/probes/e0308_partition_2026-08-22/members_by_root_1ed02057a5.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
root module authority_symbol normalized_relation
A-clone std.realization_reconcile Reconciliation A -> &A
A-clone std.realization_reconcile Reconciliation _ -> &_
A-clone v2.extdeps.languages.fidelity FidelityDisposition Feature -> &Feature
A-clone v2.extdeps.languages.fidelity FidelityDisposition _ -> &_
A-clone v2.std.algebra ListHeadResult T -> &T
A-clone v2.std.algebra ListHeadResult _ -> &_
A-clone v2.std.node_query CoproductNullaryInhabitantLookup T -> &T
A-clone v2.std.node_query CoproductNullaryInhabitantLookup _ -> &_
A-clone v2.std.passing_candidate_fold PassingCandidateFold T -> &T
A-clone v2.std.passing_candidate_fold PassingCandidateFold _ -> &_
A-clone v2.std.staging CacheProbe B -> &B
A-clone v2.std.staging CacheProbe _ -> &_
ARG-ORDER v2.compiler.eval eval_computation_node ->
ARG-ORDER v2.compiler.eval eval_computation_node Rc<EvaluationEnvironment> -> Rc<InferredTree>
ARG-ORDER v2.compiler.eval eval_computation_node Rc<InferredFacts> -> Rc<EvaluationEnvironment>
ARG-ORDER v2.compiler.eval eval_computation_node Rc<InferredTree> -> Rc<Vector<Rc<RuntimeValue>>>
ARG-ORDER v2.compiler.eval eval_computation_node Rc<RuntimeBehaviorInterpreter> -> Rc<InferredFacts>
ARG-ORDER v2.compiler.eval eval_computation_node Rc<Vector<Rc<RuntimeValue>>> -> Rc<RuntimeBehaviorInterpreter>
ARG-ORDER v2.compiler.eval eval_runtime_control_node ->
B2 v2.std.logic bool_boolean_algebra Bool -> False
B2 v2.std.logic bool_boolean_algebra Bool -> True
B3 v2.std.integer integer_nat_decimal_digit_char Rc<Nat> -> {integer}
B3 v2.std.integer integer_nat_to_decimal_string Rc<Nat> -> {integer}
BOX-WRAP v2.std.text string_head i64 -> Box<i64>
C v2.lens.complexity_lowering cost_class_is_lowerable Rc<ComplexityLowering> -> ()
C v2.lens.complexity_lowering lowering_catalog Vector<()> -> Vector<Rc<ComplexityLowering>>
C v2.lens.complexity_lowering minimized_class Rc<ComplexityLowering> -> ()
C v2.lens.coverage missing_coverage () -> Rc<Coverage<C>>
C v2.std.grammar derive_grammar_relation_token_edges_recursive () -> Rc<Vector<Rc<Edge>>>
C v2.std.grammar derive_grammar_relation_token_edges_recursive Witness<Rc<Vector<Rc<Edge>>>> -> Witness<()>
D std.realization_schedule cost_account_predicted_zero Rc<Measure<(), S, Rc<i64>>> -> Rc<Measure<(), _, i64>>
D std.realization_schedule cost_account_predicted_zero Rc<Measure<_, S, Rc<i64>>> -> Rc<Measure<_, _, i64>>
D std.realization_schedule cost_account_time_count Rc<Measure<_, _, i64>> -> Rc<Measure<(), S, Rc<i64>>>
D v2.lens.coverage coverage_defect_canonical_carrier Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_carrier_clone Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_catamorphism Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_degenerate_type Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_discriminant_predicate Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_hollow_type Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_off_substrate_fact Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_parallel_authority Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_plausible_fallback Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_skeleton_collapse Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_template_hole Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_vacuous_arm Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
D v2.lens.coverage coverage_defect_wrong_home Coverage<Rc<CoverageDefectAcceptanceKey>> -> CoverageDefectAcceptanceKey
DIAG v2.compiler.source_authority source_ref_read_result_to_outcome Rc<Diagnostic> -> Rc<NonEmptyDiagnostics>
DIAG v2.compiler.source_authority source_root_ingest_from_source_refs Rc<Diagnostic> -> Rc<NonEmptyDiagnostics>
ELEM-COLL std.state_durability state_durability_boundary_requirement_list Rc<StateDurabilityBoundary> -> Rc<Vector<Rc<StateDurabilityBoundary>>>
ELEM-COLL std.state_durability state_durability_boundary_requirements StateDurabilityBoundary -> Vector<Rc<StateDurabilityBoundary>>
ELEM-COLL std.state_durability state_durability_boundary_requirements_refusal StateDurabilityBoundary -> Vector<Rc<StateDurabilityBoundary>>
ELEM-COLL std.state_durability state_durability_definition_linkage_unavailable_assertions StateDefinitionCallerAssertion -> Vector<Rc<StateDefinitionCallerAssertion>>
ELEM-COLL v2.std.fold_assembly fold_per_element_of Rc<Outcome<Rc<Vector<Rc<Vector<Rc<Node>>>>>>> -> Rc<Outcome<Rc<Vector<Rc<Node>>>>>
R1 std.cache_interface cache_layer_cost_justified Rc<Measure<(), (), i64>> -> Rc<Measure<(), (), Rc<i64>>>
R1 std.cache_interface cache_layer_cost_justified Rc<Measure<_, _, i64>> -> Rc<Measure<_, _, Rc<i64>>>
R1 std.cache_interface cache_reach_candidate_probe Rc<Measure<(), (), i64>> -> Rc<Measure<(), (), Rc<i64>>>
R1 std.cache_interface cache_reach_candidate_probe Rc<Measure<_, _, i64>> -> Rc<Measure<_, _, Rc<i64>>>
R1 std.checked_arithmetic checked_int_magnitude Rc<i64> -> i64
R1 std.measure positive_measure_count Rc<i64> -> i64
R1 std.realization_measurement cost_account_measured_from_time_and_space Rc<Measure<(), S, Rc<i64>>> -> Rc<Measure<(), S, i64>>
R1 std.realization_measurement cost_account_measured_from_time_and_space Rc<Measure<_, _, Rc<i64>>> -> Rc<Measure<_, _, i64>>
R1 std.realization_schedule cost_account_measured Rc<Measure<(), S, Rc<i64>>> -> Rc<Measure<(), S, i64>>
R1 std.realization_schedule cost_account_measured Rc<Measure<_, _, Rc<i64>>> -> Rc<Measure<_, _, i64>>
R1 v2.compiler.infer infer_descent_witness_for_node Witness<Rc<TerminationProof>> -> Witness<TerminationProof>
R1 v2.compiler.name_resolve admit_named_exports Rc<AdmitExportsFold> -> AdmitExportsFold
R1 v2.compiler.source_authority source_root_ingest_build_from_source_refs Rc<SourceRefReadResult> -> SourceRefReadResult
R1 v2.extdeps.runtimes.v2_evaluator v2_eval_nth_child_target Rc<Edge> -> Edge
R1 v2.lens.complexity_accumulator_copy.analyze accumulator_copy_report Rc<Vector<Finding>> -> Rc<Vector<Rc<Finding>>>
R1 v2.lens.complexity_accumulator_copy.analyze collect_value_identifiers_into Rc<Edge> -> Edge
R1 v2.lens.complexity_accumulator_copy.analyze lowered_transform_port_readings Rc<Vector<Rc<PortReading>>> -> Rc<Vector<PortReading>>
R1 v2.lens.complexity_accumulator_copy.analyze lowered_transform_port_readings Vector<PortReading> -> Vector<Rc<PortReading>>
R1 v2.lens.cost symbolic_product Rc<Nat> -> Nat
R1 v2.lens.determinism determinism_contract_witness Witness<Rc<DeterminismFact>> -> Witness<DeterminismFact>
R1 v2.lens.enforcement.standing_intent standing_intent_model_anemia_repo_wide Vector<NarrowingReason> -> Vector<Rc<NarrowingReason>>
R1 v2.lens.enforcement.standing_intent standing_intent_single_authority_consolidation Vector<NarrowingReason> -> Vector<Rc<NarrowingReason>>
R1 v2.lens.machine_shape machine_shape_construction_findings Rc<MachineShapeWalkResult> -> MachineShapeWalkResult
R1 v2.std.compilers.lexing token_stream_remaining Vector<Rc<Token>> -> Rc<Vector<Rc<Token>>>
R1 v2.std.compilers.target_model target_value_expr_effect_apply_callee HashMap<_, _> -> Rc<HashMap<_, _>>
R1 v2.std.grammar derive_grammar_relation_token_edges_recursive Rc<DeriveGrammarRelationTokensProgress> -> DeriveGrammarRelationTokensProgress
R1 v2.std.grammar derive_grammar_relation_token_edges_recursive_step Rc<DeriveGrammarRelationTokensProgress> -> DeriveGrammarRelationTokensProgress
R2 std.cache_interface cache_facts_for_id Rc<CacheInterfaceFacts> -> Option<Rc<CacheInterfaceFacts>>
R2 std.cache_interface cache_facts_for_id Rc<_> -> Option<Rc<_>>
R2 std.cache_interface cache_layer_plan_fallback String -> Option<String>
R2 std.cache_interface cache_layer_plan_primary String -> Option<String>
R2 std.cache_interface cache_reach_candidate_recompute Option<String> -> None
R2 v2.compiler.body_lowering_fold body_lower_try_if_from_captured Rc<Outcome<Option<Rc<Node>>>> -> Rc<Outcome<Rc<Node>>>
R2 v2.compiler.body_lowering_fold body_lower_try_if_from_captured Rc<Outcome<Option<Rc<_>>>> -> Rc<Outcome<Rc<_>>>
R2 v2.compiler.eval eval_runtime_binding_lookup Option<_> -> Rc<RuntimeValue>
R2 v2.compiler.eval inferred_facts_witness_for_eval Option<Rc<InferredFacts>> -> Rc<InferredFacts>
R2 v2.compiler.eval inferred_facts_witness_for_eval Option<Rc<_>> -> Rc<_>
R2 v2.compiler.infer inferred_facts_witness_for_node Option<Rc<InferredFacts>> -> Rc<InferredFacts>
R2 v2.compiler.infer inferred_facts_witness_for_node Option<Rc<_>> -> Rc<_>
R2 v2.compiler.parse parse_table_entries_lookup Option<Rc<ParseMemoEntry>> -> Rc<ParseMemoEntry>
R2 v2.compiler.parse parse_table_entries_lookup Option<Rc<_>> -> Rc<_>
R2 v2.compiler.target_carriers target_fidelity_quotient_optional Option<Rc<Node>> -> Rc<Node>
R2 v2.compiler.target_carriers target_fidelity_quotient_optional Option<Rc<_>> -> Rc<_>
R2 v2.extdeps.languages.dag dag_bind_target_model Option<Rc<TargetEmitHostRuntimeRow>> -> Rc<TargetEmitHostRuntimeRow>
R2 v2.extdeps.languages.dag dag_bind_target_model Option<Rc<_>> -> Rc<_>
R2 v2.extdeps.languages.dag dag_loop_target_model Option<Rc<TargetEmitHostRuntimeRow>> -> Rc<TargetEmitHostRuntimeRow>
R2 v2.extdeps.languages.dag dag_loop_target_model Option<Rc<_>> -> Rc<_>
R2 v2.extdeps.languages.dag dag_pick_target_model Option<Rc<TargetEmitHostRuntimeRow>> -> Rc<TargetEmitHostRuntimeRow>
R2 v2.extdeps.languages.dag dag_pick_target_model Option<Rc<_>> -> Rc<_>
R2 v2.std.provenance span_index_lookup Option<Rc<OriginEvent>> -> Rc<OriginEvent>
R2 v2.std.provenance span_index_lookup Option<Rc<_>> -> Rc<_>
RESIDUE std.state_durability state_durability_boundaries_evidence_verdict Rc<StateDurabilityEvidence<Target, ReadbackSubject>> -> Rc<Vector<Rc<StateDurabilityEvidence<Target, ReadbackSubject>>>>
RESIDUE v2.compiler.source_authority normalized_source_ast_equal_witness Rc<Node> -> Rc<NormalizedTree>
RESIDUE v2.lens.determinism determinism_axis_for_node Rc<Determinism> -> Rc<Edge>
RESIDUE v2.std.cardinality termination_proof_witness_for_node Rc<Witness<Rc<TerminationProof>>> -> Rc<Edge>
RESIDUE v2.std.compilers.target_model source_atom_char_projection_from_node i64 -> String
RESIDUE v2.std.compilers.target_model target_use_site_ownership_catalog_lookup_step_for_row TargetUseSiteOwnershipLookup -> TargetUseSiteOwnershipCatalogLookup
RESIDUE v2.std.compilers.target_model target_value_expression_char_unicode_scalar String -> i64
T3 v2.compiler.eval empty_runtime_bindings HashMap<Rc<EnvironmentBindingKey>, Rc<RuntimeValue>> -> Rc<PartialFunction<_, _>>
T3 v2.compiler.infer facts_map_from_entries HashMap<Rc<Node>, Rc<InferredFacts>> -> Rc<PartialFunction<_, _>>
T3 v2.compiler.infer infer_emit_shape_frontier_inferred_tree HashMap<Rc<Node>, Rc<InferredFacts>> -> Rc<PartialFunction<_, _>>
T3 v2.compiler.parse compute_nullable_set OrdSet<String> -> Rc<PointwisePower<_>>
T3 v2.compiler.parse parse_table_empty OrdSet<String> -> Rc<PointwisePower<_>>
T3 v2.compiler.parse set_symbol_insert OrdSet<String> -> Rc<PointwisePower<_>>
T3 v2.compiler.resolve empty_canonical_symbol_set OrdSet<String> -> Rc<PointwisePower<_>>
T3 v2.extdeps.languages.llvm_ir llvm_float_spec_facts HashMap<String, Rc<Node>> -> Rc<PartialFunction<_, _>>
T3 v2.extdeps.languages.llvm_ir llvm_integer_spec_facts HashMap<String, Rc<Node>> -> Rc<PartialFunction<_, _>>
T3 v2.extdeps.runtimes.v2_effect_io_pure effect_io_pure_empty_environment HashMap<Rc<EnvironmentBindingKey>, Rc<RuntimeValue>> -> Rc<PartialFunction<_, _>>
T3 v2.extdeps.runtimes.v2_evaluator v2_eval_empty_bindings HashMap<Rc<EnvironmentBindingKey>, Rc<RuntimeValue>> -> Rc<PartialFunction<_, _>>
T3 v2.std.collection map_insert HashMap<K, V> -> Rc<PartialFunction<_, _>>
T3 v2.std.language_model language_model_empty_canonical_symbols OrdSet<String> -> Rc<PointwisePower<_>>
T3 v2.std.model_core model_core_bool_spec_facts HashMap<String, Rc<Node>> -> Rc<PartialFunction<_, _>>
W v2.compiler.compile apply_compile_lens_introspect Witness<Rc<Node>> -> Witness<Rc<Outcome<Rc<Witness<Rc<Node>>>>>>
W v2.compiler.eval eval_runtime_value_acceptance_witness Witness<Rc<InferredFacts>> -> Witness<Rc<RuntimeValueAcceptanceWitness>>
W v2.compiler.eval eval_runtime_value_acceptance_witness Witness<Rc<Node>> -> Witness<Rc<RuntimeValueAcceptanceWitness>>
Loading