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.

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
android26supportedverification requiredscript/verify_generated_android_shell.shView BoundariesHost-owned Android shell boot is baseline-supported, but the current repository truth still requires the Java-enabled BridgeChannel proof lane to pass before Android support can be claimed as fully verified.

Shell Artifacts

TargetVersionBaselineProof StatusProof HookBoundariesNotes
ios_shell0.1.0supportedsupportedscript/verify_generated_ios_shell.shView BoundariesGenerated iOS shell artifacts are supported while the Phase 5 iOS verification hook stays green.
android_shell0.1.0supportedverification requiredscript/verify_generated_android_shell.shView BoundariesGenerated Android shell artifacts remain baseline-supported, but repository support truth stays verification-required until the Java-enabled BridgeChannel proof lane passes.

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 public shell packagesdeferSeparately versioned shell artifacts stay deferred until release choreography and compatibility policy are mature enough to support them honestly.No first-class package commitment yet; any future promotion must land with runtime-line rules and rebuild guidance.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_shellPlatform artifact build numbers may differ, but the shell publishes against the shared native runtime line.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_shellPlatform artifact build numbers may differ, but the shell publishes against the shared native runtime line.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