Skip to content

PQA023 — Tracked address type must be uint

A tracked entity uses a numeric address type other than uint.

A tracked entity's address is allocated and persisted by the framework: the mapping entity → slot survives restarts, so a card keeps its slot and a schedule keeps its index. That store speaks one numeric type, uint.

- entity: TimeZone
  address: int            # tracked addresses are uint
  range: [1, 32]

Why the build refuses this

A single address type keeps the mapping store unambiguous. Persisted slots are compared and re-read across runs; a second numeric type introduces conversion at exactly the point where a mismatch means writing a record to the wrong slot.

Nothing is lost by the restriction. Panel slot tables are non-negative and bounded, which is what uint expresses.

How to fix it

Use uint with the range the protocol documents.

address: uint
range: [1, 32]

What is not reported

Natural-id entities. An entity keyed by id: carries its own value and is not tracked by allocation, whatever its type.

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.