Units
Declarative behaviours — clocks, counters, tickers, formatters, watch rules and data feeds — that write to the store.
Where a unit runs, and what it is allowed to write.
| Property | Values | Meaning |
|---|---|---|
| runtime | client · server | Where the unit executes. Anything touching a secret must be server. |
| enabled | true · false | A disabled unit keeps its config but does not run. |
| status | ok · degraded · disabled | The dot on the row. Degraded means it is running but something is wrong — a failing poll, a missing input. |
| writes | paths | Declared, not inferred. Re-derived every time the config changes. |
The unit report
| Issue | Means |
|---|---|
| schema | The unit does not round-trip through validation. |
| expr | An expression references an undeclared identifier or a function that is not whitelisted. |
| multi-writer | Two or more units write the same path; the message names them. |
| self-accumulate | A formatter or watch rule reads its own output — data:: and poller:: inputs are resolved first. The unit is held and never runs. |
| overlapping-writes | Write paths nest inside each other (a clock's zero path inside its display, or one unit writing score while another writes score.home). A unit whose own paths nest is held and never runs. |
| reserved-path | A unit writes under vars, to a read-only feed, or to a whole spreadsheet/column rather than a single sheet cell. Use a Variables operation for vars; write page data or one sheet cell for unit outputs. |