Repository navigation
Tier-2 step 3: make the intent-lens ImportGraph row live (import_closure_is_clean_live over module_graph.import_closure_live) [stacked on #5669] - #5703
Merged
Conversation
… drift wall D1 (wall now): Rust drift oracle (consumed_input_closure_drift_test.rs) asserts each declared ConsumedInputClosure equals its transitive import-graph closure over the live corpus, closing the admitted slice1_status fail-open. Discriminating in both directions (drop-path under-declared / bogus-add over-declared -> red). D2 (modeled lens): Representation gains ImportGraph; ParallelRepresentationRule family carries a populated ConstructionClass verdict (reused, not minted) so a WallNow drift is a hard violation while a WallAfterGrounding/RatchetForever drift is tracked, not failed. Registry-wired via closure_is_clean_for_representation; lens_unit witnesses both drift directions, set-not-order, and the trichotomy dispatch. Tier-2 (live .dag walk) named as the dissolution trigger. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…chor binding name extdeps.ctrl.jobserver (added by #5650) declared its ExternalAuthority as data ctrl_jobserver_authority, but the extdeps_external_authority gate scans for a data item named exactly extdeps_external_authority_anchor (every other extdeps module conforms). The author-provided Https authority URI is correct; only the binding name was off, so the gate read the anchor as missing -> RED. Main CI was severely backlogged (runs queued >1h) so main's tip shipped this red unvalidated. Rename to the recognized convention (value unchanged); no other reference to the old name. Heals the gate on this PR's merge. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e witness Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-crane §3) Remove the stored ClosureFact.derived field and import_closure_is_clean(fact): a stored derived field is the redundant second authority the promotion dissolves, and a writable host-fact carrier is the fail-open. closure_is_clean becomes a pure dispatch kernel over (rule, declared, derived) lists; import_closure_is_clean_live is the SOLE tree-level authority (derives via import_graph_rule.derive). Synthetic lens_unit feeds literal lists to the kernel (class-dispatch seam). Green by execution: live 3/3, synthetic 9/9. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts: # src/v2/lens/intent_linearity.dag # src/v2/test/claim/intent_linearity/lens_unit/import_graph_test.dag
This was referenced Jun 24, 2026
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.
Tier-2 step 3: make the intent-lens ImportGraph row LIVE (shape B)
Final step of the Tier-2 grounding. Steps 1+2 (the
module_declaration_factsbuiltin + the.dagfixpoint-foldimport_closure/import_closure_liveinv2.lens.module_graph) merged as #5675. This step wires the lens row itself to derive its closure live and dissolves the host-projectedClosureFact.derivedscaffold #5669 introduced.What changes (delta over #5669)
src/v2/lens/intent_linearity.dag:ParallelRepresentationRulegains aderive: fn(String, List<String>) -> FreeMonoid<String>field (the "live walk fn field" the Tier-2 dissolution trigger named).import_graph_rule().derive = v2.lens.module_graph.import_closure_live;WallNow.constructionpromoted from the Stringresolve_imports_transitively(Rust-oracle pointer) to name that live fn.ClosureFacttype (incl. its storedderivedfield) and the oldimport_closure_is_clean(fact)predicate — a storedderivedis the redundant second authority the promotion removes, and a writable host-fact carrier is the §5 fail-open.closure_is_clean/closure_drift/closure_is_clean_for_representationare now a pure dispatch kernel over(rule, declared, derived)path-lists.import_closure_is_clean_live(declared, entry_path, pool_roots)is the sole tree-level authority: it producesderivedviaimport_graph_rule.deriveand feeds the kernel. No stored/host-projectedderivedexists for a future caller to misuse.Witnesses (
src/v2/test/claim/intent_linearity/lens_unit/):import_graph_live_test.dag(new): the lens predicate over the real corpus — declared fromtools.rust_stage0_gates.coproduct_reflection_conformance_consumed_closure, derived live overwitness_layer_roots. Both-direction discriminating teeth (drop entry → red, add bogus → red). 3/3 PASS by execution.import_graph_test.dag: refactored offClosureFactto feed literaldeclared/derivedlists to the pure kernel (the class-dispatch unit seam: WallNow vs WallAfterGrounding without a live tree). 9/9 PASS.Built on
session/swift-bat-896(#5669, which introduces theImportGraphrow) merged withmain. The diff againstmaintherefore includes #5669's content. Once #5669 merges, I merge main in — its content drops out, leaving the step-3 delta — re-confirm green, then flip ready. Not independently mergeable before #5669.🤖 Generated with Claude Code