Two things about examples/forty_tab_minimal.yaml and its runner, both surfaced by #57 adding a pool_pump circuit, and both pre-existing rather than caused by it.
1. pcs-priority defaults to list position
examples/run_forty_tab_minimal.py:181:
"pcs-priority": str(circuit.get("pcs_priority", idx)),
No circuit in the shipped YAML sets pcs_priority, so every circuit's published pcs/priority is its index in the circuits: list. Inserting pool_pump before solar_inverter therefore moved that circuit's published priority from 5 to 6, and would have moved every circuit after it. A published control-order value that silently renumbers when someone edits an unrelated part of the file is a sharp edge, and the example is the first thing a producer copies.
Fix is either explicit pcs_priority on every circuit in the YAML, or dropping the positional default so an unset value is an error rather than a guess.
2. The demo never sheds
The runner builds no LoadSheddingConfig and neither shipped tick goes off-grid, so nothing in the example ever drives the shed path. switch/relay-requester = LOAD_SHED is unreachable from the only end-to-end artifact the repo ships, which is unfortunate for the two capabilities the enclosure model is most specific about, and it is why the pool_pump circuit #57 added to demonstrate the commissioning lock demonstrates only the $settable half of it.
A third tick with the grid offline, plus a shed config, would exercise OFF_GRID shedding, the SOC_THRESHOLD tier against the example's BESS, and the requester attribution, in the artifact people actually run.
3. While in here: $description.version makes the tree non-reproducible
Not a defect, but worth writing down where the next person looks. Every $description carries a wall-clock version, so the example's published tree is never byte-identical run to run. Two of us have now used this example as the fixture for checking that a change is wire-neutral, and any such diff has to normalize $description.version first or it reports false deltas forever. Worth a sentence in DEVELOPER.md, or a small helper that dumps a normalized tree.
Two things about
examples/forty_tab_minimal.yamland its runner, both surfaced by #57 adding apool_pumpcircuit, and both pre-existing rather than caused by it.1.
pcs-prioritydefaults to list positionexamples/run_forty_tab_minimal.py:181:No circuit in the shipped YAML sets
pcs_priority, so every circuit's publishedpcs/priorityis its index in thecircuits:list. Insertingpool_pumpbeforesolar_invertertherefore moved that circuit's published priority from 5 to 6, and would have moved every circuit after it. A published control-order value that silently renumbers when someone edits an unrelated part of the file is a sharp edge, and the example is the first thing a producer copies.Fix is either explicit
pcs_priorityon every circuit in the YAML, or dropping the positional default so an unset value is an error rather than a guess.2. The demo never sheds
The runner builds no
LoadSheddingConfigand neither shipped tick goes off-grid, so nothing in the example ever drives the shed path.switch/relay-requester = LOAD_SHEDis unreachable from the only end-to-end artifact the repo ships, which is unfortunate for the two capabilities the enclosure model is most specific about, and it is why thepool_pumpcircuit #57 added to demonstrate the commissioning lock demonstrates only the$settablehalf of it.A third tick with the grid offline, plus a shed config, would exercise
OFF_GRIDshedding, theSOC_THRESHOLDtier against the example's BESS, and the requester attribution, in the artifact people actually run.3. While in here:
$description.versionmakes the tree non-reproducibleNot a defect, but worth writing down where the next person looks. Every
$descriptioncarries a wall-clockversion, so the example's published tree is never byte-identical run to run. Two of us have now used this example as the fixture for checking that a change is wire-neutral, and any such diff has to normalize$description.versionfirst or it reports false deltas forever. Worth a sentence inDEVELOPER.md, or a small helper that dumps a normalized tree.