Two workspace profiles, shared runtime ownership
External
A standalone app uses its repository root and reads its declared SDK through direct node_modules/<dependency>/ browser routes. The development declaration can follow latest while the lockfile records the exact installed version. Explicit multi-app, virtual and physical layouts remain supported. Packaging preserves the selected destinations inside the complete app release.
Integrated
An Arcane OS checkout consumes its selected SDK projection or an explicit development-only live SDK source mount. The SDK owns portable runtime source. Initialization creates only app-owned files and preserves integrated root configuration.
Responsibility follows ownership
| Owner | Owns | Does not own |
|---|---|---|
| Application | Source, descriptor, tests, policy, adapter, release, and service composition | Shared Arcane runtime or platform host |
| SDK | CLI, schemas, browser Core client, reusable Core runtime and service lifecycle, portable and Windows providers, generic Windows host, public contracts, packaging, and orchestration | Application business logic or OS product composition and policy |
| Arcane OS | OS product composition, its explicit checkout-backed target providers, and product policy | External app source or app-owned test execution |
The descriptor and release are different artifacts
A standalone app owns root arcane-app.json; an explicitly nested app uses apps/<id>/arcane-app.json. This authored schema-2 descriptor projects the schema-1 package contract. Packaging preserves the selected root or nested app layout and records the complete inventory in ARCANE_APP_RELEASE.json.
The default release directory is dist/<id>/. An app's schema-1 outputDirectory selects another workspace-relative destination directly, without an added app-ID suffix. A release bundle adds the canonical descriptor and complete selected payload. Saved source and managed import maps remain the package inputs; refresh maps through arcane import-map or ordinary arcane dev startup.
Native providers are explicit pairings
The SDK never searches for a mutable global toolchain. The portable target selects the installed SDK provider by default and assembles a non-executable directory without --arcane-root. Windows x64 also selects its SDK provider by default and combines the selected payload with the matching precompiled WebView2/SEA host. Linux and Android retain explicit compatible Arcane OS checkout providers; an explicit Windows override remains supported.
doctor → prepare → plan → build → runPortable intentionally stops before run. Its payload contract, the reusable Core runtime, and the browser client let an application or platform owner compose services and a real host without moving product policy into the SDK. Verification is a separate explicitly selected operation; executable providers launch only on their compatible host or device.
Keep verification tied to its selected output
Native planning and providers consume the complete selected release and its declared app dependencies. Explicit release verification checks the observed descriptor, package contract and file inventory. Its result describes that artifact and operation; browser behavior, native launch, production signing and installation require evidence from their actual boundaries.