feat(engine): FlatTap type + FlatGraph.taps field (#282)
Second slice: the resolved-tap carrier. FlatTap { name, node, field } is the
output-side twin of SourceSpec — its name survives compile, load-bearing for
by-name binding (#275). FlatGraph gains a taps field, threaded (empty) through
every construction site the compiler enumerates. Bootstrap ignores it (taps
materialize as real recorder nodes/edges before bootstrap in a later slice).
Purely additive: the inert-producer pin and full suite stay green.
refs #282
This commit is contained in:
@@ -187,7 +187,7 @@ pub fn build_harness() -> (Harness, Taps) {
|
||||
.map(|slot| SourceSpec::raw(ScalarKind::F64, vec![Target { node: RESAMPLE, slot }]))
|
||||
.collect();
|
||||
|
||||
let h = Harness::bootstrap(FlatGraph { nodes, signatures, sources, edges })
|
||||
let h = Harness::bootstrap(FlatGraph { nodes, signatures, sources, edges, taps: Vec::new() })
|
||||
.expect("valid breakout DAG");
|
||||
(h, Taps { equity: rx_equity, held: rx_held, bars: rx_bars, breakout: rx_breakout })
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ fn run_sample_over(prices: Vec<(Timestamp, Scalar)>) -> RunReport {
|
||||
Edge { from: 4, to: 5, slot: 0, from_field: 0 }, // equity -> sink 5
|
||||
Edge { from: 3, to: 6, slot: 0, from_field: 0 }, // exposure -> sink 6
|
||||
],
|
||||
taps: Vec::new(),
|
||||
})
|
||||
.expect("valid signal-quality DAG");
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ fn run_sample(window: (Timestamp, Timestamp), source: Box<dyn Source>) -> RunRep
|
||||
Edge { from: 4, to: 5, slot: 0, from_field: 0 },
|
||||
Edge { from: 3, to: 6, slot: 0, from_field: 0 },
|
||||
],
|
||||
taps: Vec::new(),
|
||||
})
|
||||
.expect("valid signal-quality DAG");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user