# Validation report (uniform lighting naming migration)
## Static consistency checks completed
- Canonical lighting rows: `39` (`lights_zones_canonical.csv`)
- CODESYS `NVL_In` room structs: `16`
- CODESYS `NVL_Out` room structs: `16`
- Node-RED `roomNames` entries: `16`
- Node-RED `lightEntityMap` entries: `39`
## Mapping status
- `circuit_no -> area/room/type/index/light_no` is defined for all non-empty circuits.
- `codesys_in_key` / `codesys_out_key` are defined for every canonical row.
- `room-config.js` is aligned with canonical keys:
- `roomNames` matches the 16-room CODESYS layout.
- `lightEntityMap` has one entry per canonical row.
- `entityToRoom` base keys map all canonical HA entity patterns.
## Verified constraints
- Canonical naming style: `snake_case`
- Entity ID pattern: `input_boolean.___`
- CODESYS legacy room names replaced in `codesys/src` runtime files:
- `GVL_NVL_placeholders.gvl`
- `GVL_IO.gvl`
- `PLC_App.st`
## Residual runtime checks to perform on target system
Because this repository environment has no runtime binaries for Node-RED/CODESYS/HA validation, perform these on your deployed setup:
1. Deploy updated CODESYS project and confirm NVL sender/receiver symbol binding still resolves.
2. Load updated `/root/.node-red/room-config.js` and redeploy flows.
3. Import HA helpers from `lights_by_area_room_type_index.yaml`.
4. Test one circuit per area end-to-end:
- HA toggle -> Node-RED -> NVL_In -> PLC output -> NVL_Out -> HA sync.