feat(orchestrator): auto node interview after inclusion (part of #203)#224
Merged
Conversation
Add InterviewOrchestrator (bus-only, priority 204): on a node joining it runs an ordered Get sequence and advances on each matching typed report — ManufacturerSpecific -> Version -> [Multi Channel endpoints if CC 0x60] -> [Z-Wave+ Info if CC 0x5E] -> NodeInterviewComplete — so device identity is gathered automatically instead of only on a manual poke. The ManufacturerSpecific report it triggers feeds PolicyRegister's noteDeviceIdentity, so device-level policy defaults become matchable. Realises the SecurityBootstrap -> Interview ordering: a node whose NIF lists S0/S2 is deferred until it reports secure (NodeSecurityStatus), so the Gets ride the encrypted channel; a non-secure node is interviewed off NodeIncluded. Manifest adds the NodeInterviewComplete event and an `orchestrator` publisher on the four Get*Command events. 3 bus-driven tests (rich node full sequence, minimal node skips optional steps, secure node defers). 474/474 ctest green on gnu + llvm; clang-format + clang-tidy clean. Remaining #203 layers: gate the InclusionOrchestrator policy step on NodeInterviewComplete; persist the gathered identity into node-registry; sleeping-node interview via PendingQueue. Hardware-verified in #189. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The core of #203 — the post-inclusion interview now runs automatically, closing the gap where device identity was only gathered on a manual poke.
What
src/orchestrator/InterviewOrchestrator.cpp(bus-only, priority 204): on a node joining it runs an ordered Get sequence, advancing on each matching typed report:ManufacturerSpecificReportit triggers feedsPolicyRegister::noteDeviceIdentity, so device-level policy defaults become matchable (the headline gap from the issue).NodeSecurityStatus), so the Gets ride the encrypted channel; a non-secure node is interviewed straight offNodeIncluded.NodeInterviewComplete{nodeId}— the seam the InclusionOrchestrator policy step will key off (next layer).Manifest adds the
NodeInterviewCompleteevent and anorchestratorpublisher on the fourGet*Commandevents.Tests
3 bus-driven tests: rich node runs the full 4-step sequence to completion; a minimal node skips the optional endpoint/Z-Wave+ steps; a secure node defers until
NodeSecurityStatus. 474/474 ctest green on both gnu and llvm; clang-format + clang-tidy clean.Remaining #203 layers
InclusionOrchestratorpolicy step onNodeInterviewComplete(order becomes SecurityBootstrap → Interview → Policy, device defaults match);PendingQueue.Part of #203. Hardware acceptance under #189.
🤖 Generated with Claude Code