Render slot stubs for top-level blueprint multi-input leaves #49

Closed
opened 2026-06-09 00:10:40 +02:00 by Brummel · 0 comments
Owner

Gap

After the render-path unification (#48, commit 481172a), the blueprint main
graph and the composite where: interior share one render core
(render_graph, crates/aura-cli/src/graph.rs). A composite-interior multi-input
leaf renders its wired input slots as #… source-derived stubs (e.g.
[Sub(#Sf,#Ss)], via fan_in_identifiers at graph.rs). A top-level blueprint
multi-input leaf does not: SimBroker, with two wired slots (exposure, price),
renders as bare [SimBroker] in aura graph --macd.

So the main graph still under-mirrors the where: enrichment for one of the
three borders — the slot stubs — even though param names and the from_field
consumer-prefix are now shared.

Why it was deferred

The shared core gates stub rendering behind stub_ctx: Option<&Composite>,
passed None for the blueprint path. fan_in_identifiersslot_source
signature_of (crates/aura-engine/src/blueprint.rs:266) is still coupled to the
composite shape: signature_of expects &[Role] + &[ParamAlias], which a
Blueprint does not have (it has sources + param_space). Threading the
blueprint case through it is the deeper change #48's spike deliberately left out
of scope, with user sign-off ("not optimal, but leave it for now").

Direction (not prescriptive)

Generalise the stub machinery off &Composite onto the same borrowed-slice
shape the render core already uses (the Entry abstraction unifying Role and
SourceSpec), so signature_of / fan_in_identifiers serve a top-level
blueprint leaf the same way they serve a composite interior leaf. Then
SimBroker renders its two slots as stubs and stub_ctx can stop being an
Option.

Acceptance

  • aura graph --macd renders SimBroker's two input slots as #… stubs.
  • The where: section stays byte-identical (the composite stub output is
    unchanged).
  • No second parallel stub function is introduced (the de-duplication from
    #48 holds).
## Gap After the render-path unification (#48, commit 481172a), the blueprint main graph and the composite `where:` interior share one render core (`render_graph`, crates/aura-cli/src/graph.rs). A composite-interior multi-input leaf renders its wired input slots as `#…` source-derived stubs (e.g. `[Sub(#Sf,#Ss)]`, via `fan_in_identifiers` at graph.rs). A **top-level blueprint** multi-input leaf does not: `SimBroker`, with two wired slots (exposure, price), renders as bare `[SimBroker]` in `aura graph --macd`. So the main graph still under-mirrors the `where:` enrichment for one of the three borders — the slot stubs — even though param names and the `from_field` consumer-prefix are now shared. ## Why it was deferred The shared core gates stub rendering behind `stub_ctx: Option<&Composite>`, passed `None` for the blueprint path. `fan_in_identifiers` → `slot_source` → `signature_of` (crates/aura-engine/src/blueprint.rs:266) is still coupled to the composite shape: `signature_of` expects `&[Role]` + `&[ParamAlias]`, which a `Blueprint` does not have (it has `sources` + `param_space`). Threading the blueprint case through it is the deeper change #48's spike deliberately left out of scope, with user sign-off ("not optimal, but leave it for now"). ## Direction (not prescriptive) Generalise the stub machinery off `&Composite` onto the same borrowed-slice shape the render core already uses (the `Entry` abstraction unifying `Role` and `SourceSpec`), so `signature_of` / `fan_in_identifiers` serve a top-level blueprint leaf the same way they serve a composite interior leaf. Then `SimBroker` renders its two slots as stubs and `stub_ctx` can stop being an `Option`. ## Acceptance - [ ] `aura graph --macd` renders `SimBroker`'s two input slots as `#…` stubs. - [ ] The `where:` section stays byte-identical (the composite stub output is unchanged). - [ ] No second parallel stub function is introduced (the de-duplication from #48 holds).
Brummel added the feature label 2026-06-09 00:10: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#49