Decision

Sensor nodes publish only the sensors that are actually wired

An unwired expander input reads as "clear", so publishing the whole pin table would tell the orchestrator a block is empty using a wire that doesn't exist. Nodes publish an allow-list instead.

Status
accepted
Decided
Affects
Layout Feedback

Context

The feedback node’s pin allocation reserves an MCP23017 input for every sensor that will exist. Most aren’t wired yet. An unwired input sits pulled up, which reads as inactive, which would be published as clear.

For a current-sensing block detector, one clear is enough on its own to let the orchestrator clear the block.

Decision

Allocation is not installation. Each node’s config.py lists the installed sensors, and only those are published. Bringing a new sensor online is three steps: wire it to its allocated pin, add its id to the installed list, deploy.

Consequences

Source: layout-feedback CLAUDE.md and docs/pin-allocation.md.