Design Risks and Open Questions Register
Consolidated index of known design risks and open architectural questions for capOS. Every entry routes to the file that owns the long-form design or the remediation backlog for that risk; this register itself is a pointer document, not a place to put new design.
Use this document to answer “is this risk already tracked, and where?” without re-deriving the state from the proposal tree on each review.
Last refresh: 2026-07-27 08:28 UTC.
How To Use
- Each design-risk row records the current observable state (what the code and docs say today), the owning tracker (the proposal/backlog/design file to update when the state changes), and the remaining gap (what is still open).
- Each open-question row records a current answer if one exists in the tree, plus a pointer to the canonical tracker. Questions that are genuinely unanswered are marked Open; those should not be closed by guessing here – update the relevant proposal, then update this register.
- When a risk is closed by code or by an explicit design decision, move the
short closure summary into
docs/changelog.mdand remove the row. - New review findings go into loopyard task records; this register is about long-horizon design risks, not concrete unresolved review issues.
Design Risks
R1 – Process-wide ring vs multi-threaded userspace and full SMP
- State. The capability ring is one per process.
capos-rtenforces a single-ownerRuntimeRingClient. After in-process threading, at most one process-ring waiter is allowed. The first SMP Phase C AP scheduler-owner proof deliberately keeps process-wide ring execution on a single CPU at a time behind a scheduler-owner latch. - Owner.
docs/proposals/ring-v2-smp-proposal.md,docs/research/completion-ring-threading.md,docs/backlog/smp-phase-c.md,docs/architecture/threading.md. - Gap. Per-thread capability rings, per-thread completion routing, and the
Multi-Process / In-Process Threading Scalability milestones in
docs/roadmap.mdremain future work. Userspace threading scales only as far as the single ring waiter allows.
R2 – “Interface IS the permission” pushes safety into wrapper TCB
- State. capOS deliberately has no parallel rights bitmask: attenuation is
done by handing out a narrower
CapObjectwrapper, not a flag-reduced copy of the same cap. Wrapper correctness is therefore part of the trust base. - Owner.
docs/capability-model.md,docs/proposals/session-bound-invocation-context-proposal.md,docs/security/trust-boundaries.md,docs/backlog/stage-6-capability-semantics.md. - Gap. The completed Session-Bound Invocation Context migration has the one-session-per-process proof, privacy-preserving endpoint caller-session metadata, explicit subject-disclosure coverage, chat session-keyed state, Adventure service grants, terminal/stdio bridge liveness guards, and final Gate 4 verification. The first Tier-1 paper claim, covering session-bound invocation context evidence for implementation review, is closed. Remaining non-gating cleanup is stable service-audit identity across service replacement and legacy internal receiver-selector naming.
R3 – Legacy endpoint metadata as transitional service identity
- State. Legacy endpoint receiver metadata is contained as internal transport/debug state for normal paths. Chat uses session-keyed membership, terminal/stdio bridges enforce live caller-session guards, and delegated relabeling containment plus the historical service-object routing/lifecycle proof have landed. Adventure/shared-service cleanup is landed for normal workload paths.
- Owner.
docs/proposals/session-bound-invocation-context-proposal.md,docs/backlog/stage-6-capability-semantics.md. - Gap. Finish final legacy cleanup. Receiver metadata must remain internal transport state or hostile-test fixture, not subject identity or disclosure.
R4 – Resource accounting is fragmented
- State. Cap/thread limits and frame/virtual reservation ledgers have
implemented paths, while several
ResourceProfilefields are policy-only. Endpoint limits are per object with structural-max backing; ring scratch is per thread; notification/pipe/promise waiters include proof-sized global pools; network/login/log/reclaim work lacks one aggregate fair owner ledger. - Owner.
docs/architecture/resource-governance.md,docs/proposals/resource-accounting-proposal.md,docs/proposals/memory-authority-model-proposal.md,docs/proposals/oom-and-swap-proposal.md,docs/proposals/user-identity-and-policy-proposal.md,docs/proposals/system-monitoring-proposal.md,docs/proposals/scheduler-evolution-proposal.md,docs/backlog/scheduler-evolution.md. - Gap. Explicit fail-closed service profile binding, hierarchical/exact
reservation tokens, aggregate backing/fan-out accounting, protected audit
and lifecycle progress, pre-auth anonymous/service budgets, and scheduler
feasibility admission remain open. They are decomposed in
resource-profile-service-binding-fail-closed,resource-ledger-hierarchical-exact-release,kernel-bounded-object-amplification-accounting,memory-pressure-accounted-reclaim-work, andscheduler-resource-reservation-semantics.
R5 – Copy-transfer SQE replay is repeatable by design
- State.
docs/authority-accounting-transfer-design.mddocuments that userspace replay of a copy-transfer SQE is repeatable per dispatch attempt, with move-transfer replay failing closed once the source slot is removed/reserved. Exactly-once replay suppression is explicitly future work (security invariant T3). - Owner.
docs/authority-accounting-transfer-design.md,docs/proposals/security-and-verification-proposal.md. - Gap. The
(sender_pid, call_id, sqe_seq)plus monotonic transfer-epoch identity needed for exactly-once replay across dispatch attempts is not implemented. Each transferable interface must continue to acknowledge this in its threat model.
R6 – CAP_OP_RELEASE is deferred / queued, not synchronous
- State. Owned-handle drop in
capos-rtqueues one localCAP_OP_RELEASEon the ring; process exit performs fallback cleanup. Release does not run before the next ring flush (cap_enteror process exit). - Owner.
docs/authority-accounting-transfer-design.md,docs/proposals/error-handling-proposal.md,docs/capability-model.md. - Gap. Resource-pressure or revocation-sensitive flows must not assume a
Drop call has already taken effect at the kernel layer. Time-critical
revocation should use
CapabilityManager.revokeor epoch revocation rather than relying on Drop.
R7 – Shared memory / zero-copy / shared park are incomplete
- State.
MemoryObjectsubstrate exists;SharedBufferprovenance, file/network/DMA zero-copy paths, and shared park/SharedParkSpaceare blocked on mapping provenance / object pinning work. - Owner.
docs/proposals/storage-and-naming-proposal.md,docs/proposals/memory-authority-model-proposal.md,docs/proposals/networking-proposal.md,docs/architecture/park.md,docs/backlog/runtime-network-shell.md. - Gap. Workloads that need true zero-copy IPC, storage, or network
pipelines pay a copy/serialization cost until provenance/pinning lands.
ParkSpace private cleanup now covers anonymous
VirtualMemory.unmap,VirtualMemory.decommit, and explicitMemoryObject.unmapfor borrowed mappings; shared park keys and address-space generation cleanup remain open.
R8 – Networking lives inside the kernel TCB
- State. Largely resolved: the Phase C userspace NIC driver and smoltcp
network-stack process own the production socket path, the kernel no longer
depends on
smoltcp, and the kernel socketCapObjects are qemu-only fixtures that fail closed without a kernel socket owner. The Telnet and SSH terminal-host proofs that sat on the kernel path are retired. - Owner.
docs/proposals/networking-proposal.md,docs/dma-isolation-design.md,docs/backlog/runtime-network-shell.md. - Gap. The remaining qemu-only kernel virtio-net fixture and socket
CapObjectsurface is fixture code, not production authority. The kernel-sideSocketTerminalSessiontransitional shim is retired (2026-06-10):TcpSocket.intoTerminalSessionfails closed, and a network-backedTerminalSessionmust be re-built as a userspace terminal-session service over the userspace TCP stack if byte-stream terminal transport is needed again.
R9 – DMA isolation is backend-scoped, not a hostile-hardware blanket
- State.
docs/dma-isolation-design.mdnow records runtime fail-closed DMA backend selection. The current no-IOMMU cloud/DDF path uses manager-owned, brokered bounce buffers for userspace provider authority and hides host physical addresses and IOVAs from the driver. The selected QEMU Intel VT-d path has bounded per-device remapping evidence, but that remains emulator evidence rather than a general hardware-isolation claim. Without trusted remapping, hostile bus-mastering hardware remains out of scope. - Owner.
docs/dma-isolation-design.md,docs/proposals/networking-proposal.md,docs/proposals/cloud-deployment-proposal.md,docs/backlog/hardware-boot-storage.md. - Gap. The retained DDF production-authority finding is closed in the loopyard task ddf-production-authority-closeout. Remaining work is explicit task or proposal scope: direct-remapping/vIOMMU production hardware support, broader provider/device variants, and device-autonomous MSI-X delivery rather than the current polled or kernel-injected waiter proofs.
R10 – Boot package model embeds all binaries
- State.
tools/mkmanifestembeds every declared binary as aNamedBlobinsidemanifest.bin. The kernel loads onlyinit; everything else is fetched byinitfrom the in-memoryBootPackage. - Owner.
docs/backlog/hardware-boot-storage.md,docs/proposals/storage-and-naming-proposal.md,docs/trusted-build-inputs.md. - Gap. Boot binary ISO layout (separate ELF payloads), package/storage update model, and persistent storage-backed delivery are not yet designed as code; the current scheme is an explicit prototype compromise.
R11 – Pre-auth and post-auth share a shell process
- State. The shell-led boot flow folds
console-loginintocapos-shelland uses an anonymous-first session that escalates vialogin/setup. The pre-auth and post-auth code paths run in one userspace process and address space. - Owner.
docs/proposals/boot-to-shell-proposal.md,docs/proposals/shell-proposal.md,docs/security/trust-boundaries.md,docs/proposals/user-identity-and-policy-proposal.md. - Gap. Separation depends on shell/auth implementation quality, not on a process boundary. The future direction (separate login service with minimal authority, restricted launchers, WebShell/SshGateway) is proposal-shaped. Remote and non-loopback shells must remain blocked until pre-auth and post-auth authority are process-isolated or a shared-process proof is accepted.
R16 – Remote shell ingress is demo/prototype only
- State. Telnet is a plaintext loopback-only QEMU demo. SSH has SSH-shaped prerequisites, fixture authentication proofs, dev key material, policy classification, and restricted-shell launcher coverage, but no production encrypted SSH transport, durable key/account storage, full OpenSSH-compatible userauth/channel handling, channel binding, or complete audit/storage gates.
- Owner.
docs/proposals/ssh-shell-proposal.md,docs/proposals/telnet-tls-shell-proposal.md,docs/backlog/runtime-network-shell.md, the loopyard task board,docs/build-run-test.md. - Gap. Production/non-loopback shell exposure is blocked on SSH transport, key, account, audit, storage, session-bound delegation, and pre-auth/post-auth isolation gates.
R17 – Remote-session UI bridge and Tauri wrapper are research-only
- State. The Linux remote-session-ui bridge and the repo-local Tauri wrapper run as trusted local backends that hold the upstream capOS session and project view models / call results to the browser/webview. A policy preflight now proves the wrapper remains check/dev only; distributable packaging and desktop automation modes are intentionally blocked.
- Owner.
docs/proposals/remote-session-ui-security-proposal.md,docs/proposals/remote-session-capset-client-proposal.md,docs/backlog/remote-session-capset-client.md. - Gap. Distributable packaging, desktop automation, and a reviewed production posture for the remote-session UI surface remain unreviewed in the relevant remote-session proposal/backlog task records. Non-loopback remote-session UI exposure must stay blocked until that posture is accepted.
R18 – Public WebUI availability and resource admission are incomplete
- State. The capOS-served WebUI is privately reachable and its anonymous
ingress is resource-accounted under the bounded, manifest-selected policy
summarized by
docs/architecture/resource-governance.md. Application, backlog, and release-debt capacities are independently enforced; accepted sockets no longer quiesce the shared endpoint; anonymous credential work has fair bounded admission with protected local recovery progress; and production network startup fails closed without live entropy. These closeouts are owned by webui-public-resource-accounting-admission, webui-accepted-socket-lifecycle-no-global-quiesce, credential-verification-fair-anonymous-admission, and network-stack-production-entropy-seeding. The CapSet gateway also has bounded concurrent admission and absolute pre-auth deadlines (remote-session-gateway-concurrent-admission-deadlines), while its service topology supports distinct anonymous, local-health, and provider-health listener capabilities (webui-multi-lane-ingress-listeners); shipped manifests still grant only the public listener, and the focused L4 fixture grants all three. The WebUI still has one replaceable browser session and listener-wide plus peer-address wrong-password backoff, so one peer can trigger the shared listener backoff despite the separately bounded credential executor. Bounded streaming, default-deny/canonical route policy, connection reuse, and cache generations are not yet implemented. - Owner.
docs/architecture/resource-governance.md,docs/proposals/remote-session-ui-security-proposal.md,docs/proposals/remote-session-capset-client-proposal.md,docs/backlog/remote-session-capset-client.md. - Gap. Public ingress stays blocked on independent accounted browser sessions, cache-correct bounded delivery and mixed static/auth/login/control coexistence, and the adversarial live ingress-ledger matrix. Network-ceiling claims additionally require the non-shipping layered benchmark, the no-spend readiness preflight extension, and a fresh, separately authorized private real-GCE proof. Provider/public health-lane deployment evidence remains separately authorized under webui-provider-health-deployment-proof. None of these task records authorizes provider mutation or public exposure; fixed low limits, cache assumptions, or authenticated static bytes are not accepted substitutes.
R12 – Verification coverage is partial, not full proof
- State. Bounded Kani gate (
make kani-lib/make kani-lib-full), Loom ring model, Miri lib tests, proptest, fuzz harnesses, panic-surface inventory, and CI dependency policy exist. Coverage is not whole-system and not seL4-style functional refinement. - Owner.
docs/proposals/security-and-verification-proposal.md,docs/security/verification-workflow.md,docs/panic-surface-inventory.md,docs/backlog/security-verification.md. - Gap. Public/external claims must distinguish “bounded model checked” from “fully verified”. Promote new properties into Kani/Loom only when the invariant is concrete and bounded. IPC/scheduler panic-surface hardening also remains open around guarded unwraps, rollback restoration, stale queues, blocking waits, process/thread exit, endpoint cancellation, TLB shootdown send failures, and scheduler hot-path expects. Kernel upper-half page-table mutation after AP startup is closed for the current MMIO/firmware helper path by the loopyard task kernel-upper-half-pml4-propagation-hardening; future helper windows or allocator-growth paths that need a new kernel-half PML4 slot still require boot preseed or synchronized live-root propagation.
R13 – Trusted build inputs are partly pinned
- State. Limine (commit + artifact SHA-256),
capnp1.2.0 source tarball, CUE 0.16.0, mdBook/mdbook-mermaid, Typst 0.14.2, Cargo lockfiles, the Rust nightly date policy, the Kani toolchain bundle, OVMF firmware hash, and the CI apt package versions forqemu-system-x86,xorriso,make,git, andovmfare pinned or policy-pinned.make build-provenancerecords local runner identity, GitHub-hosted image identity when present, selected host-tool paths, package identities and normalized apt source pockets when discoverable, and OVMF path/package/hash or absence. Comparing a candidate record against an earlierqemu-smokeprovenance artifact is a reviewer-run step. That is the accepted standing posture while CI fires only on release tags andworkflow_dispatch: successful intentional runs that reach the upload step retain the records, and review decides when a source change needs a candidate/base environment comparison. - Owner.
docs/trusted-build-inputs.md,docs/proposals/cloud-deployment-proposal.md. - Gap. The
ci-environmentcomparison policy and qemu-smoke package pins close the previousmake/gitidentity gap for CI proof branches, but the accepted reviewer-run posture leaves environment drift on an ordinary source change unchecked unless review invokes it. This avoids consuming metered CI for every ordinary source integration, but a manual dispatch is not automatic source-change coverage and may have no retained base after the 30-day artifact window; treating an absent base as a successful comparison would prove nothing. Automatic default coverage therefore remains conditional on operator direction for a source-change trigger or a durable external baseline. Separately,ubuntu-24.04is still a GitHub-managed mutable runner label, not an immutable production image digest. Full production reproducibility still needs a self-built runner image referenced by digest, repo-managed download-and-verify tool digests for the apt-pinned build/boot tools, or both.
R14 – User identity / policy is proposal-shaped
- State. Anonymous/operator sessions, password setup/login, broker-issued shell bundles, and redacted audit records exist. Durable accounts, ABAC/MAC context, OIDC/passkeys, disk-backed account stores, and resource bundles are proposal-shaped. Stale-session calls and retained shell-bundle caps fail closed for current proof paths, but session liveness is still represented by immutable metadata plus expiry timestamps rather than a mutable session-manager cell with logout, revocation, recovery-only, and renewal state.
- Owner.
docs/proposals/user-identity-and-policy-proposal.md,docs/backlog/local-users-management.md,docs/backlog/session-bound-invocation-context.md,docs/proposals/oidc-and-oauth2-proposal.md,docs/proposals/certificates-and-tls-proposal.md,docs/proposals/cryptography-and-key-management-proposal.md. - Gap. Until durable identity / persistence / passkey paths land, capOS
is not a complete multi-user OS. Demo claims must scope to the proven
anonymous + operator + manifest-seeded local accounts model. Before treating
fixed short session expiry as production interactive UX, capOS needs
explicit
logout, owner-shell/gateway close propagation, and renewal paths that mint fresh grant leases without reviving stale ordinary grants.
R15 – App exception serialization depends on result-buffer capacity
- State. Application-level exceptions are serialized into the caller’s result buffer; if the target cannot be identified, invocation fails earlier with transport errors. Truncation/transport failures are documented.
- Owner.
docs/proposals/error-handling-proposal.md,docs/capability-model.md. - Gap. Service UX/debuggability can degrade for malformed or small-buffer clients. No remediation is required in code today, but each service contract should document its expected result-buffer capacity.
R19 – QEMU device surface is a monolithic feature axis
- State. Partially mitigated. The
qemufeature remains a coarse axis for the virtio-net/blk/rng drivers, theprove_qemu_*DDF hostile-smoke harness, and the full DDF backend (device_manager/qemu_full.rs,iommu.rs). The virtio-9p blocker is closed: the explicitvirtio_9p_host_fixturefeature compiles only the shared virtio scaffold and 9p path into anot(qemu)build, while the Phase C userspace-networking-versus-qemuownership guard remains unchanged.make test-virtio-9p-net-cobootproves the Phase CNicpath and writable 9pDirectoryserve in one boot without the full DDF backend. - Owner.
docs/proposals/virtio-9p-host-directory-proposal.md(Composable Fixture Feature) and the implementationvirtio-9p-composable-fixture-implementation. - Gap. No 9p composition gap remains. The other devices still share the
coarse
qemuaxis; a general per-device fixture decomposition is not proposed without another concrete composition requirement.
Open Design Questions
The following questions came up in external review. Each row gives the current best answer observed in the tree, the canonical tracker to update, and an explicit status.
Q1 – Cap’n Proto ABI compatibility policy
- Current answer.
docs/abi-evolution-policy.mddefines compatibility classes, stable schema ordinals, reserved-field rules, ring layout rules, version negotiation, deprecation windows, and review gates. Generated-code drift is still checked throughmake generated-code-checkandtools/check-generated-capnp.sh. - Tracker.
docs/abi-evolution-policy.md,docs/trusted-build-inputs.md,schema/capos.capnp,capos-config/src/ring.rs. - Status. Answered for the current research tree. Ring v2 compatibility remains a separate open question below.
Q2 – Ring v2 backward compatibility
- Current answer.
docs/proposals/ring-v2-smp-proposal.mdtreats per-thread ring ownership as the full-SMP target and frames it as an evolution that may need ABI changes; the loopyard task board calls runtime ring reactor work the compatibility bridge. - Tracker.
docs/proposals/ring-v2-smp-proposal.md,docs/backlog/smp-phase-c.md. - Status. Open. Whether Ring v2 is backward-compatible with the process-wide ring or an explicit ABI break has not been decided.
Q3 – Which capabilities are copy-transferable vs move-only vs non-transferable
- Current answer.
docs/authority-accounting-transfer-design.mddefines copy/move/none transfer modes and the accounting/rollback rules. Per-interface transfer mode is encoded on the schema-definedCapObject. - Tracker.
docs/authority-accounting-transfer-design.md,schema/capos.capnp. - Status. Partial. The mode is enforced per object, but the user-visible matrix (which named caps are copy/move/none) is not consolidated in one document.
Q4 – Copy-transfer replay: feature or compromise
- Current answer. Repeatable copy-transfer replay is documented as the current accepted semantics. Exactly-once replay suppression is future work. See R5.
- Tracker.
docs/authority-accounting-transfer-design.md. - Status. Decided as “current semantics, future tightening optional”.
Q5 – When legacy endpoint identity is replaced and what migrates
- Current answer.
docs/backlog/session-bound-invocation-context.mddecomposes the selected migration: one immutable session context per process, privacy-preserving endpoint caller-session metadata, chat/adventure/stdio session-keyed migration, and legacy endpoint-identity cleanup. The old service-object identity plan is superseded. - Tracker.
docs/proposals/session-bound-invocation-context-proposal.md,docs/backlog/session-bound-invocation-context.md,docs/backlog/stage-6-capability-semantics.md. - Status. Selected milestone. See R3.
Q6 – Minimum production TCB target
- Current answer.
docs/proposals/security-and-verification-proposal.mdnow enumerates the current demo/proof TCB and the target production TCB. Current proofs still trust kernel networking, init/supervisors, broker/session services, harnesses, and QEMU virtio. The target production TCB removes ordinary apps and shell children but still includes minimal init/supervisor, credential/session/broker/key/audit services, production device managers, and ABI/schema/build-signature inputs. - Tracker.
docs/security/trust-boundaries.md,docs/proposals/userspace-authority-broker-proposal.md,docs/proposals/boot-to-shell-proposal.md. - Status. Partially answered. The TCB statement exists; reducing the actual implementation to that target and proving the non-loopback shell gates remains open.
Q7 – Revocation strategy
- Current answer. Generation/epoch revocation exists for endpoint-backed
caps;
CapabilityManager.revokecleans up endpoint-backed service objects by object behavior. Session-bound dispatch now fails closed for stale proof paths, but the target lifecycle splits revocation into session liveness cells, grant leases, and object/facet epochs. Revocation trees, leases, supervisor-owned-cap patterns, and session renewal/close propagation are proposal-shaped. - Tracker.
docs/proposals/service-architecture-proposal.md,docs/proposals/session-bound-invocation-context-proposal.md,docs/proposals/user-identity-and-policy-proposal.md,docs/capability-model.md. - Status. Open. The chosen revocation primitive set (epochs vs trees vs leases vs explicit-revoke methods per object) needs an explicit decision, and interactive session lifecycle needs a concrete liveness-cell plus renewal protocol.
Q8 – Boundary between kernel and service-level resource accounting
- Current answer. The component that owns the finite resource owns its structural ledger. Kernel object/backing costs stay in kernel ledgers; service-held sockets, buffers, bytes, storage, crypto work, and session state stay in service ledgers. Cross-boundary work uses an unforgeable bounded donation, never an identity string. Effective entitlement is the minimum of structural capacity, admitted pool credit, delegated parent/subtree credit, and selected policy. Current implementation covers only a subset.
- Tracker.
docs/architecture/resource-governance.md,docs/proposals/resource-accounting-proposal.md,docs/proposals/storage-and-naming-proposal.md,docs/proposals/networking-proposal.md. - Status. Design answered; implementation partial under R4 and R18.
Q9 – CPU accounting and scheduling contexts
- Current answer. Per-CPU WFQ run queues, per-thread weighted vruntime,
SchedulingPolicyCapweight/latency-class authority, and Phase ESchedulingContextbind/revoke, budget, donation/return, and depletion notification are implemented perdocs/changelog.md(Phase D closed 2026-05-10) anddocs/proposals/scheduler-evolution-proposal.md. Cross-service donation policy, priority inheritance broader than scheduling contexts, explicit scheduling-cap fairness across principals, and full nohz activation remain proposal-shaped. - Tracker.
docs/proposals/smp-proposal.md,docs/proposals/scheduler-evolution-proposal.md,docs/backlog/scheduler-evolution.md,docs/proposals/resource-accounting-proposal.md,docs/architecture/scheduling.md. - Status. Partial. The base CPU accounting and scheduling-context model is implemented through Phase E; the surrounding policy (cross-service donation, full nohz activation, isolation leases, fairness across principals) is the remaining decision.
Q10 – IOMMU requirement for userspace networking
- Current answer.
docs/dma-isolation-design.mdselects a runtime fail-closed backend: direct remapping only when capOS can discover and program trusted translation authority, otherwise a labeled brokered bounce-buffer fallback or unsupported. The current GCP/no-IOMMU userspace-driver evidence uses the brokered bounce path. - Tracker.
docs/dma-isolation-design.md,docs/proposals/networking-proposal.md,docs/proposals/cloud-deployment-proposal.md. - Status. Answered for the current no-IOMMU cloud path. Future direct-remapping, vIOMMU, or hostile-hardware isolation claims require their own evidence and remain outside the brokered-bounce production authority closeout.
Q11 – Capability persistence model
- Current answer. All capabilities are runtime-only today; sealed/stored caps and namespace-mediated reconstitution are storage-proposal scope.
- Tracker.
docs/proposals/storage-and-naming-proposal.md,docs/proposals/volume-encryption-proposal.md,docs/paper/plan.md(paper-scoped persistence Tier-1 prerequisite). - Status. Open.
Q12 – Least-privilege shell command invocation
- Current answer.
capos-shellruns commands using broker-issued bundles; the broker, not the shell, is the policy decision point.RestrictedShellLauncherkeeps remote shell launches off raw spawn authority. - Tracker.
docs/proposals/shell-proposal.md,docs/proposals/userspace-authority-broker-proposal.md,docs/proposals/boot-to-shell-proposal.md. - Status. Direction agreed, complete migration to broker-only authority for every shell-driven invocation is open.
Q13 – Formal properties to prove
- Current answer. Existing bounded proofs cover cap-table non-forgery, frame-bitmap invariants, transfer rollback, and ring producer-consumer invariants. seL4-style full functional refinement is explicitly out of scope.
- Tracker.
docs/proposals/security-and-verification-proposal.md,docs/security/verification-workflow.md,docs/proposals/formal-mac-mic-proposal.md. - Status. Partially answered. A definitive list of “what we will keep proving” vs “what we will keep testing” should be added when the next Kani/Loom obligation set is concrete.
Q14 – Threat model coverage
- Current answer.
docs/proposals/security-and-verification-proposal.mdnow contains a threat actor matrix for local physical attackers, malicious DMA devices, malicious boot manifests, compromised init/supervisors, compromised narrow services, hostile network peers, and malicious build dependencies. - Tracker.
docs/security/trust-boundaries.md,docs/proposals/security-and-verification-proposal.md,docs/dma-isolation-design.md,docs/trusted-build-inputs.md. - Status. Answered at design level. Remaining work is implementation/proof through the relevant task records.
Q15 – Language runtimes integration model
- Current answer.
capos-rtis the canonical no_std Rust runtime. Go, Python, Lua, JavaScript/TypeScript, WASI, C/C++, and POSIX-shaped software are future tracks. The current documentation separates native runtime adapters, capability-native bindings, POSIX compatibility adapters, and WASI host adapters instead of treating “compatibility layer” as one shared ABI. - Tracker.
docs/programming-languages.md,docs/proposals/userspace-binaries-proposal.md,docs/proposals/go-runtime-proposal.md,docs/proposals/lua-scripting-proposal.md. - Status. Open. A common ABI layer vs per-runtime generated clients has not been decided; the current default is per-runtime or adapter-specific clients backed by explicit capabilities.