Phase 6 — Device commissioned + RainMaker metadata
Layer: Native CHIP
After NOC install, CHIP finishes Matter commissioning on-device. The shared buildCommissioningCompletionListener in ChipClient runs post-commission work for both ChipTool and any legacy GPS-driven awaitCommissionDevice path.
Inside ChipClient (on onCommissioningComplete, errorCode == 0)
- Reads device metadata / RainMaker-specific attributes from the device.
- May write ACL entries (operate CAT) via Matter clusters.
- Sets
lastCommissionedNodeId,lastCommissionedDeviceName. - Builds confirm payload →
triggerHeadlessConfirmCommissionTask(metadata).
The suspend function awaitPairDeviceOverBle does not resume here — it waits for Phase 7 (onCommissioningFullyComplete).
Events to React Native (ChipTool path)
On the default ChipTool back-end there is no intermediate COMMISSIONING_COMPLETE from a system Matter UI. The next RN-visible success is Phase 7 with source: HEADLESS_JS.
GooglePlayServices buildIf MATTER_COMMISSIONING_METHOD=GooglePlayServices, ESPMatterCommissioningService still posts an intermediate COMMISSIONING_COMPLETE with source: GPS_SERVICE after CHIP succeeds. Your hook must ignore that via isMatterCommissioningTerminalComplete() — see Phase 8.
See Terminal success by platform.
What could go wrong
Metadata read from device fails → confirm Headless task never starts → UI stays on commissioning until timeout. Treating any non-HEADLESS_JS complete as terminal success (only relevant on the legacy GPS build).