One headless contract

Source stays owned. Work stays bounded.

The CLI, generated CI, Codex, and a future graphical control panel call the same operation API. No client becomes a second build system.

Application repositoryHTML · CSS · JavaScript · descriptor
npm-local Arcane SDKCLI · runtime · schemas · packager
Packaged application releaseDescriptor · complete inventory · selected runtime
Explicit execution pathBrowser adapter · paired native provider

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

OwnerOwnsDoes not own
ApplicationSource, descriptor, tests, policy, adapter, release, and service compositionShared Arcane runtime or platform host
SDKCLI, schemas, browser Core client, reusable Core runtime and service lifecycle, portable and Windows providers, generic Windows host, public contracts, packaging, and orchestrationApplication business logic or OS product composition and policy
Arcane OSOS product composition, its explicit checkout-backed target providers, and product policyExternal 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.

Native lifecycle
doctor → prepare → plan → build → run

Portable 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.