Context
parseRuntimeConfigJson() reports a missing telemetry topic in its error branch, but RuntimeConfig::isValid() does not currently require telemetryTopic. That can let incomplete config pass validation.
Scope
Make runtime config validation match the fields the firmware actually requires.
Implementation notes
Review ESP32-Firmware/src/RuntimeConfig.cpp and decide which fields are required:
configured
enabled
mac
rack_id
role
topics.telemetry
- maybe
topics.status
- maybe
topics.event
Acceptance criteria
- Config without a required telemetry topic fails validation.
- Validation errors identify the missing/invalid field clearly.
- Valid config still parses successfully.
- If tests are added later, include valid config, missing telemetry topic, disabled device, unknown role, and missing rack ID cases.
Context
parseRuntimeConfigJson()reports a missing telemetry topic in its error branch, butRuntimeConfig::isValid()does not currently requiretelemetryTopic. That can let incomplete config pass validation.Scope
Make runtime config validation match the fields the firmware actually requires.
Implementation notes
Review
ESP32-Firmware/src/RuntimeConfig.cppand decide which fields are required:configuredenabledmacrack_idroletopics.telemetrytopics.statustopics.eventAcceptance criteria