Skip to content

PQA013 — Missing address range for uint entity

An entity declares address: uint without saying which slots exist.

A uint address is allocated by the framework: when a new entity appears, the allocator picks a free slot and remembers it, so the same entity keeps the same slot on every later run. Picking requires knowing what is available.

- entity: User
  address: uint            # which slots? 1-250? 0-65535?

Why the build refuses this

Panel memory is finite and the panel does not negotiate. A card written to slot 300 on a panel with 250 slots is rejected, or worse, silently dropped. The range is how the adapter states the panel's capacity.

The allocator has no default worth guessing. Any assumed bound would be wrong on some panel, and wrong in the direction of writing outside the device's memory.

How to fix it

State the range the protocol documents.

address: uint
range: [1, 250]

Both bounds are inclusive. Take them from the vendor documentation of the record table in question, not from the largest value observed on one device — models differ in capacity, and the range is what keeps a smaller panel from being overrun.

What is not reported

A natural-id entity. id: entities are keyed by their data and allocate nothing.

If you disagree with a report

Do not suppress it. A wrong report is a bug in the check — report it with the YAML that triggered it.