chio-kernel-core 0.1.2

Portable (no_std + alloc) Chio kernel core: pure verdict evaluation, capability verification, and receipt signing
Documentation
# chio-kernel-core

The pure-compute subset of Chio capability evaluation: verdict evaluation,
capability verification, portable scope matching, delegation-budget
enforcement, and receipt signing, built as a `no_std + alloc` library. The
same code compiles for the hosted kernel, the browser
(`wasm32-unknown-unknown`), Cloudflare Workers (`wasm32-wasip1`), and mobile
(UniFFI) targets because it never performs I/O and never calls into `std`.

`chio-kernel` wraps this crate with the async dispatch, persistent stores
(receipt, budget, revocation, DPoP), transport, and session state that turn a
pure verdict into a governed, audited tool call. Reach for `chio-kernel-core`
directly when you need enforcement logic on a constrained or non-native
target; the portable-kernel contract is documented in
`docs/protocols/PORTABLE-KERNEL-ARCHITECTURE.md`.

## Responsibilities

- Evaluate a `(capability, request, guards)` tuple to an Allow/Deny verdict:
  capability verification, subject binding, scope match, then the sync guard
  pipeline, fail-closed at every step (`evaluate`).
- Verify a capability token's signature, issuer trust, crypto floor, time
  window, and delegation chain-binding without I/O (`capability_verify`).
- Match a tool-call request against a `ChioScope`'s grants; constraints the
  portable matcher cannot safely evaluate return an explicit error instead of
  widening scope (`scope`).
- Enforce sibling-sum delegation budgets so children of a delegated
  capability cannot jointly oversubscribe the parent's share (`budget_split`).
- Sign receipts with WYSIWYS content-hash recomputation inside the trust
  boundary (`receipts`).
- Verify portable passport envelopes offline for browser/mobile/edge
  adapters (`passport_verify`).
- Project verified capabilities and verdicts into the proof-facing
  normalized AST used by the bounded verified core (`normalized`).
- Cache the latest signed revocation epoch root for lock-free dispatch reads
  (`revocation_view`, feature-gated).

## Public API

| Module | Key items |
|--------|-----------|
| `evaluate` | `evaluate`, `evaluate_with_crypto_floor`, `evaluate_with_crypto_floor_and_budgets`, `evaluate_with_full_floor`, `EvaluateInput`, `EvaluationVerdict`, `KernelCoreError` |
| `capability_verify` | `verify_capability`, `verify_capability_with_floor`, `verify_capability_with_floor_and_trust_root`, `verify_capability_with_floor_and_resolver`, `verify_capability_full`, `VerifiedCapability`, `CapabilityError`, `TrustRootResolver` |
| `guard` | `Guard`, `GuardContext`, `PortableToolCallRequest` |
| `scope` | `resolve_matching_grants`, `resolve_capability_grants`, `MatchedGrant`, `ScopeMatchError` |
| `budget_split` | `BudgetRegistry`, `BudgetSplit`, `InMemoryBudgetRegistry`, `NoopBudgetRegistry`, `MAX_BUDGET_SHARE_BPS`, `BudgetSplitError` |
| `receipts` | `sign_receipt`, `sign_receipt_with_handle`, `sign_receipt_relaying_trusted_body`, `ReceiptSigningError` |
| `passport_verify` | `verify_passport`, `verify_parsed_passport`, `PortablePassportEnvelope`, `VerifiedPassport`, `VerifyError`, `PORTABLE_PASSPORT_SCHEMA` |
| `normalized` | `NormalizedEvaluationVerdict`, `NormalizedVerifiedCapability`, `NormalizedScope`, `NormalizedCapability`, `NormalizationError` |
| `clock`, `rng` | `Clock`, `FixedClock`, `Rng`, `NullRng` |
| `revocation_view` (feature `revocation-view`) | `RevocationView`, `RevocationSnapshot`, `RevocationViewError`, `RevocationViewSubject` |

`Verdict` (`Allow` / `Deny` / `PendingApproval`) lives at the crate root; the
core itself only ever produces the first two.

## Feature flags

| Flag | Effect |
|------|--------|
| `std` (default) | Forwards to `chio-core-types/std`, `serde/std`, `serde_json/std` for hosted builds. |
| `revocation-view` (default) | Enables the `revocation_view` module. Implies `std` (`arc-swap` needs a hosted runtime). |
| `fuzz` | Exposes the `fuzz` module, the libFuzzer entry point for receipt-log replay. Implies `std`; pulls in `arbitrary`. Enabled only by the standalone `chio-fuzz` workspace. |
| `dudect` | Enables the `dudect_mac_eq` / `dudect_scope_subset` constant-time harnesses under `tests/dudect/`. Implies `std`; pulls in `dudect-bencher`. |

## Testing

```
cargo test -p chio-kernel-core
```

The portable-kernel proof builds this crate for the host and for
`wasm32-unknown-unknown`, both with `--no-default-features`:

```
scripts/check-portable-kernel.sh
```

Timing-leak harnesses run separately, feature-gated and in release mode:

```
cargo test -p chio-kernel-core --features dudect --release dudect_mac_eq
cargo test -p chio-kernel-core --features dudect --release dudect_scope_subset
```

Kani proofs (`src/kani_harnesses.rs`, `src/kani_public_harnesses.rs`) compile
only under `cfg(kani)` and run through the Kani toolchain, not `cargo test`.

## See also

- `chio-core-types` - defines the capability, receipt, and crypto types this
  crate verifies, matches, and signs against.
- `chio-kernel` - the hosted runtime kernel; wraps this crate's pure
  evaluation with async dispatch, persistent stores, and transport.
- `chio-kernel-browser`, `chio-kernel-mobile`, `chio-cpp-kernel-ffi`,
  `chio-ag-ui-proxy` - portable adapters that call `evaluate_with_full_floor`
  directly on their target platform.