Skip to content

Compose physical inverter mappings and fence selected gateway sinks - #5526

Draft
mgazza wants to merge 2 commits into
feat/target-control-readinessfrom
feat/physical-inverter-gateways
Draft

mgazza wants to merge 2 commits into
feat/target-control-readinessfrom
feat/physical-inverter-gateways

Conversation

@mgazza

@mgazza mgazza commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator

Cloud and Hub discovery currently write the same optimiser arguments, so configuring both can replace one provider's mappings with the other's. This increment captures each provider's real discovery separately, deduplicates complete physical inverter identities and composes only the effective primary into stable optimiser slots. Actual Cloud HTTP attempts and Hub MQTT commands enforce that selection, including retries and background defaults.

Gateway endpoint IDs and credential references stay distinct. Standby connections remain configured. Global optimiser slots resolve to the correct Hub-local serial for rate caps. Aggregate actuation and executable plans without proven per-inverter scope are refused.

Validation: 478 tests and 19 subtests passed, including existing source-control and display regressions; pre-commit passed. One pre-existing custom-runner fixture test is excluded from the pytest invocation. GitNexus reports five expected discovery/control flows, medium risk.

Draft stacked on #5525. This is the runtime foundation only: no startup installer, service-issued per-inverter authority, enabled selector, activation or production enrollment. The next integration must validate the real SQL/config/startup/physical transport path and exclusive handoff before selection is usable. Synthetic transport responses in tests do not prove physical hardware or multi-inverter meter ownership.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant