SigilStatus
UI state for SigilStatusPanel / SigilPanelViewModel.
Mirrors the wallet panel's com.midnight.kuira.dapp.wallet.WalletStatus shape. A pure identity state — no SDK / network / address coupling. Hosts that want to bridge sigil identity with their wallet SDK (e.g. signing an access-key authorization) wire that themselves; this state machine only covers what the panel can fully own (passkey creation + DID derivation + cloud backup / restore).
Variants:
None: no passkey + DID yet. Pill renders a "create identity" cue.
Creating: passkey ceremony or DID derivation in flight. Spinner.
Forged: passkey exists; DID + root key derived. Pill shows the truncated DID (or, when wired up, a
.nightMidnames domain).Error: a flow failed. Pill renders the error glyph.
Inheritors
Types
No local sigil yet, but a Block Store cloud backup was found.
Async flow in progress (passkey create, DID derive, backup, restore).
Flow failed (passkey rejected, RP id mismatch, network error, etc.).
Brief window between activity launch and the first stable status — loadPersistedSigil() is sync but Block Store probe is async. UI renders a spinner; sibling wallet panel waits before auto-bootstrapping so a probe-detected backup doesn't get blown over by a fresh wallet creation.
No passkey + DID yet, and no cloud backup detected.