Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
13c5d80
WIP: Debt Paydown
briansrls Apr 19, 2026
e1f1015
WIP: Debt Paydown
briansrls Apr 19, 2026
07db795
WIP: Debt Paydown
briansrls Apr 19, 2026
f3aad2f
chore: apply cargo fmt
briansrls Apr 19, 2026
302ad90
WIP: Debt Paydown
briansrls Apr 19, 2026
97de98c
WIP: Debt Paydown
briansrls Apr 19, 2026
0c89bd4
chore: apply cargo fmt
briansrls Apr 19, 2026
5aef4f2
WIP: Debt Paydown
briansrls Apr 19, 2026
2720fdc
WIP: Debt Paydown
briansrls Apr 19, 2026
90e574b
WIP: Debt Paydown
briansrls Apr 19, 2026
e892a5f
WIP: Debt Paydown
briansrls Apr 19, 2026
0e1e65d
WIP: Debt Paydown
briansrls Apr 19, 2026
2ae17f8
WIP: Debt Paydown
briansrls Apr 19, 2026
4b4e45f
WIP: Debt Paydown
briansrls Apr 19, 2026
9753365
WIP: Debt Paydown
briansrls Apr 19, 2026
febaf06
WIP: Debt Paydown
briansrls Apr 19, 2026
cc56bed
WIP: Debt Paydown
briansrls Apr 19, 2026
52d5b7a
WIP: Debt Paydown
briansrls Apr 19, 2026
e0524d3
Make polynomial degree structural
briansrls Apr 19, 2026
42c6d90
Clarify Pending vs NoBody comment
briansrls Apr 19, 2026
3de40eb
Relax symbolic branch test micro-budget
briansrls Apr 19, 2026
10c83ff
WIP: Debt Paydown
briansrls Apr 19, 2026
8c55c19
WIP: Debt Paydown
briansrls Apr 19, 2026
e59b10c
WIP: Debt Paydown
briansrls Apr 19, 2026
c8cfbbb
WIP: Debt Paydown
briansrls Apr 19, 2026
f61ba34
Clarify idempotency breaker witness scope
briansrls Apr 19, 2026
54cf4cf
Clarify symbolic cost debt markers
briansrls Apr 19, 2026
46b8ace
chore: apply cargo fmt
briansrls Apr 19, 2026
75afea9
Track cross-lens unsupported carrier paydown
briansrls Apr 19, 2026
2d12f26
Adapt parallelism lens to element refs
briansrls Apr 19, 2026
17ac372
chore: apply cargo fmt
briansrls Apr 19, 2026
f1efa7c
WIP: Debt Paydown
briansrls Apr 19, 2026
18459da
Clarify element ref owner identity limits
briansrls Apr 19, 2026
854952a
WIP: Debt Paydown
briansrls Apr 19, 2026
e898909
Fix rebased structural resolution emitter snapshot
briansrls Apr 19, 2026
e0cffbc
Merge branch 'main' into session/bold-lark-691
briansrls Apr 19, 2026
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
18 changes: 10 additions & 8 deletions ROADMAP.md

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions docs/coercion-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,15 +160,15 @@ string interpolation, container syntax, indentation, lint/formatting rules).
Type coercion is data-driven; the full backend is broader.

**Transitional state:** This document describes the target architecture.
The compiler is currently in a transitional identity model: checkpoint
and inhabitant keys are strings (`dag_name`, `algebra`), not declaration
edges. M4/Lane 1 is dissolving string identity into structural
declaration-backed facts; M4/Lane 2 is deleting `Node.name`. The
coercion algorithm described here is designed for the post-M4 world
where identity flows from declarations, but the initial implementation
(M5-early, via E0c `TypeRendering`) will use the transitional string
keys until Lane 1 completes. The algorithm shape is the same; only the
key resolution mechanism changes.
The compiler is still partially transitional on some identity surfaces:
checkpoint and inhabitant keys are strings (`dag_name`, `algebra`), not
declaration edges. The v3 `Node.name` deletion is already landed; the
remaining transition is Lane 1's string-keyed coercion identity. The
coercion algorithm described here is designed for the post-transition
world where identity flows from declarations, but the initial
implementation (M5-early, via E0c `TypeRendering`) will keep the
transitional string keys until Lane 1 completes. The algorithm shape is
the same; only the key resolution mechanism changes.

## The Coercion Model

Expand Down
16 changes: 9 additions & 7 deletions docs/perf/clone-elimination.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,9 +244,10 @@ still TRUE — it's just not urgent anymore. The session got
the urgent perf win from fact-flow, not clones. Clone
elimination remains valuable for:

- **Node.name deletion (M2)** — String clones are real heap
allocations. Still worth eliminating. But no longer on the
critical path for perf.
- **Node.name deletion (v3 code: landed)** — the generic v3
`Node.name` carrier is gone. Residual String clones now come from
other carriers (`Declaration.name`, `BindNode.name`) and any stale
doc references, not from an in-flight node-identity scaffold.
- **Stable binding identity** (unblocks last-use clone elision,
Stream B Layer 1) — worth doing for modeling correctness.
- **The exclusion categories** (callables, TCO, match-bound,
Expand Down Expand Up @@ -287,7 +288,7 @@ during reviews. The tactical answer is:
| `.clone()` sites | 13,724 | Unchanged — clones weren't the problem |
| merge_envs bug | Fixed | 68× speedup on reconcile |
| Skip data-only analysis | Landed | 82 of 143 files skip CX/ownership |
| authored_name_at fallback | Mostly eliminated | ~8 parser sites remain |
| authored_name_at fallback | v3 eliminated | Remaining mentions here are historical; active parser sites are v2-only |
| InternTable threading | Landed | Unblocks registry migration |

## What's next
Expand All @@ -298,9 +299,10 @@ during reviews. The tactical answer is:

1. **Audit for other re-derivation hotspots.** Apply Rules 2
and 3 above. Find the next merge_envs.
2. **M2 Node.name deletion continues** — for modeling, not
perf. String clones are worth eliminating but no longer
critical.
2. **Keep clone work focused on live carriers** — `Node.name`
itself is no longer active v3 debt, so follow-on clone cleanup
should target remaining live String surfaces rather than a
completed node-identity migration.
3. **M1 Step 3 — thread existing authorities, don't invent
new ones.** `SubValueRelation` (std/induction.dag),
`TerminationProof` (std/termination.dag), and
Expand Down
6 changes: 3 additions & 3 deletions docs/phase-plan-2026-04-18.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ If Python forces a `CleanEmissionContract` SHAPE change (not just a new instanti

### Brief — Lens-name-filter dissolution (#518 follow-up)

**Status:** dispatchable now (independent of in-flight items).
**Status:** ✅ Cleared on PR #548.

**Scope:** broader migration of `ArrowBody::Pending` writes from anonymous sites (`lower.rs:872` nested Arrow, `infer.rs:1884` variant constructor, `infer.rs:2807` operator fallback) to `NoBody` where appropriate. Once migrated, `lens_structural_resolution` predicate drops the `name: Some(_)` filter and becomes purely structural.

Expand All @@ -129,7 +129,7 @@ If Python forces a `CleanEmissionContract` SHAPE change (not just a new instanti
- Site 5 (operator fallback) — explicit classification: NoBody if "no body by construction"; documented Pending-with-rationale otherwise
- Lens predicate drops `name: Some(_)` filter where safe
- New regression tests: anonymous arrows previously silent-via-name-filter now silent-via-NoBody
- ROADMAP entry added and closed in the same PR
- ROADMAP closure note landed in the same PR (`ROADMAP.md` notes the `#518` follow-up as cleared on PR #548)

**STOP-AND-ESCALATE rule:** if site 5 forces a NEW substrate variant (neither Pending nor NoBody fits), escalate — don't introduce variants inside an anonymous dispatch.

Expand Down Expand Up @@ -250,7 +250,7 @@ No migration needed for any row above — §3 briefs or ROADMAP's existing stanc
|---|---|---|
| Mutual-recursion planner vs `is_first` alignment | #519 ChatGPT non-blocking | Lane 3 Stage 3a.1 follow-up — §3 combined XS brief lands this |
| Variant-payload field-access general model | #518 (multi-field) + #519 chat A (single-field) | New "infra debt" subsection OR Lane 1 follow-ups — needs a dedicated hygiene chat |
| Lens-name-filter dissolution (#518 sites 2/4/5) | #518 broader migration | §3 brief handles; ROADMAP row added when that PR opens |
| Lens-name-filter dissolution (#518 sites 2/4/5) | #518 broader migration | ✅ Cleared on PR #548 |
| compiler.dag v2-path carryover (§6 Q3) | `hand_maintained_src` references `src/v2/stage0/src`, `cli_run.rs`, `v2_interpreter.rs` — v2 paths in a doc that should eventually key off v3 source | Lane 3 Stage 3c prerequisite OR downgrade to "open question until 3c starts" — needs director pre-clearance before migration |

**Dispatch decision:** §3 briefs cover 2 rows — the combined XS brief lands the planner alignment; the lens-name-filter brief lands that dissolution. The **variant-payload field-access general model** row needs a dedicated ROADMAP-hygiene chat (not folded into the XS brief — it won't get attention inside an XS dispatch). The **compiler.dag v2-path carryover** row needs director-chat pre-clearance first (is it a real 3c blocker, or a v2→v3 bridging detail that self-resolves?) before ROADMAP migration.
Expand Down
2 changes: 1 addition & 1 deletion docs/single-emitter-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ assumption that the target is foreign. That assumption must not exist.
|---|---|---|---|
| LanguageSpec modeling | Track 2 | Presentation facts must be modeled as data before the emitter can read them | LS-4 (borrow model) in design |
| Core table dissolution | Track 7 | String-keyed maps must become node-keyed before the emitter can use structural identity | Partially done |
| Node.name deletion | Track 3 | String identity must dissolve before homomorphism discovery works | ~15 n.name reads remaining |
| Node.name deletion | Track 3 | String identity must dissolve before homomorphism discovery works | Landed in v3 code; only stale docs remain |
| CX gate | KF-1 | CX must be able to prove bounds on emission functions | 421 violations remaining (M1) |

### What can move without dependencies
Expand Down
Loading
Loading