Stratum Execution
Stratum Templates don’t have their own explicit produce() function.
They instead automatically produce all the Blocks defined by their Preset.
Stratum continuosly re-runs Blocks until no new Props are provided. The algorithm is roughly…
- Collect all Blocks defined in the Preset, along with all Props provided by any Extensions that those Blocks have produced:
- Run any
intakemethods to generate default Prop values - Apply all
refinementson top of those
- Run any
- Create a queue of Blocks to be run, starting with all defined in the Preset
- For each Block in the queue:
- Get the Creation from the Block, passing any current known Props
- If a Mode is specified, additionally generate the approprate Block Creations
- Store that Block’s Creation
- If the Block specified Extensions for any defined Blocks:
- Merge those Props into the Blocks’ existing Props, throwing an error if any values conflict
- Add those Blocks to the queue of Blocks to re-run
- Merge all Block Creations together