Cell lacks tuple-style constructors (asymmetry with Scalar) — param-authoring reach mis-aims at the wrong type #100
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The Runway milestone-close fieldtest (
docs/specs/0055-fieldtest-runway-real-data-seam.md) recorded an ergonomic papercut, adversarially confirmed asfriction(not a bug):A consumer hand-authoring params reaches for
aura_core::Cell::I64(3)/Cell::F64(1.0)— mirroring the side-by-sideaura_core::Scalar, which IS a tagged enum with publicI64(..)/F64(..)variants. ButCellispub struct Cell(u64)exposing onlyfrom_i64/from_f64/from_bool/from_ts, so the reach fails to compile:The compiler suggestion is clean (it names
from_i64etc.), so it self-corrects in seconds — hencefriction, not a bug.Nuance from the verifier: per the ledger (
INDEX.mdC19 region), the param-authoring entry point is in factScalar(build / bind / compile_with_params / sweep), andCellis the hot-path node-output buffer carrier — so the natural reach is mis-aimed at the wrong type, which makes the snag slightly less "natural" than a raw symmetry gap.Two candidate resolutions (a small design choice for a future cycle):
Cell::I64(..)/F64(..)/... tuple-style constructors orFrom<i64>/From<f64>impls to mirrorScalar; ORCellthatScalar(notCell) is the param-authoring surface, and thatfrom_*are the buffer-carrier constructors.Low priority; ergonomic only. The task always completed.
context: Runway milestone-close fieldtest, finding [friction].
Resolved during a
/bossrun as a direct orchestrator edit (doc-only, no cycle).Fork (option a: add
Cell::I64(..)/Fromimpls — vs — option b: doc-nudge):decided (b), the doc-nudge. Substantive reason, not effort: option (a) would
make
Celllook self-describing/tagged, which softens the C7 boundary thecarrier-split deliberately drew — the value carries no tag; the kind lives in
the schema/column/port. A
Cell::I64constructor re-introduces exactly that tag.Scalaralready is the kind-tagged param-authoring surface (build / bind /compile_with_params/ sweep points /RunManifest), andCell::from_*are thehot-path carrier ctors. So the asymmetry is correct by design; the papercut was a
discoverability gap, fixed by documenting the split on
Cellitself.Edit:
crates/aura-core/src/cell.rsstruct doc now namesScalaras the value toreach for when authoring, and states the no-tagged-ctors choice is by design (C7).