Crosswake Support Matrix

View Source

This guide stays narrow and proof-oriented. The published iOS and Android shell claims below are backed by the checked-in example hosts plus the generated-shell verification hooks that now pass on the same host-owned artifact classes adopters ship. The default non-local generator path resolves native shell cores from github.com/szTheory/crosswake-shell-core-ios and Maven Central io.github.sztheory:crosswake-shell-core-android at the Crosswake Hex package version; the release-time clean-room proof promotes that path after the coordinated cut.

Status Legend

  • supported
  • verification required
  • unsupported

Phoenix

TargetVersionBaselineProof StatusProof HookBoundariesNotes
phoenix~> 1.8supportedsupportedphase-2-proof-lane-Phoenix host install and manifest generation are the stable baseline.

LiveView

TargetVersionBaselineProof StatusProof HookBoundariesNotes
phoenix_live_view~> 1.1supportedsupportedphase-2-proof-laneView BoundariesLiveView remains server-owned and route-first.

iOS

TargetVersionBaselineProof StatusProof HookBoundariesNotes
ios17.0supportedsupportedscript/verify_generated_ios_shell.shView BoundariesHost-owned iOS shell boot is proof-backed by the checked-in example host and generated-shell verification hook.

Android

TargetVersionBaselineProof StatusProof HookBoundariesNotes
android26supportedsupportedscript/verify_generated_android_shell.shView BoundariesAndroid shell boot is supported based strictly on JVM hermetic CI evidence.

Shell Artifacts

TargetVersionBaselineProof StatusProof HookBoundariesNotes
ios_shellHex-matchedsupportedverification requiredclean-room-proof-ios; script/verify_generated_ios_shell.shView BoundariesDefault non-local scaffolds resolve https://github.com/szTheory/crosswake-shell-core-ios.git via SwiftPM at the Crosswake package version; release-time clean-room proof confirms external resolution and swift build.
android_shellHex-matchedsupportedverification requiredclean-room-proof-android; script/verify_generated_android_shell.shView BoundariesDefault non-local scaffolds resolve io.github.sztheory:crosswake-shell-core-android via Maven Central at the Crosswake package version; release-time clean-room proof confirms external resolution and gradle build.

Capability Families

FamilyOwnerPostureBaselineProof StatusPackageProofRebuildPrerequisitesDenialFallbackGuide
app_infobounded_bridgebounded_bridgesupportedverification requiredcoremerge-blockingnonedeclared route capability; bounded bridge supportundeclared_capabilityPhoenix route continues without native app metadataGuide
deep_linkactivationactivation_firstsupportedsupportedcoremerge-blockingnonebundled or cached manifest; shell activation support; explicit route entry approvalroute_unavailableshow route unavailable surface that distinguishes inactive routes from routes that reject external entryGuide
document_scannative_screennative_screensupportedsupporteddeferadvisorycompanion-requireddocument-scan runtime; policy-heavy proof laneunavailable_capabilitydefer document scan support until native and proof posture are explicitGuide
entitlement_snapshotbackend_seambackend_seamsupportedverification requiredcoremerge-blockingcompanion-requiredbackend entitlement authority; reconciliation hook; freshness posture (fresh/stale/unknown) surfaced before access checksunavailable_capabilityFail closed for access decisions when snapshot freshness is stale or unknown until refreshed backend authority is available; pending and awaiting_verification states never grant entitlement.Guide
file_pickerbounded_bridgetransfer_backedsupportedverification requiredcoremerge-blockingnative-requireddeclared transfer_id; bounded bridge support; inbound native_picker transfer seam; copy-first staged handle plus transfer verificationundeclared_capabilitykeep the route on Phoenix-owned import guidance until a copy-first native_picker seam is declared and verifiedGuide
hapticsbounded_bridgebounded_bridgesupportedverification requiredcoremerge-blockingnonedeclared route capability; bounded bridge supportundeclared_capabilityPhoenix route continues without native confirmation feedbackGuide
media_capturenative_screennative_screensupportedverification requiredcompanionmerge-blockingnative-requirednative screen route; capture pack availabilitypack_incompatiblefail closed instead of degrading into a bounded web upload flowGuide
notification_tokenbounded_bridgeprovider_snapshotsupportedverification requiredcompanionadvisorycompanion-requireddeclared route capability; bounded bridge support; notification authorization already resolved; provider token snapshot availableunavailable_capabilitytreat notification token replies as provider-tagged evidence instead of backend registration truthGuide
paywall_entrybackend_seambackend_seamsupportedverification requiredcoremerge-blockingcompanion-requiredbackend entitlement contract; storefront guidanceunavailable_capabilityfall back to Phoenix-owned paywall guidance without device authorityGuide
permissions.statusbounded_bridgealias_snapshotsupportedverification requiredcoremerge-blockingnonedeclared route capability; bounded bridge support; notifications alias onlyundeclared_capabilityroute continues without native notification permission snapshot authorityGuide
purchase_intentbackend_seambackend_seamsupportedverification requiredcoremerge-blockingcompanion-requiredbackend reconciliation; provider-specific adapterunavailable_capabilitytreat purchase events as reconciliation inputs, not entitlement truthGuide
reconciliation_evidencebackend_seambackend_seamsupportedverification requiredcoremerge-blockingcompanion-requiredbackend reconciliation; device callback or webhook; pending and awaiting_verification reconciliation states stay non-grantingunavailable_capabilityTreat device/storefront/webhook/support evidence as non-authoritative reconciliation input; pending_purchase, pending_restore, and awaiting_verification remain non-granting until backend projection refreshes authority.Guide
restore_intentbackend_seambackend_seamsupportedverification requiredcoremerge-blockingcompanion-requiredbackend reconciliation; storefront-aware adapterunavailable_capabilitykeep restore flow backend-owned until adapter truth is explicitGuide
scannernative_screennative_screensupportedsupporteddeferadvisorycompanion-requiredscanner-native runtime; policy-heavy proof laneunavailable_capabilitydefer scanner support until native and proof posture are explicitGuide
sharebounded_bridgebounded_bridgesupportedsupportedcoreadvisorynonetruthful semantic share contractundeclared_capabilitykeep content in the Phoenix-owned route until a share family is declaredGuide

Commerce Corridors

corridor_roleowner_postureprerequisite_classesprerequisitesdenial_codesfallback_behaviorproof_classrebuild_requirement
paywall_entryphoenix_ownedroute_declaration; backend_reconciliationroute declares commerce corridor binding; backend entitlement contract availablecommerce.corridor.undeclared; commerce.corridor.entry_denied; commerce.corridor.origin_deniedKeep the paywall route Phoenix-owned and return explicit declaration guidance when a corridor check fails.merge-blockingnative_rebuild_required=false: Core route/manifest metadata only — Phoenix-owned paywall changes do not require a native shell rebuild.
account_managementphoenix_ownedroute_declaration; backend_reconciliationroute declares commerce corridor binding; backend entitlement projection availablecommerce.corridor.undeclared; commerce.corridor.policy_blocked; commerce.corridor.prerequisite_missingReturn to backend-owned account management guidance and fail closed until prerequisites are restored.merge-blockingnative_rebuild_required=false: Core route/manifest metadata only — backend-owned account surfaces do not require a native shell rebuild.
purchase_intentnative_or_companion_requirednative_adapter; provider_setup; backend_reconciliationnative or companion storefront corridor implemented; backend reconciliation ingest enabledcommerce.corridor.runtime_incompatible; commerce.corridor.unsupported; commerce.corridor.pack_incompatible; commerce.corridor.prerequisite_missingFail closed with return-to-Phoenix guidance; never grant entitlement authority from device intent alone.merge-blockingnative_rebuild_required=true: Native adapter or provider SDK code changes require rebuilding and resubmitting the host shell.
restore_intentnative_or_companion_requirednative_adapter; provider_setup; backend_reconciliationnative or companion restore corridor implemented; backend reconciliation ingest enabledcommerce.corridor.runtime_incompatible; commerce.corridor.unsupported; commerce.corridor.pack_incompatible; commerce.corridor.prerequisite_missingFail closed with restore guidance and keep entitlement truth backend-owned until evidence is reconciled.merge-blockingnative_rebuild_required=true: Native restore choreography or provider SDK code changes require rebuilding and resubmitting the host shell.

Packaging Ledger

crosswake remains the one primary public package. Companions are first-party-scoped typed boundaries, not plugin-market surfaces.

SurfaceClassWhyRelease BurdenPublic Guide
crosswake primary packagecoreRoute-policy DSL, manifest contract, compatibility axes, bounded-bridge vocabulary, shell generators, doctor, support matrix, release rules, and proof posture stay in one obvious Phoenix-first package.Hex package SemVer moves independently, while support truth still follows manifest_schema_version, bridge_protocol_version, and native_runtime_version.Guide
Phoenix-facing commerce seam vocabularycorepaywall_entry, purchase_intent, restore_intent, entitlement_snapshot, and reconciliation_evidence stay normalized and backend-truthful in core without embedding storefront providers.Semantics may evolve in core, but provider adapters and native storefront logic remain outside the base package.Guide
Provider adapters and native-heavy integrationscompanionStorefront adapters, media/upload/capture, rollout, auth/session, notifications, and audit/operator seams carry native binary churn or backend coupling beyond core.First-party companions declare minimum compatible ranges against core, compatibility axes, and capability-family majors.Guide
Checked-in example hosts and install walkthroughsexample/docs-onlyExamples, walkthroughs, reviewer playbooks, and vendor recipes teach boundaries and proof posture without becoming separate runtime packages.Not first-class supported as package surfaces; promotion requires reclassification plus proof and support-matrix updates.Guide
Standalone native shell core packagescoreThe generated shell stays host-owned, while reusable native core logic resolves from SwiftPM and Maven Central packages instead of monorepo-local paths.Native core versions move in lockstep with the Hex package through release-please linked versions; clean-room proof verifies the external install path at release time.Guide

Release And Versioning Policy

package versions alone do not define support truth.

TargetVersioningCompatibility ContractRelease Rule
coreIndependent SemVer for the crosswake Hex package.package versions alone do not define support truth; manifest_schema_version, bridge_protocol_version, and native_runtime_version stay canonical.Manifest-major, bridge-major, and runtime-line changes must update support docs and doctor before release.
companionIndependent SemVer per first-party companion.Each companion declares minimum compatible ranges for core, all three compatibility axes, and exposed capability-family majors.Companion support cannot expand until the adapter publishes explicit compatibility ranges and fail-closed guidance.
ios_shellSwiftPM core package version is lockstep with the Hex package; host app build numbers remain adopter-owned.Breaking bridge semantics require a bridge_protocol_version major bump plus a compatible shell artifact before support widens.Changes touching native code, entitlements, permissions, registration, or packaged runtime behavior move the native_runtime_version line and mark rebuild required.
android_shellMaven Central core artifact version is lockstep with the Hex package; host app build numbers remain adopter-owned.Breaking bridge semantics require a bridge_protocol_version major bump plus a compatible shell artifact before support widens.Changes touching native code, entitlements, permissions, registration, or packaged runtime behavior move the native_runtime_version line and mark rebuild required.

Change Classes

Change ClassWhat ChangedAdopter ActionCompatibility SignalRequired Proof
docs-onlyGuides, wording, examples, support notes, or advisory docs changed without changing manifest semantics, compatibility-axis values, capability versions, shell templates, companion code, or proof expectations.Read the updated guidance and rerun docs integrity only.No compatibility-axis or capability-version change.docs integrity only
core-only/no native rebuildCore Elixir behavior, docs generation, doctor, support rendering, or validation changed inside the already-supported schema, bridge, runtime, and capability versions.Update the Hex package and rerun core contract + doctor/support proof without rebuilding native shells.Existing manifest_schema_version, bridge_protocol_version, native_runtime_version, and capability majors stay in line.core contract + doctor/support proof
compatibility-bump onlyCompatibility declarations or package windows narrowed so some older combinations now fail closed, but a fresh binary is not automatically required for already-compatible adopters.Check the compatibility window, confirm your shipped shell/runtime is still in range, and run fail-closed compatibility fixtures.manifest_schema_version, bridge_protocol_version, native_runtime_version, or capability required-version declarations changed support windows.fail-closed compatibility fixtures
native or companion rebuild requiredNative code, generated shell projects, entitlements, permissions, platform config, native dependencies, or companion-native integration code changed.Rebuild the affected shell or companion, publish the updated runtime line, and rerun generated-shell or companion verification lanes.Every rebuild-required change carries explicit compatibility declarations, especially native_runtime_version, bridge_protocol_version, manifest_schema_version, and capability required-version shifts.core proof plus generated-shell or companion verification lanes

Action Classes

action_classsubjectrequired_actionrebuild_requiredreasonguide_anchor
docs_onlyPublic guides, examples, and support notesRead updated guidance and rerun docs integrity checks.falseDocs-only changes do not change manifest semantics, compatibility axes, native code, or proof expectations.guides/support_matrix.md#action-classes
route_manifestPhoenix route policy and manifest metadataUpdate the Hex package, regenerate manifest truth, and run core contract plus doctor/support proof.falseRoute and manifest metadata can stay core-only when schema, bridge, runtime, and capability major versions remain compatible.guides/support_matrix.md#action-classes
compatibilityCompatibility windows and required version declarationsCheck compatibility windows and run fail-closed compatibility fixtures before release.falseA narrowed support window may reject older combinations without requiring already-compatible adopters to rebuild.guides/compatibility.md#runtime-line-rules
native_shelliOS or Android shell artifacts and native runtime lineRebuild affected shells, publish the updated runtime line, and rerun generated-shell verification lanes.trueNative code, entitlements, permissions, platform config, and generated shell projects require host shell rebuild verification.guides/native_shell.md#boundary-warnings--rough-edges
companion_nativeFirst-party companion bindings or companion-native surfacesVerify companion dependency health, compatibility ranges, and fail-closed fallback posture before widening support.trueCompanion-native integrations can carry native binary churn or backend coupling beyond core route metadata.guides/companions.md#support-truth-and-proof-posture
provider_adapterStorefront/provider SDK adaptersKeep provider proof advisory until adapter implementation, provider setup, backend reconciliation, docs, and promotion criteria all pass.trueProvider SDK adapters require native/provider setup and cannot be treated as shipped support from seam-only contracts.guides/commerce.md#provider-adapter-defers

Promotion Rules

Promotion rules keep advisory proof visible until evidence, docs, platform, and demotion criteria are all satisfied.

claim_idcurrent_statepromotes_toevidence_classrequired_evidenceminimum_consecutive_passesfreshness_windowfailure_budgetrequired_platformsrequired_docs_anchorschange_classaction_classcheck_idsdemotion_trigger
shell.ios.generated_projectmerge-blockingsupportedgenerated_shellscript/verify_generated_ios_shell.sh; support matrix parity1current release branchzero merge-blocking failuresiosguides/support_matrix.md; guides/native_shell.mdnative or companion rebuild requirednative_shelldiag.shell.verification_requiredDemote to verification_required when generated-shell proof fails or native_runtime_version support narrows.
shell.android.generated_projectadvisorymerge-blockinggenerated_shellscript/verify_generated_android_shell.sh; Java-enabled BridgeChannel proof2current release branchzero merge-blocking failuresandroidguides/support_matrix.md; guides/native_shell.mdnative or companion rebuild requirednative_shelldiag.shell.verification_requiredKeep or demote to verification_required when Android JVM or generated-shell proof is stale or unavailable.
notification_token.provider_snapshotadvisorymerge-blockingprovider_snapshotnotification_token capability contract; provider-tagged snapshot fixtures2current release branchzero contract failuresios; androidguides/support_matrix.md; guides/capabilities.mdnative or companion rebuild requiredcompanion_nativediag.notification.token_provider_snapshot_onlyDemote when provider snapshot proof is stale, missing, or confused with Chimeway delivery support.
auth.sigra.session_authoritymerge-blockingmerge-blockingsession_authority_handoff_step_up_auth_return_contractauth posture route fixtures; session authority evaluator proof; step_up_required denial-code proof; single-use handoff ticket lifecycle proof; server-record redemption and audit proof; server-owned step-up intent lifecycle proof; shared Plug/LiveView ceremony proof; OAuth/passkey/native auth-return envelope proof; host-owned auth-return attempt replay proof; verified-link-first native return proof; low-cardinality auth telemetry proof; security closeout proof1current release branchzero contract failuresios; androidguides/support_matrix.md; guides/companions.mdnative or companion rebuild requiredcompanion_nativediag.auth.sigra_session_authorityDemote if route predicates, auth_posture, auth_return route policy, step_up_required/auth.handoff/auth.step_up_intent/auth.return denial codes, auth telemetry metadata, handoff/step-up/auth-return server-record proof, security closeout, or Sigra docs drift from support truth.
purchase_intent.provider.storekitadvisorymerge-blockingprovider_adapterdeterministic adapter contract proof; backend reconciliation authority proof; docs-contract parity proof; advisory storefront/provider lane evidence3current adapter releasezero entitlement-authority failuresiosguides/support_matrix.md; guides/commerce.mdnative or companion rebuild requiredprovider_adapterdiag.provider.storekit.advisory_proof; diag.provider.adapter_shipped_seamsRemain advisory until StoreKit adapter, provider setup, docs parity, and backend reconciliation proof all pass.
restore_intent.provider.storekitadvisorymerge-blockingprovider_adapterdeterministic adapter contract proof; backend reconciliation authority proof; docs-contract parity proof; advisory storefront/provider lane evidence3current adapter releasezero entitlement-authority failuresiosguides/support_matrix.md; guides/commerce.mdnative or companion rebuild requiredprovider_adapterdiag.provider.storekit.advisory_proof; diag.provider.adapter_shipped_seamsRemain advisory until StoreKit restore evidence stays backend-owned and proof/docs parity pass.
purchase_intent.provider.play_billingadvisorymerge-blockingprovider_adapterdeterministic adapter contract proof; backend reconciliation authority proof; docs-contract parity proof; advisory storefront/provider lane evidence3current adapter releasezero entitlement-authority failuresandroidguides/support_matrix.md; guides/commerce.mdnative or companion rebuild requiredprovider_adapterdiag.provider.play_billing.advisory_proof; diag.provider.adapter_shipped_seamsRemain advisory until Play Billing adapter, provider setup, docs parity, and backend reconciliation proof all pass.
restore_intent.provider.play_billingadvisorymerge-blockingprovider_adapterdeterministic adapter contract proof; backend reconciliation authority proof; docs-contract parity proof; advisory storefront/provider lane evidence3current adapter releasezero entitlement-authority failuresandroidguides/support_matrix.md; guides/commerce.mdnative or companion rebuild requiredprovider_adapterdiag.provider.play_billing.advisory_proof; diag.provider.adapter_shipped_seamsRemain advisory until Play Billing restore evidence stays backend-owned and proof/docs parity pass.
shell.android.jvm_hermeticadvisorymerge-blockingjvm_hermetic_ciscript/verify_generated_android_shell.sh; Java-enabled JVM BridgeChannel hermetic proof; support-matrix rebuild_matrix parity; docs-contract parity for Android runtime-line3current release branch, within 30 CI runszero consecutive failures; single failure resets counterandroidguides/support_matrix.md; guides/native_shell.md#android-verificationnative or companion rebuild requirednative_shelldiag.shell.android.jvm_hermetic; diag.shell.verification_requiredDemote to verification_required when Android JVM hermetic CI proof is stale, fails, or coverage drops below the freshness window. jvm_hermetic promotion MUST NOT be read as device_verified — CI-level evidence is not device/emulator evidence.
shell.android.device_verifiedadvisorymerge-blockingdevice_verifiedAndroid emulator advisory lane evidence (Phase 68); device-UAT checklist completion (Phase 68); capability-parity-locked device proof; docs-contract parity for Android device-verified runtime-line3current release branch, within 10 device-UAT runszero consecutive failures; single failure resets counterandroidguides/support_matrix.md; guides/native_shell.md#android-device-uatnative or companion rebuild requirednative_shelldiag.shell.android.device_verified; diag.shell.verification_requiredDevice/emulator proof is unavailable until Phase 67 (Android shell implementation) and Phase 68 (Android verification closure and device-UAT checklist). jvm_hermetic promotion MUST NOT be read as device_verified — CI-level JVM hermetic evidence does not constitute real-device or emulator proof. Demote to verification_required if device-UAT evidence is stale or if the device lane drops below the freshness window.

Notification Surface (v3.9)

Crosswake provides explicitly bounded support for notifications via the Chimeway companion.

Supported:

  • Token binding: The notification_token capability resolves local push tokens.
  • notification-open routing: Notification open resolved through RouteGate for manifest-known routes and route-local action allowlists.
  • Route activation proof: The notification-open workflow proof is hermetic route activation proof. RouteGate and Sigra decide activation; token/open evidence is not auth authority.
  • Resolution limits: Bounded bridge operations ensure requests complete predictably.
  • Evidence redaction: Diagnostic output actively redacts sensitive identifiers.

Deferred (Not Supported):

  • APNs/FCM delivery execution: APNs/FCM delivery is not part of this proof, and Crosswake does not act as a push delivery service.
  • Push metrics: Delivery and read-receipt metrics are not tracked by the core framework.
  • Deep UI native presentation: Custom native notification UI presentation is left to the host shell.

Strict Telemetry Contract: The telemetry event structure [:crosswake, :notification, :*] exposes low-cardinality delivery status and routing outcomes. Raw payload data, device tokens, and PII are strictly forbidden and explicitly stripped from all diagnostic output.

Media Evidence Recovery Surface (v4.1)

Crosswake provides a hermetic Rindle proof for simulated media recovery.

Supported:

  • Recovery proof: Rindle media/evidence recovery proof is hermetic and merge-blocking.
  • Simulated degradation: Simulated network degradation is proof-only and deterministic.
  • Backend authority: Local capture evidence is not availability authority; backend verification is required before media becomes available.
  • Proof copy: Capture recorded locally; media is not available yet, Device evidence recorded; backend verification still required, This proof does not use a real storage provider, and Local capture evidence does not grant media availability.

Deferred (Not Supported):

  • Real storage providers: Host applications own storage target choice and persistence.
  • Native camera/media picker capture: Capture UX remains host-owned.
  • Background transfer and device network toggling: These remain advisory/deferred and never gate merge.
  • Generic sync: Phase 72 does not ship a broad sync engine.

Public Non-Claims And Rough Edges

  • StoreKit and Play Billing provider adapter seams are shipped, but provider/storefront proof remains advisory until promotion criteria pass.
  • Sigra session-authority route evaluation, Phase 55 handoff ticket/server-record contract machinery, Phase 56 step-up intent plus Plug/LiveView ceremony, Phase 57 OAuth/passkey/native auth-return boundary contracts, Phase 58 auth telemetry/security closeout, and Phase 73 auth-sensitive admin workflow proof are shipped for route predicates, auth_posture, route-local auth_return, :step_up_required, canonical auth.handoff.*, canonical auth.step_up_intent.*, canonical auth.return.* denial codes, stable [:crosswake, :auth, ...] telemetry events, low-cardinality diagnostic metadata, and proof that persistent shell session state does not grant admin access; refresh-token helpers, provider/device proof, provider templates, passkey SDK wrappers, direct shell/WebView token authority, native auth UI, and generic audit machinery remain deferred.
  • APNs/FCM push delivery execution, delivery metrics, and deep UI native notification presentation remain deferred; notification support focuses strictly on token binding, notification-open routing, RouteGate/Sigra route activation proof, and diagnostic telemetry.
  • Standalone native shell core packages are consumed by generated host-owned wrappers through SwiftPM and Maven Central; device/emulator proof and broader native runtime claims remain deferred until separately proven.