KRN-CAP requirements¶
Every public handle shall be a capability whose representation is selected by profile without changing API signatures. Rationale: ADR-014: one API from tiny to isolated. Status: Accepted 2026-10-07 Verification: Analysis: Trace: SPEC-009 §3 |
In isolated profiles, every kernel entry from an unprivileged partition shall validate the capability’s type, rights, and generation before use. Rationale: An unprivileged partition can never cause a kernel fault by misusing a handle (SPEC-001 §5.3). Status: Accepted 2026-10-07 Verification: Isolated-profile tests Trace: SPEC-009 §3.3; 03 §8.1 |
Rights shall be reducible on derivation and never increasable. Rationale: The capability discipline. Status: Accepted 2026-10-07 Verification: Test: Trace: SPEC-009 §4.1 |
Capability tables shall be statically sized per partition at build time. Rationale: Memory of the isolation mechanism is a visible number (ADR-033). Status: Accepted 2026-10-07 Verification: Analysis: generator output Trace: SPEC-009 §3.3 |
In the tiny profile the capability layer shall compile to pointer passing with no runtime cost. Rationale: Footprint target T1. Status: Accepted 2026-10-07 Verification: Footprint and benchmark comparison of the tiny profile with the capability functions present and absent. Trace: SPEC-009 §3.1, §4.3 |
Rationale: A real generation in O(1) where wanted, nothing where not; no tagged pointers. Status: Accepted 2026-10-07 Verification: Test: Trace: SPEC-009 §3 |
A capability entry shall hold the object pointer, the object generation at grant time, the slot generation, the type tag, and the rights; validation shall check index range, slot generation, type, rights, object lifecycle, and object generation, returning Rationale: Fixes the exact check order and codes so that the generated stubs and the conformance suite agree. Status: Accepted 2026-10-07 Verification: Test: Trace: SPEC-009 §3.3, §8 |
Each object type shall define its rights within eight bits with Rationale: One source of truth for rights, machine-checked. Status: Accepted 2026-10-07 Verification: Analysis: Trace: SPEC-009 §4.2; SPEC-001 §9 |
Rationale: Complete, small capability algebra with coarse revocation. Status: Accepted 2026-10-07 Verification: Test: Trace: SPEC-009 §4.1 |
The generator shall emit each partition’s initial capability table from the system description, including device and port capabilities granted to driver partitions. Rationale: Static systems need no runtime grant protocol. Status: Accepted 2026-10-07 Verification: Generator test Trace: SPEC-009 §4.1; 04 §1.3; SPEC-014 |
Under Rationale: One source tree per application across profiles (C3). Status: Accepted 2026-10-07 Verification: Test: Trace: SPEC-009 §4.3 |
Registry and table occupancy high-water and stale-handle rejections per partition shall be optional statistics. Rationale: Table sizing and a security signal. Status: Accepted 2026-10-07 Verification: Statistics API test. Trace: SPEC-009 §9 |
Slot and object generation state shall retain its incremented value across reinitialization and partition restart. A generation value shall not be reused while a stale reference with that value may survive; exhaustion shall refuse the operation or invoke a reviewed reclamation scheme. Lookup/revocation shall preserve object lifetime for in-flight operations, and renew shall require current trusted recovery authority. Rationale: Resetting or wrapping a generation can revalidate stale authority; a stale DESTROY capability cannot authorize its own renewal. Status: Proposed 2026-10-14; unimplemented. Verification: Planned forced wrap/exhaustion, stale renew, concurrent lookup/revoke and restart tests on INDEXED/TABLE configurations. Trace: SPEC-009 §13; SPEC-010 §7, §17 |