Skip to content

docs(design): modules, buses, panels — ratified design + glossary - #230

Merged
Yona-Appletree merged 6 commits into
mainfrom
claude/nested-projects-review-823e62
Jul 31, 2026
Merged

docs(design): modules, buses, panels — ratified design + glossary#230
Yona-Appletree merged 6 commits into
mainfrom
claude/nested-projects-review-823e62

Conversation

@Yona-Appletree

Copy link
Copy Markdown
Member

The ratified design for the nested-projects redesign (G1 passed
2026-07-31; plan: `planning/2026-07-31-1002-modules-buses-panels`).

  • docs/design/modules.md — the module container model: project/module
    mitosis, binding-is-publicity, scoped buses with writer-shadowing, sink
    scopes, module output interface (auto `visual.out` + authored exports),
    worked examples E1–E7, two-tier file layout (`.lp/` vs user content,
    copy-to-own imports), rename plan (`project` kind → `module`).
  • docs/design/panel.md — the panel: latch-automation control model
    (Read/Latch/Clear), shape-don't-integrate, momentary controls for
    gesture channels, takeover, multi-client authority,
    restore-before-first-render, `.lp/state.json` persistence.
  • docs/glossary.md — new, sectioned; module-model terms marked.
  • ADR 2026-07-31 — moment-in-time record: supersedes the
    composite-effects spike direction (PR Scoped buses + embeddable projects (effects slice) #218, unmerged), harvest
    inventory, defect classes to pin.
  • `agent-context.toml`: `planning_root` fallback key.

Docs-only (plus one config line). Next: M2 UX spike (G2 visual gate),
then implementation planning (M3).

🤖 Generated with Claude Code

Yona-Appletree and others added 6 commits July 31, 2026 10:17
…tion

Normative design for the nested-projects redesign: project/module
mitosis, binding-is-publicity, panel as recursive view of scope
channels, lazy runtime panel writers with throttled persistence.
Supersedes the direction of the #218 spike (harvest inventory in §9).
Plan: planning/2026-07-31-1002-modules-buses-panels.

Also: agent-context.toml gains a planning_root fallback (the env var
is unset in non-interactive shells).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- modules.md R8: panel is a first-class per-node concept (leaf = bound
  slots, module = scope channels, playlist = active entry), hosted by
  faces, standalone in play mode; legacy panel flag subsumption raised
  as Q13. Spike references stripped — the doc now states what is.
- New ADR records the moment-in-time context: spike relationship,
  harvest inventory, defect pins, alternatives.
- docs/glossary.md created (sectioned; module-model terms marked).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…wn imports

Everything in the project folder is user-owned content except .lp/,
the single framework-owned dir (panel state moves to .lp/state.json;
future caches/locks land there). Imported modules stay visible and
committed under modules/ — copy-to-own, shadcn-inspired; provenance
records origin. Local sub-modules are plain folders with explicit refs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The panel gets its own normative doc, sibling of modules.md. Two
ratified frames anchor it: panel state is lighting-console-programmer /
DAW-latch capture (hold until explicit clear), and controls shape but
never integrate (slew ok; phasors are nodes + bus vocabulary). P1-P13
cover identity, Read/Latch/Clear, takeover (jump; pickup reserved for
hardware), live-value display, raw-preserve/clamp-emission under meta
changes, PanelWrite/PanelClear wire ops, engine-authority multi-client,
restore-before-first-render, .lp/state.json, play mode, and MIDI/OSC as
future panel writers. modules.md R9-R13 slim to summaries; Q3/Q11 move
to panel.md's register, Q12 is resolved by the latch model.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The old-lightPlayer fluid drawing use case pressure-tests the model and
exposes one real gap: gesture channels (multi-touch pads, buttons)
cannot latch. panel.md P14 adds the momentary control class — writes
while the gesture is active, despawns on release, and the despawn IS
the fallback mechanism (resolution falls through to a host camera or an
idle-generator node). Idle detection stays a node concern (a gate with
a public timeout param) because 'no data' is semantic: a connected
camera seeing nobody is a live writer producing an empty set, invisible
to any writer-priority scheme. modules.md gains E7 (fluid-draw module
walk) and a vocabulary-pressure note (touch sets, phase); P-Q5 tracks
the touch-set shape with MultiTouchInput.Touch as prior art.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Yona-Appletree
Yona-Appletree merged commit 42ed2ad into main Jul 31, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant