# Pre-flight Checks: Unit report

> Behaviour-level checks.

Glider documentation · Playout & On Air · Web page: https://cgglider.com/docs/checks/units/

Sections of this page: [Overview](https://cgglider.com/docs/checks.md) · [Wiring report](https://cgglider.com/docs/checks/wiring.md) · [Structure report](https://cgglider.com/docs/checks/structure.md) · [Scene & script reports](https://cgglider.com/docs/checks/scene-script.md) · [Unit report](https://cgglider.com/docs/checks/units.md) · [Working with failures](https://cgglider.com/docs/checks/workflow.md)

| Issue | Means |
| --- | --- |
| schema | A unit does not round-trip through validation. |
| expr | An expression references an undeclared identifier or a non-whitelisted function. |
| 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 or sheets. Those keys are rebuilt from the Variables panel and from bound spreadsheet cells on every edit, so the unit is held and never runs. Change the value with a Variables operation instead. |

Run it on demand with POST /api/pages/<id>/unit-check.
