hardLocked

val hardLocked: StateFlow<Boolean>

True only when a HARD lock (doLock) has actually torn the SDK down (provider.close()), as opposed to a softLock that gates the UI but keeps the SDK alive. The foreground service keys its immediate-teardown on THIS, not locked: a soft-lock must not stop the FGS while a value-bearing operation is still in flight (that would defeat #261-264). Cleared when the SDK is rebuilt (re-auth / network switch).