Skip to content

Research 0002 — Device capability candidates beyond RFC 0083's v1 slice ​

Status: Open. No candidate below is scoped or committed to any release.

Question ​

Sovereign RFC 0083 deliberately ships a thin v1 bridge slice (haptics.impact, notifications.native) to prove the capability-negotiation contract, not to cover the device surface. What capabilities should be added next, in what order, and what does each one actually require beyond "add a registry entry"?

This doc exists so capability requests (from product, from plugin authors, or from a specific plugin's needs) have one place to accumulate before they turn into epic tasks — rather than each being decided ad hoc the moment someone asks for one.

Candidates identified so far ​

CapabilityWeb API fallback exists?Native-only reasonNotes
GeolocationYes (navigator.geolocation)Background location and higher accuracy need native APIsWeb tier likely covers most plugin needs already; native tier only justified for background use — see sovereign research 0005 (trip-planning plugin) for a concrete consumer.
Camera / photo capturePartial (getUserMedia)Native photo picker UX, existing-photo-library accessTracked centrally as sovereign epic task 20.6.
Calendar read/writeNoNo Web API for OS calendar integrationNot currently referenced by any specific plugin need in this workspace; candidate only, not requested by a consumer yet.
NFCNoNo Web API equivalent; iOS NFC access is especially restrictiveCandidate only; no consumer identified yet. Requires investigating iOS Core NFC entitlement and session-lifetime constraints before scoping.
Biometric auth (Face ID / fingerprint)NoLocal device unlock gate, not a Sovereign auth mechanismTracked centrally as sovereign epic task 20.7. Does not replace or duplicate instance-side auth — see ADR 0003.
Background location / background workNoRequires background execution entitlements on both platformsExplicitly called out in RFC 0058 as needing its own capability RFC — highest-scrutiny candidate on this list.
Push notifications (APNs/FCM)Partial (Web Push)Reliability and delivery-when-app-closed guaranteesTracked centrally as sovereign epic task 20.5; deferred out of the first store release per workstream 0002.

How a candidate graduates off this list ​

  1. A concrete plugin need is identified (not speculative — an actual plugin blocked without it).
  2. The capability is added to sovereign RFC 0083's registry (protocol change happens in sovereign, not here — see ADR 0004).
  3. Permission string, privacy declaration, and consent UX are defined before any implementation starts.
  4. An epic task is created in docs/epics/bridge.md and this row is updated to point at it.

Open questions ​

  • Should calendar and NFC be scoped now, speculatively, or left off the registry until a specific plugin asks for them? Current lean: leave them off — RFC 0083's stated strategy is additive-as-needed, not front-loaded.
  • Does background location need a dedicated RFC before it's even a candidate here, given RFC 0058 already flags it as needing one?

Open source under AGPL-3.0. Each Sovereign instance is independently operated.