Skip to content
Merged
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
10 changes: 10 additions & 0 deletions docs/plans/dag-v2-defork-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,16 @@ The operator ruled the FreeMonoid/algebra single authority that category (b) was
- **The emit-seam (Root A) is jolly-cat's** — this lane does not touch `05_emit_rust.dag`.
- **Stage every file of a rename/collapse together** (the auto-committer atomicity hazard, §3 above).

### Execution update (#6341, 2026-07-07) — Root B narrowed to shadow-removal; three walls re-map the follow-ons

`#6341` landed the **core of Root B**: the `FreeMonoid`/`Empty`/`Cons` variant-drop shadow is removed — the coproduct now lives once in `dag/std/algebra.dag:111`, `v2.std.algebra` imports it, 158 importers repointed. But implementing the *fuller* Root B (move the ops; unify the definition; promote QualifiedName) surfaced **three walls by-execution** that re-scope the remaining lanes. Full trace + census: **[algebra-grounding-unification-design.md §9](algebra-grounding-unification-design.md)**. Summary for the roadmap:

- **A — reserved-name → builtin dissolution.** `dag/std/algebra.dag`'s templates *declare* the builtin collection-method names (`fold`/`map`/`filter`/`length`/`any`/`contains`/`skip`/…); a `std.*` free fn matching one breaks the whole method table (bare `fold(...)` fails corpus-wide). So the 8 ops `filter`/`length`/`any`/`contains`/`skip`/`is_empty` (+ `non_empty`/`bag_eq`) **cannot** move to `std.*` — they are free-fn duplicates of dag builtins and must *dissolve into* `.filter()`/`.length()` at v2 call sites (a lane, not a rename — a `list_filter` nickname is a §3 violation).
- **B — Root A is UNOWNED and confirmed load-bearing for the ops.** `src/v1/05_emit_rust.dag` hardcodes `crate::v2_std_algebra::{freemonoid_empty,fold_list,list_snoc_item}` for the `String=FreeMonoid<Char>` host bridge — so those 3 ops can't move until Root A relocates them. **jolly-cat (the assigned Root-A owner above) is no longer in the tree** (operator, 2026-07-06); the `String`/`List` alias grounding (§3b.2 above) is blocked until Root A is re-dispatched.
- **C — QualifiedName is `node`-gated, not algebra-gated.** `src/v2/std/qualified_name.dag` imports `v2.std.node`/`v2.std.diagnostic`/`v2.std.compilers.lexing`, all v2-only (`dag→v2` denied). FreeMonoid single-authority was **necessary but not sufficient**; promoting QualifiedName to `std.qualified_name` (unparking `type-env-single-authority-design.md` §5.1) needs the deferred **`node` defork** too (category (c), v1-delete).

Definition-unification (§3b.2: delete the dag record-of-methods *definition*) and the structure-record grounding (12 of 14 records diverge) remain deferred; the `flag-ANY` co-occurrence wall for the full `algebra` pair greens only after those. `#6341` removed the *dangerous* variant-drop shadow — the record shadow left is the benign record-with-record kind.

## Dissolution trigger (DESIGN §6)

Delete this doc when the fork census reaches zero — when no `std` basename denotes two concepts and every concept has a single authority. The census now has **three categories**, dissolving on different triggers: **(a) True mirrors** (`reducible`, `measure`) — mechanical collapse; dissolve into their carriers (absent files, re-pointed imports) as each PR lands. Plus `probe_selector` (the step-4 data-import unblock), independent. **(b) Grounding divergences** (`algebra`, `logic`, `nat`, `integer`, `float`, `effects`, `verification`) — downstream of the operator's grounding-unification design; tracked here as decision-input until that design lands and the repoints become mechanical. **(c) v1-artifact collisions** (`node`, `coercion`) — deferred to v1-shrink; trigger "when v1's consumers of `dag/std/{node,coercion}` are removed" (`node` self-dissolves, `coercion` shrinks to a v1-free rename). At the point all three are resolved the carriers tell the whole story and this audit is redundant.
Loading