plan: 0005 node output record
Four tasks, ordered by compile-gate discipline (each leaves a coherent gate satisfiable): 1. aura-core contract (FieldSpec, NodeSchema.output -> Vec<FieldSpec>, Node::eval -> Option<&[Scalar]>) + aura-std Sma/Sub degenerate migration, threaded in one task. The signature change breaks aura-engine, so the gate is SCOPED to `-p aura-core -p aura-std` (engine is knowingly broken until task 3). 2. aura-engine production: Edge.from_field, NodeBox.out_len, per-field bootstrap kind/range check, reused-scratch field-indexed run forward, run -> Vec<Option<Vec<Scalar>>>. Breaks the in-module tests, so the gate is a PARTIAL `cargo build -p aura-engine --lib` + clippy --lib only. 3. aura-engine tests: migrate the 3 firing fixtures to the slice return; add the Ohlcv 5-field bundler + TwoField mixed-kind fixture; the field-binding proof (high-low, close-open), K>1 output, determinism, and must-fail (from_field OOB -> BadIndex, per-field kind mismatch -> KindMismatch); adapt all prior 0003/0004 tests to from_field + the Vec return. Full workspace gate + purity grep. 4. design ledger: C8 revision (one output port carrying a record) + C7 sharpening (composite-bundle is the node-output model). Docs-only; glossary record-reality is audit-time, not this plan. Orchestrator decisions baked in: the spec's illustrative `schemas_out_len[nidx]` is committed as a `NodeBox.out_len` field (set at bootstrap) read into a run-loop local; the firing fixtures hold a `[Scalar; 1]` buffer constructed at each call site; Sub drops `#[derive(Default)]` (Scalar has no Default) for a manual Default that keeps clippy's new_without_default quiet; the engine lib.rs doc is left untouched (no single-scalar phrase there -- only harness.rs doc + Edge doc move). plan-recon confirmed every spec-named path exists and the compile-driven site set (6 output: literals, 6 fn eval, 6 Edge literals, 11 .run callers); from_field / FieldSpec / Ohlcv are net-new. No content-pin/golden-file twin-miss risk. refs #1 refs walking-skeleton Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in: