Name input ports — give PortSpec a (non-load-bearing) name, mirroring FieldSpec/ParamSpec #50

Closed
opened 2026-06-10 13:31:42 +02:00 by Brummel · 1 comment
Owner

Input ports carry no name today: PortSpec is { kind, firing } (aura-core/src/node.rs).
Only output fields (FieldSpec.name) and params (ParamSpec.name) are named. A leaf
node's input slots therefore have no declared semantics — Sub's two f64 slots, or
SimBroker's (exposure, price), are order-load-bearing but nameless and unchecked
(see #21). The meaning lives only in eval, not in the declared interface.

Surfaced by the graph-render redesign (cycle 0026): a homogeneous pin-graph wants to
label every input pin, but the data has no name to show. The 0026 prototype invented
input names ("a"/"b") — exactly what "invent nothing" forbids. Composite-boundary
inputs already have real names (Role.name); only leaf primitive inputs are nameless.

Scope: add a non-load-bearing name to PortSpec — a debug symbol; identity stays
positional by slot (C23), exactly as FieldSpec.name / ParamSpec.name already are.
Every aura-std node declares its input-slot names; the graph model/render consumes them
faithfully; #21's order-load-bearing slots become self-documenting.

Design questions for its brainstorm/spec:

  • Names as pure debug symbols (C23) vs. allowing wire-by-name in the builder API.
  • Variadic / unbounded-arity inputs (named individually, or a pattern?).
  • Whether bootstrap should validate slot wiring against the now-named ports (would close #21).

blocks: 0026 iteration 2 (the graph render viewer).
refs #21
context: render redesign 0026 is paused pending this; iteration 1 (model serializer) shipped (288f589).

Input ports carry no name today: `PortSpec` is `{ kind, firing }` (aura-core/src/node.rs). Only output fields (`FieldSpec.name`) and params (`ParamSpec.name`) are named. A leaf node's input slots therefore have no declared semantics — `Sub`'s two f64 slots, or `SimBroker`'s (exposure, price), are order-load-bearing but nameless and unchecked (see #21). The meaning lives only in `eval`, not in the declared interface. Surfaced by the graph-render redesign (cycle 0026): a homogeneous pin-graph wants to label every input pin, but the data has no name to show. The 0026 prototype *invented* input names ("a"/"b") — exactly what "invent nothing" forbids. Composite-boundary inputs already have real names (`Role.name`); only leaf primitive inputs are nameless. Scope: add a non-load-bearing `name` to `PortSpec` — a debug symbol; identity stays positional by slot (C23), exactly as `FieldSpec.name` / `ParamSpec.name` already are. Every aura-std node declares its input-slot names; the graph model/render consumes them faithfully; #21's order-load-bearing slots become self-documenting. Design questions for its brainstorm/spec: - Names as pure debug symbols (C23) vs. allowing wire-by-name in the builder API. - Variadic / unbounded-arity inputs (named individually, or a pattern?). - Whether bootstrap should validate slot wiring against the now-named ports (would close #21). blocks: 0026 iteration 2 (the graph render viewer). refs #21 context: render redesign 0026 is paused pending this; iteration 1 (model serializer) shipped (288f589).
Brummel added the feature label 2026-06-10 13:31:42 +02:00
Author
Owner

Done in commit e304dba (cycle 0027), audited drift-clean in 7569980. PortSpec carries a non-load-bearing name: String; all aura-std nodes + fixtures name their input slots; derive_signature carries Role.name into composite ports; model_to_json emits the name. C23-clean (name never wired/validated). 168 tests green. Commits are local on main (not yet pushed). Closing manually since the work is complete; the closes #50 marker remains the audit trail.

Done in commit e304dba (cycle 0027), audited drift-clean in 7569980. PortSpec carries a non-load-bearing name: String; all aura-std nodes + fixtures name their input slots; derive_signature carries Role.name into composite ports; model_to_json emits the name. C23-clean (name never wired/validated). 168 tests green. Commits are local on main (not yet pushed). Closing manually since the work is complete; the closes #50 marker remains the audit trail.
Brummel referenced this issue from a commit 2026-06-10 16:27:46 +02:00
Brummel referenced this issue from a commit 2026-06-10 16:27:46 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#50