Skip to content

The shipped example renumbers published pcs/priority when a circuit is inserted mid-list, and has never exercised the shed path #58

Description

@dcj

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions