Name the composite boundary: alias interior params and name input roles #41

Closed
opened 2026-06-07 23:42:40 +02:00 by Brummel · 0 comments
Owner

Sibling of #40. #40 makes the composite output edge a named multi-field record (the capability + its naming). This issue applies the same named-projection pattern to the other two boundary edges — params and input roles — which already function (sweepable by slot, wireable by role index today) but read by position only.

The shared abstraction

All three composite-boundary edge-kinds are one shape — an ordered, positionally-indexed, named projection of interior handles, consumed by index (C23), name non-load-bearing:

input_roles : Vec<Role>        Role       { name, targets }      consumer handles
params      : Vec<ParamAlias>  ParamAlias { name, node, slot }   knob handles
output      : Vec<OutField>    OutField   { name, node, field }   producer handles   (#40)

input_roles is the existing prototype (explicit Vec, positional) — it just lacks a name. #40 introduces the named projection for outputs; this issue reuses that vocabulary for params and inputs.

Param aliasing

Today param_space() aggregates interior leaf params under their factory names, so two SMAs in one composite both surface as length["sma_cross.length", "sma_cross.length"], distinguishable only by slot. Add a composite-level alias: the composite declares which interior param slots it exposes and under what name (shortLen, longLen). Identity stays positional (C23 — the name is a non-load-bearing debug symbol, as today); this is purely legibility.

Input role naming

input_roles is already an explicit Vec<Vec<Target>>, but roles render only as [in:0], [in:1]. Add a name per role.

Nature, sequencing, payoff

  • Pure legibility, not a capability: params and inputs already work; this renames slots that already function. Lower urgency than #40 (a capability unlock).
  • Co-designed, sequenced: one brainstorm covers the whole "composite boundary signature"; implementation runs #40 (capability + output names) first, this second. Per #40's decision note, #40's output type is born name-ready so it is not reopened here.
  • Payoff: together with #40 the render shows the full signature macd(fast, slow, signal) -> (macd, signal, hist) — named inputs, named params, named multi-outputs.

depends on: #40

Sibling of #40. #40 makes the composite **output** edge a named multi-field record (the capability + its naming). This issue applies the **same** named-projection pattern to the other two boundary edges — **params** and **input roles** — which already *function* (sweepable by slot, wireable by role index today) but read by position only. ## The shared abstraction All three composite-boundary edge-kinds are one shape — an ordered, positionally-indexed, **named** projection of interior handles, consumed by index (C23), name non-load-bearing: ``` input_roles : Vec<Role> Role { name, targets } consumer handles params : Vec<ParamAlias> ParamAlias { name, node, slot } knob handles output : Vec<OutField> OutField { name, node, field } producer handles (#40) ``` `input_roles` is the existing prototype (explicit `Vec`, positional) — it just lacks a name. #40 introduces the named projection for outputs; this issue reuses that vocabulary for params and inputs. ## Param aliasing Today `param_space()` aggregates interior leaf params under their *factory* names, so two SMAs in one composite both surface as `length` → `["sma_cross.length", "sma_cross.length"]`, distinguishable only by slot. Add a composite-level alias: the composite declares which interior param slots it exposes and under what name (`shortLen`, `longLen`). Identity stays positional (C23 — the name is a non-load-bearing debug symbol, as today); this is purely legibility. ## Input role naming `input_roles` is already an explicit `Vec<Vec<Target>>`, but roles render only as `[in:0]`, `[in:1]`. Add a name per role. ## Nature, sequencing, payoff - **Pure legibility**, not a capability: params and inputs already work; this renames slots that already function. Lower urgency than #40 (a capability unlock). - **Co-designed, sequenced:** one brainstorm covers the whole "composite boundary signature"; implementation runs #40 (capability + output names) first, this second. Per #40's decision note, #40's output type is born name-ready so it is not reopened here. - **Payoff:** together with #40 the render shows the full signature `macd(fast, slow, signal) -> (macd, signal, hist)` — named inputs, named params, named multi-outputs. depends on: #40
Brummel added the feature label 2026-06-07 23:42:40 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#41