Crosswake Support Matrix

View Source

Canonical owner: Crosswake.CapabilityMap for the first adopter claim layers. Regenerate with mix crosswake.docs.sync.

This guide stays narrow and proof-oriented. Generated-shell coordinate support is backed by release-time clean-room proof plus generated-shell verification hooks. The checked-in native hosts are checked-in public-coordinate proof; the explicit maintainer path stays local-dev proof behind --local. 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.

Support-Truth Label Legend

Use these labels literally. Each label says what the evidence proves and what it does not prove.

LabelWhat it provesWhat it does not prove
merge-blocking proofRequired deterministic proof that must pass before the claim can merge.It does not prove every platform/device path or any unsupported owner class.
advisory evidenceUseful evidence that informs confidence but does not block standard merge flow.It does not widen support truth by itself.
checked-in public-coordinate proofA checked-in host path resolves published SwiftPM/Maven coordinates by default.It is not a device, simulator, or emulator support claim and it does not cover --local.
local-dev proofA checked-in or local host path works for maintainers in this repository.It is not generated public-coordinate proof.
generated public-coordinate proofA generated adopter-facing path resolves published SwiftPM/Maven/Hex coordinates.It does not prove checked-in local hosts use those coordinates.
JVM hermetic proofAndroid logic passed deterministic JVM-level CI.JVM hermetic proof is not emulator evidence or physical-device proof.
emulator evidenceA simulator or emulator run produced advisory platform evidence.Emulator evidence is not physical-device proof.
device evidenceA physical-device run produced platform evidence.Device evidence is not backend/session authority.
verification-requiredA claim needs an explicit verification lane before it can be treated as supported.It is not a failure-open support claim.
rebuild-requiredA change touches native or companion surfaces that require rebuilding the host artifact.It is not implied by docs-only or core-only/no native rebuild changes.

Support status is not device evidence: supported is not the same as device-verified. Visual collateral is not correctness proof by itself. Device/provider evidence is not backend/session authority. Cached read-only is not offline mutation. Bridge is not high-frequency or mutation authority.

Interaction-Class Legend

manifest_schema_version moved 1.0.0 -> 1.1.0 (Phase 154, CTRL-05/D-55): additive, native-inert — the iOS and Android shells decode neither the new interaction field nor the widened Capability enforce-keys, so this is compatibility-bump only, not rebuild-required.

Every capability declared in Crosswake.Manifest.Builder.capability_catalog/0 now also declares an explicit Capability.interaction value alongside Capability.rebuild, enforced at compile time by @enforce_keys. Use these labels literally.

Guarantee strength, stated honestly (D-45/D-52). That @enforce_keys widening is the only part of the Phase 154 catalog line that is structurally impossible to violate: a capability declaring neither interaction nor rebuild does not compile, and no reviewer or CI job is involved. Every other part of the bounded-bridge contract is CI-caught rather than structural. Crosswake.Bridge.CatalogGuard is a merge-blocking structural test proving there is no dynamic-registration seam, no streaming seam, no external SDK inside the bridge tree, and native command enum parity in both directions — but a gate caught in CI is a gate a maintainer can still walk through deliberately, one honest control at a time. Read guides/bridge.md#guarantee-strength-what-is-structural-and-what-is-ci-caught before treating either as airtight.

Interaction ClassWhat it means
fire-and-forgetThe bridge dispatches the command and the route continues without waiting on a completion payload. A request-acknowledgement payload (for example share's %{"outcome" => "requested"}) does not change this — fire-and-forget means no completion is claimed, not that no payload is returned.
device-answerThe device autonomously answers with data — a snapshot or metadata read that does not require the user to make a choice.
user-answerCompleting the command requires an explicit user choice or action (for example picking a file) before a result exists.

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 Boundariesbounded iOS-only compiled topology, typed stack protocol, UIKit host composition, marker/insets, and generated host proof are verified in Phase 161.1; fixture and simulator evidence remain advisory, TODO-002/adopter topology is unknown_blocking, and source-bound signed-device composition is required before physical or support promotion.

Android

TargetVersionBaselineProof StatusProof HookBoundariesNotes
android26supportedsupportedscript/verify_generated_android_shell.shView BoundariesAndroid retains its frozen generator, Maven, JVM, and shared-vector posture. Checked-in Android host boot is checked-in public-coordinate proof; JVM hermetic CI evidence remains separate. Android is frozen during first adopter iOS readiness: no new feature, parity, device, template, or release claim.

Shell Artifacts

TargetVersionBaselineProof StatusProof HookBoundariesNotes
ios_shellHex-matchedsupportedverification requiredclean-room-proof-ios; script/verify_generated_ios_shell.shView BoundariesBounded iOS shell evidence excludes generic navigation, native leaf rendering, arbitrary restoration/modal breadth, and browser-history authority. Default 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. advisory — not wired as a required CI lane; macOS/Xcode toolchain not guaranteed in CI.
android_shellHex-matchedsupportedsupportednative-behavioral-proof-gate / android-generated-shell-unit; script/verify_generated_android_shell.shView BoundariesGenerated Android shell artifacts retain the frozen generator, Maven, JVM, and shared-vector posture based strictly on JVM hermetic proof via the merge-blocking android-generated-shell-unit CI lane (native-behavioral-proof-gate). JVM hermetic proof is not emulator evidence or physical-device proof. This existing posture is frozen during first adopter iOS readiness; no parity/device/template/release expansion is claimed.

First Adopter Readiness

The policy contract is policy-contract complete, while concrete adopter-instance input remains unknown_blocking. Known surface ownership is discovery context, not host or device proof. unknown_blocking blocks host-proof and physical-device promotion.

Example-host, simulator, package-version, and policy-contract evidence do not prove an external host or physical device. Route-local safety fields do not inherit from surface defaults. Cached read-only is not mutation, and one offline island does not claim generic sync.

Claim layerCurrent truthBoundary
Reusable contractsAvailable — reusable contracts verified.Route policy, scoped replay, pack, and shell contracts are reusable; contract proof alone does not verify a host.
Retained reference evidenceReference evidence — one source-bound physical-iPhone run was recorded on 2026-08-27 on iOS 26.6; it does not verify your host.Past evidence stays bound to that reference host, date, runtime line, and one bounded offline-study flow.
First adopter activationBlocked — sanitized route policy and signed-device proof are required before this host can be promoted.No retained reference, simulator, fixture, package-version, or policy-contract evidence transfers to this host.

Supporting boundaries

SurfaceCurrent truthPromotion evidenceBoundary
host-reusable offline/shell proofverification requiredA generated host-owned scaffold runs against an external Phoenix router, real route/storage identifiers, existing browser tests, and the iOS shell flow.Policy completion and example-host proof do not automatically transfer to a host application.
privacy-safe scoped replayverification requiredOpaque scope references, scope-partitioned outbox, logout/account-switch stops, endpoint reauthorization, and redacted evidence all pass.The existing host-owned gated_by seam remains the server-side disablement authority; raw mutation payloads, account identifiers, media, transcripts, tokens, and stable device identifiers are never diagnostics.
foreground iOS pronunciation packverification requiredA host provider downloads real bytes, verifies expected size and SHA-256, and atomically installs one immutable archive before reporting available.Current timed native pack transitions are simulated lifecycle evidence, not productionized native content-pack storage.
physical-iPhone offline studydevice evidenceRetained source-bound reference evidence remains dated and non-transferable.It does not claim Android. It does not claim background replay or sync. It does not claim generic storage or sync. It does not claim multiple offline islands. It does not claim simulator substitution. It does not claim every iPhone. v20 is stopped/partial; it has no shipped support claim.
Android during first adopter readinessadvisory evidence frozen at current postureAndroid is frozen at its existing generator, Maven, JVM, and shared-vector posture.No new Android feature, parity, template, emulator/device, or release requirement is active.

Generic sync is not claimed.

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_screenunsupportedunsupporteddeferadvisorycompanion-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_screenunsupportedunsupporteddeferadvisorycompanion-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

Bridge Reply Delivery

Reply delivery is stated per path. A bounded-bridge family being supported means the route is authorized to dispatch it and the denial contract holds; it does not by itself mean a NATIVE reply travels back on every platform yet.

Reply pathBaselineProof StatusNotes
server-synthesized denialsupportedmerge-blockingEvery platform including a plain browser with no shell at all. No shell, an unwired hook, and a shell refusal each resolve to exactly one typed denial; there is no configuration in which a push resolves to silence (CTRL-02).
Android native replysupportedJVM hermetic proofThe shipped Android shell core has been duplex since day one — the page receives a reply proxy and the reply travels back as a JSON string.
iOS native replyverification requiredmerge-blockingThe return leg exists in-repo from Phase 154: the reply sink evaluates JavaScript against the hook's landing pad, with Swift unit tests and committed contract vectors. Phase 156 was stopped, so no native-menu release promotes this path. It must ship only as needed for the first adopter runtime line and remains narrower than physical-device proof. Until then an iOS route still receives the server-synthesized denial rather than a native reply.

Fire-and-forget families do not wait on the iOS leg: haptics.impact is already present in the shipped closed command enum of both native cores, so its proof needs no native release.

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

Rebuild Decision Table

AxisChange KindRebuild ClassAdopter ActionDenial SignalGuide Anchor
manifest_schema_versionadditivecompatibility-bump onlyCheck the compatibility window, confirm your shipped shell/runtime is still in range, and run fail-closed compatibility fixtures.compatibility_mismatchguides/compatibility.md#manifest_schema_version
manifest_schema_versionbreakingnative or companion rebuild requiredRebuild the affected shell or companion, publish the updated runtime line, and rerun generated-shell or companion verification lanes.compatibility_mismatchguides/compatibility.md#manifest_schema_version
bridge_protocol_versionadditivecompatibility-bump onlyCheck the compatibility window, confirm your shipped shell/runtime is still in range, and run fail-closed compatibility fixtures.compatibility_mismatchguides/compatibility.md#bridge_protocol_version
bridge_protocol_versionbreakingnative or companion rebuild requiredRebuild the affected shell or companion, publish the updated runtime line, and rerun generated-shell or companion verification lanes.compatibility_mismatchguides/compatibility.md#bridge_protocol_version
native_runtime_versionadditivenative or companion rebuild requiredRebuild the affected shell or companion, publish the updated runtime line, and rerun generated-shell or companion verification lanes. Note: unlike schema/protocol axes, native runtime additive bumps always require a rebuild because the runtime lives in the binary.compatibility_mismatchguides/compatibility.md#native_runtime_version
native_runtime_versionbreakingnative or companion rebuild requiredRebuild the affected shell or companion, publish the updated runtime line, and rerun generated-shell or companion verification lanes.compatibility_mismatchguides/compatibility.md#native_runtime_version
capability_version (core-owned)additivecompatibility-bump onlyCheck the compatibility window, confirm your shipped shell/runtime is still in range, and run fail-closed compatibility fixtures.undeclared_capabilityguides/compatibility.md#capability-version
capability_version (native/companion)additivenative or companion rebuild requiredRebuild the affected shell or companion, publish the updated runtime line, and rerun generated-shell or companion verification lanes.undeclared_capabilityguides/compatibility.md#capability-version
capability_versionbreakingnative or companion rebuild requiredRebuild the affected shell or companion, publish the updated runtime line, and rerun generated-shell or companion verification lanes.undeclared_capabilityguides/compatibility.md#capability-version
docs_wordingadditivedocs-onlyRead the updated guidance and rerun docs integrity only.n/aguides/support_matrix.md#change-classes
core_elixir_behavioradditivecore-only/no native rebuildUpdate the Hex package and rerun core contract + doctor/support proof without rebuilding native shells.n/aguides/support_matrix.md#change-classes

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. Promotion requires an executable host reference proof covering reconnect, backend reauthorization before replay, logout, expiry, revocation, and account switching; documentation alone cannot promote a deferred item.
  • 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.
  • Native pack lifecycle transitions currently prove contract behavior, not production byte download, integrity verification, atomic installation, eviction, background transfer, or generic content storage.
  • First adopter work may add one host-supplied foreground iOS pronunciation-pack adapter. Generic app-wide sync, background sync, silent last-write-wins, multiple proven islands, broad reusable runtime sync helpers, and generic productionized native pack storage remain unclaimed.
  • Android remains available at its existing generated-shell/JVM proof posture but is frozen during first adopter iOS readiness; frozen does not mean device-verified.