Today packages/cli/src/runtime-bootstrap.ts derives sessions, runs, artifacts, connections, credentials, settings, and device identity from a single workspaceRoot. A portable Session Bundle must never contain credentials or host configuration, so we need a hard boundary before any bundle export exists.
Scope
- Inventory every store rooted by the CLI/runtime bootstrap; classify each as session-owned state vs injected host configuration.
- Introduce explicit
stateRoot / configRoot inputs at the nearest shared bootstrap seam; current CLI/Desktop paths remain the backward-compatible defaults.
- Define one auditable export policy: includes only session-owned state; explicitly excludes credentials, connection configuration, device identity, storage-root marker, temporary activation input, and logs.
- Export fails closed on symlinks, path escape, unknown protected entries, or unsafely overlapping roots.
- Tests: legacy path compatibility, root isolation, cross-session leakage, symlink/path traversal, credential canaries proving exported material contains no secrets.
Out of scope
Control plane, KV/CAS, compression and size policy, maka activate, activation deduplication.
Today
packages/cli/src/runtime-bootstrap.tsderives sessions, runs, artifacts, connections, credentials, settings, and device identity from a singleworkspaceRoot. A portable Session Bundle must never contain credentials or host configuration, so we need a hard boundary before any bundle export exists.Scope
stateRoot/configRootinputs at the nearest shared bootstrap seam; current CLI/Desktop paths remain the backward-compatible defaults.Out of scope
Control plane, KV/CAS, compression and size policy,
maka activate, activation deduplication.