Execution Model
Overview
Graphs define what should be computed. Calling Graph.compute() materializes
output panels and caches intermediate results during execution.
signal.compute()
panel = signal.output
Pipeline
Graph construction
-> validation
-> dependency resolution
-> panel alignment
-> node evaluation
-> Panel output creation
-> cache storage or reuse
-> Graph.output population
Intermediate Outputs
Executing a downstream graph evaluates its dependencies. Every evaluated derived node receives a panel output:
signal.compute()
prediction_panel = prediction.output
signal_panel = signal.output
Current Semantics
- Execution is deterministic.
- Panels are immutable from the public API.
- Multi-input frames align on intersecting indexes and columns by default.
- Intermediate cache values are panels.
- Shared DAG nodes are evaluated once per runtime invocation.
- Stored panel hashes are reused when alignment does not change an input frame.
- Scheduling is sequential.
Parallel scheduling, persisted caches, and explicit invalidation remain future extensions.