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
4 changes: 2 additions & 2 deletions dag/gunbc/doc_graph_roots.dag
Original file line number Diff line number Diff line change
Expand Up @@ -664,9 +664,9 @@ data hand_authored_doc_bind_incomings: List<HandAuthoredDocBind> = [
HandAuthoredDocBind {
home: PlanDoc,
slug: "floor-time-namespace-walk-regression-diagnosis",
primary_work: DeclarationRef { module_path: "v1.compiler.infer", decl_name: "rewire_type_env_import_str_binding_identity", field: WholeDeclaration },
primary_work: DeclarationRef { module_path: "v1.compiler.infer", decl_name: "reconcile_with_census_extra", field: WholeDeclaration },
additional_works: [],
dissolution: PlanRetiresWhen { condition: unbound_dissolution(description: "the assembly cost class this document attributes stops being where the floor wall is, measured on a main floor run rather than asserted; the row deletes with the document. REBOUND 2026-08-21: this row named v2.workflow.ci_floor_plan gate_runnable_profile and floor_plan_at_most_one_heavy_gate_resolve_per_batch — the batch-scheduling knobs the diagnosis turned, deleted with their module by the floor cut. The diagnosis is not about scheduling: its own section 7 locates the measured root in reconcile assembly, one row of which is 58 percent of the resolve wall, and that row is the subject bound here. Registered at subject grain: the systems bound here are the ones whose movement would make this document's purpose false, not every system its prose mentions.") },
dissolution: PlanRetiresWhen { condition: unbound_dissolution(description: "the assembly cost class this document attributes stops being where the floor wall is, measured on a main floor run rather than asserted; the row deletes with the document. REBOUND 2026-10-03: this row named v1.compiler.infer rewire_type_env_import_str_binding_identity, the 58 percent row this document located. That pass is DELETED (calm-pike-525: at a fresh compile 100 percent of its rewrites were the same Rc already present, whole tree and floor subject), so the row now names reconcile_with_census_extra, the reconcile assembly the diagnosis is about; the floor-run measurement the condition asks for decides retirement. REBOUND 2026-08-21: this row named v2.workflow.ci_floor_plan gate_runnable_profile and floor_plan_at_most_one_heavy_gate_resolve_per_batch — the batch-scheduling knobs the diagnosis turned, deleted with their module by the floor cut. The diagnosis is not about scheduling: its own section 7 locates the measured root in reconcile assembly, one row of which is 58 percent of the resolve wall, and that row is the subject bound here. Registered at subject grain: the systems bound here are the ones whose movement would make this document's purpose false, not every system its prose mentions.") },
},
HandAuthoredDocBind {
home: PlanDoc,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ data name_canonicalisation_depends_on_the_co_compiled_graph: RecurringFailureMod
receipts: [
"INVALID STATE: a module's resolution depends on which OTHER modules are compiled in the same graph. v1.compiler.infer rewire_type_env_import_str_binding_identity builds build_export_indexes over the whole graph's module list, and rewire_canonical_rewrites withholds a module's canonical rewrite of an inherited name when facts.exporter_count > 1 -- the number of modules IN THAT GRAPH exporting the name, not the number the module can see. The same module source is therefore wired one way in a small closure (e.g. a planning entry such as src/v2/workflow/floor_diff_observe.dag, 83 modules) and another way in a larger one that happens to contain a second exporter of one of its inherited names (the floor's prepared subject, thousands of modules). HARM: non-hermetic resolution -- one source means different things in different closures, so an answer established over one entry's graph is not an answer about the module, and sharing or reusing a wired module across graphs (the per-module wiring this blocked, gunbc#12774 thread) is unsound until it is scoped.",
"RUNG FOUND AT: outside the ladder -- latent, found by reading the fold while deriving whether wiring could be shared per module, not by an incident. NO LIVE SPECIMEN YET, stated rather than implied: the three planning-store graphs on main's floor wire all 40 shared modules identically (gunbc#12774 floor_retention_census duplicated_paths=40 identical_wiring=40), which shows those closures agree, not that the rule is hermetic. A specimen is a module and an inherited name N such that exactly one module exports N in a small closure containing it and two or more do in a larger one; resolving the module under both entries and comparing its ancestry_str_bindings[N] resolved node reds it. Constructing that as a fixture is this row's first control.",
"CEILING: structurally guaranteed. Ambiguity of an inherited name is decidable from the module's OWN import closure, which is fixed by its source; scoping build_export_indexes to that closure makes the canonicalisation a function of the module and the pool alone, and per-module wiring then follows by construction. NEXT-RUNG TRIGGER, NAMING THE CAPABILITY: rewire_canonical_rewrites counts exporters over the importing module's DECLARED SCOPE -- its own module plus its explicit imports -- as a third client of the one declared-scope definition that quiet-hawk-702's Node.declaration cut installs, never a second scope rule beside it; with a real-pool differential of diagnostics and claim outcomes before and after. Ruled by neat-boar-16 (2026-09-30): per-module scope, admitted as silent-wrongness removal on the self-host path under gunbc.v1_maintenance_standing v1_seed_standing. OWNER: quiet-gull-780's lane. Once it lands, wiring becomes a function of the module and the pool, and the per-module wiring share (one wire per module at the pool's MultiEntryIndex, measured by assembly_rewire before/after) is handed to that lane."
"CEILING: structurally guaranteed. Ambiguity of an inherited name is decidable from the module's OWN import closure, which is fixed by its source; scoping build_export_indexes to that closure makes the canonicalisation a function of the module and the pool alone, and per-module wiring then follows by construction. NEXT-RUNG TRIGGER, NAMING THE CAPABILITY: rewire_canonical_rewrites counts exporters over the importing module's DECLARED SCOPE -- its own module plus its explicit imports -- as a third client of the one declared-scope definition that quiet-hawk-702's Node.declaration cut installs, never a second scope rule beside it; with a real-pool differential of diagnostics and claim outcomes before and after. Ruled by neat-boar-16 (2026-09-30): per-module scope, admitted as silent-wrongness removal on the self-host path under gunbc.v1_maintenance_standing v1_seed_standing. OWNER: quiet-gull-780's lane. Once it lands, wiring becomes a function of the module and the pool, and the per-module wiring share (one wire per module at the pool's MultiEntryIndex, measured by assembly_rewire before/after) is handed to that lane.",
"REMOVED (calm-pike-525, 2026-10-03): the mechanism this row describes is DELETED rather than scoped. rewire_type_env_import_str_binding_identity and its private helpers (build_export_indexes, rewire_canonical_rewrites, the exporter-count folds) no longer exist, so no resolution depends on which other modules share the graph: the class has no constructor left, which is structural impossibility, above this row's stated ceiling. Why deletion rather than the scoping the trigger names: at a fresh compile 100 percent of the pass's rewrites were the SAME Rc already in the map, so it changed no answer (the reconcile-interior probe, calm-pike-525/reconcile-interior-probe, at the floor subject and at the whole tree; its census counted every stamped rewrite by kind). Its only non-identical input was the typed-snapshot assembly route, whose decoded bindings are COPIES of the canonical ones; no answer-producing reader compares bindings by Rc identity (binding_same_authority compares span then structure), so copies change memory, not answers. Measured on the warm typed-snapshot route too (neat-boar-16, srv1, probe pin f0d4caeb43, entry dag/std/decision.dag, three processes over a persisted store): the resolve-answer digest is identical with and without the pass, no rewrite substituted a different declaration (116 of 19,548 warm rewrites were value-equal decoded copies, the rest the same Rc), and skipping the pass changed the warm heap by under 10 MB, so the copies cost nothing measurable and no decode-time hash-cons is needed. The kernel guard above it (ancestry_binding_is_kernel_identity) is deleted with it, because the substitution it guarded against has no remaining producer.",
],

evidence: [],
Expand Down
8 changes: 4 additions & 4 deletions src/v1/04_env.dag
Original file line number Diff line number Diff line change
Expand Up @@ -1072,10 +1072,10 @@ fn lookup_type(env: TypeEnv, ident: Int) -> Node? {
// cycle -- had to re-derive the same question inside declaration_provenance_of. So the ruling's
// "exists once" was true of the name and false of the fact. The body that stood here inlined
// `concat("<kernel:", name, ">")`, reproducing kernel_span's output by hand, which made it a second
// authority for the span FORMAT as well; the relocated declaration asks kernel_span instead. Both
// consumers this module used to supply -- the infer-side rewire guard
// (ancestry_binding_is_kernel_identity) and the emit-side use-line decision -- now import it from
// v1.std.core directly, so they cite the authority's real home rather than this waypoint. The
// authority for the span FORMAT as well; the relocated declaration asks kernel_span instead. This
// module used to supply two consumers. The infer-side rewire guard (ancestry_binding_is_kernel_identity)
// is deleted along with the import-str identity rewire it guarded. The emit-side use-line decision now
// imports it from v1.std.core directly, citing the authority's real home rather than this waypoint. The
// emitter's additional condition -- that the kernel node is a host-realized structureless scalar
// (NoConnective, zero children), which excludes structural kernels like Bool = True | False whose
// use-line IS the path to the realization -- is unchanged: a SEPARATE fact composed beside this
Expand Down
Loading