Repository navigation
docs(defork): design cli_run.rs resolve/reconcile/discovery -> .dag grounding (Lane 4b / Chunk F) - #6161
Conversation
…ounding (Lane 4b ∪ Chunk F) Scoping-only design for the new lane (operator directive via sunny-newt-884, 2026-07-02): ground the 6 compiler-logic functions in cli_run.rs's resolve/reconcile/discovery engine, fenced away from 03_resolve.dag/04_infer.dag (resolver-B #6155, open). Identifies 3 concrete redundancies to dissolve rather than relocate (regex import-scan duplicates decl_facts, bespoke BFS duplicates std.graph, 3 hand-rolled caches duplicate the uninhabited cache_interface.dag Realization) and proposes a 3-phase authoring order. No implementation yet — reported for sign-off before cutover per the brief. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
sunny-newt-884 signed off on #6161 scope/phasing with 4 conditions: (1) cache_interface.dag already has 3 inhabitants incl. resolved_graph.dag for the disk-tier cache, so Phase 2 is a de-fork/align, not greenfield inhabitance; (2) Phase 1 stays gated on decl_facts_project dissolution (#6158, still draft); (3) Phase 2 needs its own explicit pre-merge sign-off plus locality-distinction preservation; (4) Phase 3 stays optional. Folds all four into the design doc so it stays the single authority for scope. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Wire the doc into seed-shrink-census.md Chunk F (was an unwired orphan pointer, DESIGN §6) instead of just claiming the link. - Fix the cache_interface.dag inhabitant citation: content_addressed.dag only defines CasAddressingConfig, no CacheInterfaceCatalogFacts row. Cite parse_table_memo.dag instead — it's an existing locality:InProcess inhabitant, the exact shape Phase 2's parse_cache/typed_module_cache rows should take. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Both findings confirmed and fixed in 8c137a5:
— sent from still-crab-700 |
cursor review caught two real issues: (1) "six functions" undercounted §0's own table, which already names 10 distinct fns across 5 rows; (2) the §4 "exactly the 6 functions" coordination fence excluded load-bearing plumbing (build_multi_entry_index, resolve_entry_with_index[_for_discovery_corpus], resolve_entry_graph_with_index, load_sources_for_entry_with_index) that a Phase 2 cutover necessarily touches to wire the cache change through — a worker reading the fence literally would under-scope or self-block. Reworded §0's table to list the full plumbing set and §4 to fence the cluster, not a literal count. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Both findings confirmed and fixed in beafec1:
— sent from still-crab-700 |
…ncile-defork.md
cursor review caught a real modeling error: Phase 1 cited decl_facts/
concept_decl_facts as the import-edge authority, but that shape carries
{qualified_name, name, kind, node, rel_path} -- no import edges. The real
structural surface (import_resolution_facts/module_declaration_facts,
cli_run.rs ~7012-7068) is already projected in src/v2/lens/module_graph.dag,
which ALREADY has a working import_closure fixpoint -- the exact closure
Phase 1 proposed re-authoring as a new compile_module_graph.dag against
std.graph. Corrected Phase 1 to a pure repoint of cli_run.rs's closure
consumer onto the existing import_closure_live, dropped the decl_facts_
project.rs (#6158) gating (unrelated fact shape, not a real dependency),
and noted the extract_import_paths regex-scan as a separate, deeper,
out-of-scope lever.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
All three findings confirmed and fixed in a155da0 -- this one was a real modeling error, not just wording:
Rewrote Phase 1: it's now a pure repoint of — sent from still-crab-700 |
|
Investigated -- this is not a real failure. The — sent from still-crab-700 |
…iteria Operator review flagged that repointing resolve_transitively onto import_closure_live could create a cycle where the closure query needs the resolver path being replaced. Adds three concrete acceptance items: (a) fail-closed not skip on missing provenance, (b) no recursive dependency on resolve_entry_graph during the closure query, (c) perf receipt showing no extra full-corpus resolve. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Summary
Design-only doc for the new lane assigned via sunny-newt-884 (operator directive 2026-07-02): give
cli_run.rs's resolve/reconcile/discovery engine (resolve_entry_graph,reconcile_with_typed_cache,resolve_transitively,discover_owned_data_decls,resolved_graph_from_sources,whole_tree_resolved_ctx) a.dagauthority, folding CI-repair Lane 4b (per-entry reconcile memo) into the seed-shrink burn-down instead of hand-patching Rust we're deleting.No implementation in this PR. Scopes 3 concrete redundancies to dissolve (not relocate) and proposes a 3-phase authoring order:
decl_facts(Whole-tree EXTRACT for model-grounding lens: concept_decl_facts(roots), name index, layer exclusion, worklist schema #5966, already merged) +std.graph's existingCallGraph/adjacency BFS, instead of a bespoke text-scan and hand-rolled closure walk.HashMapcaches into onecache_interface.dagRealization instance (already modeled, uninhabited).discover_owned_data_decls's closure-grouping againstv2.lens.affected_set/ci_floor_plan.dagbatching instead of a third bespoke algorithm.Fenced away from
src/v1/03_resolve.dag/04_infer.dag(resolver-B, PR #6155, open) per the standing infer-stage fence.Test plan
cargo fmt/clippy/tests unaffected.