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
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
- [design-plans/](design-plans/) -- Design plans (architecture and phasing for major efforts)
- [design-plans/2026-08-25-compiler-unification.md](design-plans/2026-08-25-compiler-unification.md) -- Engine compiler de-duplication, landed: one fragment compiler (`lower_fragment`/`DepShape`), one `BuiltinFn::signature` table, one temp allocator and materialization pass, one axis matcher (`match_axes`), structured `DepRef`s, one `Variable`, one `Diagnostic`, a `(variable, project)`-keyed parse with AST-carried captures and implicit modules, per-variable lowered memos, Loops That Matter as a consumer of each; every pinned semantic divergence and a per-commit measured ledger
- [design-plans/2026-09-04-link-scores-from-fragments.md](design-plans/2026-09-04-link-scores-from-fragments.md) -- LTM link scores synthesized from the target's compiled fragment instead of generated equation text: the rewrite, its per-link keying, the formula families as typed builders, one `LinkScore` opcode, a native post-pass; the roofline for "LTM always on"
- [design-plans/2026-09-07-ltm-single-mode.md](design-plans/2026-09-07-ltm-single-mode.md) -- Single-mode LTM: score every causal edge, compute every loop score after the run from the recorded series (one pipeline for every surface), Johnson only for the structural preview and ids, pins injected into the pipeline, a reducer as a real loop node, static polarity and the shortest-path fallback deleted, sub-model pathway scores emitted only for instances that can lie on a loop; 8 phases
- [design-plans/2026-08-26-compiler-unification-phase7-investigation.md](design-plans/2026-08-26-compiler-unification-phase7-investigation.md) -- Companion to the compiler unification plan: every parse-time decision that reads model state, where each moves under a `(variable, project)` parse key, every text/name identity site of synthesized helpers, the salsa keys, the capture runlist contract
- [design-plans/2026-08-17-pysimlin-widget.md](design-plans/2026-08-17-pysimlin-widget.md) -- pysimlin file-backed models + anywidget in-notebook editor (file on disk as sync authority)
- [design-plans/2026-04-05-server-rewrite.md](design-plans/2026-04-05-server-rewrite.md) -- Local-first `simlin-serve` binary: filesystem-backed editor + in-process MCP
Expand Down
14 changes: 8 additions & 6 deletions docs/design-plans/2026-09-04-link-scores-from-fragments.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ variables. Because the rewrite is keyed per link on the target and its live
range, the whole-model list becomes metadata (which links exist, their names
and dimensions) while each link's program lives in its own memo, so an edit
invalidates only the links that touch the edited variable. The families that
are not partials (flow-to-stock, black-box, aggregate, module composite and
loop scores) become typed builders over slot reads on the same footing, which
is what lets the text generators be deleted rather than merely bypassed. Two
are not partials (black-box, aggregate, module composite and loop scores)
become typed builders over slot reads on the same footing, which is what lets
the text generators be deleted rather than merely bypassed; a flow-to-stock
score is the ordinary partial of the stock's net-flow aux and needs no builder
of its own. Two
run-time consequences follow from having a single place that emits a score:
the 37-opcode guard scaffold collapses to one `LinkScore` opcode reading
per-variable deltas computed once per step, and, on native and separably, the
Expand Down Expand Up @@ -311,7 +313,7 @@ typed builder with no text:

| family | today | this plan |
|---|---|---|
| flow -> stock (second-order structural formula, `generate_flow_to_stock_equation`) | text | builder over `LoadVar`/`SymLoadPrev` of the flow and stock |
| flow -> stock (the partial of the stock's net-flow aux `$⁚ltm⁚net⁚{stock}`, `generate_flow_to_stock_equation` / `generate_net_flow_equation`) | text (closed form) | an ordinary link-score program over the net aux's fragment, live range the flow; the aux is a compiled fragment like any variable |
| black-box unit transfer (`black_box_unit_transfer_equation`) | text | builder |
| aggregate nodes (`$⁚ltm⁚agg⁚n`, `AggNode::reducer_expr0`) | typed `Expr0`, then parsed tiers | the reducer's own compiled fragment, live range per feeder |
| module composites (`m·$⁚ltm⁚composite⁚port`) | text over pathway products | builder over the pathway link scores' slots |
Expand Down Expand Up @@ -444,8 +446,8 @@ fragment or one of its per-element segments.

<!-- START_PHASE_4 -->
### Phase 4: The formula families, and no text anywhere
**Goal:** flow-to-stock, black-box, aggregate, composite and loop scores are
typed builders; the text generators, `LtmArm`, `LtmEquation` and
**Goal:** the net-flow auxes, black-box, aggregate, composite and loop scores
are typed builders; the text generators, `LtmArm`, `LtmEquation` and
`model_ltm_implicit_var_info` are gone.

**Components:**
Expand Down
Loading
Loading