Packs And Transfers
View SourceCrosswake Phase 5 adds one explicit required-pack contract, one explicit transfer
contract, and one explicit native-capture handoff. It does not widen the project into
generic asset management, generic uploads, or :adapter breadth.
If you are evaluating whether your app needs one explicit native route with route- local packs and transfers, read guides/adopter_profiles.md first, then use this guide for the concrete seam contract.
Required Packs
Routes can declare versioned packs in route policy. The manifest owns the canonical pack registry, and shells only activate a route after required packs verify as usable.
Visible required-pack states:
checkingnot_installedinstallingavailablestaleinvalidatingfailed
The route-facing CTA stays explicit: Install Required Pack. If the shell cannot resolve or install the required pack, activation fails closed with pack_incompatible rather than silently degrading into a generic web container.
Transfer Seams
Transfer commands are semantic, route-local, and foreground-first:
transfer.importtransfer.exporttransfer.downloadtransfer.upload.prepare
Visible transfer states stay explicit:
queuedpreparingtransferringawaiting_networkverifyingcompletefailedcanceled
awaiting_network means the transfer cannot continue until connectivity returns. It
does not promise hidden background completion.
Native Capture Handoff
Crosswake publishes one :native_screen media-capture escape hatch.
- The runtime label stays visible as
Native capture. - Media can be captured and staged locally.
stagedis not the same astransferred.- A captured file only becomes transferable after an explicit
transfer.upload.prepare.
Crosswake does not turn native capture into generic WebView upload ownership and does not silently fall back to another runtime.
Proof Posture
The public artifact class is the checked-in example hosts:
bash script/verify_phase5_example_hosts.sh
Generated-host verification remains secondary and should stay green alongside it:
script/verify_generated_ios_shell.shscript/verify_generated_android_shell.sh
Read guides/support_matrix.md for the proof-backed support posture and guides/native_shell.md for the runtime ownership boundary.