Phase 1 — Fabric bootstrap
Layer: JS + cloud (optional native KeyStore)
Ensure the active home is a Matter fabric with credentials ready. No native Matter radio or ChipTool activity yet.
| Step | Caller | Callee | What |
|---|---|---|---|
| 1 | Commissioning hook | store.getCurrentHome() | Get active home |
| 2 | isFabricReady() | — | Matter home? consent needed? |
| 3 | (if needed) | fabric.convertToFabric() | Cloud: convert group → fabric |
| 4 | runFabricCommissioning | fabric.getFabricDetails() | Fetch root CA, IPK, fabricId, CATs |
| 5 | (if no user NOC yet) | fabric.issueUserNoC() | Cloud: issue user operational cert |
| 6 | user.storePrecommissionInfo(...) | Persist NOC + fabric creds for native |
Native touch (pre-commission)
ESPMatterModule.generateCSR() may run in the user-NOC path — creates Android KeyStore key + PKCS#10 CSR. This is the user NOC (Phase 1), not the device’s node cert in Phase 5.
What could go wrong
Fabric conversion declined → user navigates back. issueUserNoC fails or group id mismatch → error phase with fabric/credential messages.