# 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.