GrantDesktop
Entry point for the grant-desktop module — mirrors GrantContacts/GrantCalendar/ GrantMotion's initialize() pattern on iOS. Call this once, e.g. at your Compose Desktop app's main(), before any dev.brewkits.grant.GrantManager call for a desktop permission.
A consumer that adds this module but runs on a non-macOS JVM (or on an architecture with no bundled dylib — see NativeBridgeLoader) gets a logged notice and every desktop AppGrant still resolves to DENIED_ALWAYS via grant-core's own fallback delegate; this module never fabricates a GRANTED for a permission it has no real handler for.
Tier 2 status (ROADMAP.md v2.6.0): camera and microphone, plus Settings. Location, contacts, and calendar are planned but not yet wired — see the roadmap for why camera was verified first (a harness had to exist before any handler could be trusted) and what's next.
Functions
@Synchronized rather than the plain flag GrantContacts.initialize() uses on iOS: two threads calling this concurrently on a JVM could both pass an unguarded check and double-register. Registration is idempotent so the damage would be limited, but the guard is what makes "called once" a fact rather than a hope.