ADR-0022: Omniverse modularization (28 crates)
Status
Accepted (Phase 12)
Context
Phases 1–11 delivered a working mesh in a large umbrella crate. Phase 12 splits capabilities into exactly 28 independently usable modules so consumers can depend on one surface without pulling the full node.
Layout
- Rust libraries/binaries:
crates/<module>/ - Non-Rust packages:
packages/<module>/ - Umbrella composer: root
chimerapackage
Layering (acyclic)
- Foundation:
core-nano→crypto-quantum(facade) →transport-quic(wire + QUIC) - Storage/net:
storage-cas,dht-routing,fuser-mount,network-bridge,consensus-dag - Execution:
wasm-runtime,memory-fabric,compiler-jit,scheduler-rt - Autonomy:
agent-swarm,telemetry-otel,inference-engine - Security/policy:
rbac-auth,audit-ledger,compliance-tee,policy-engine - Edges:
usb-daemon,cli-tool, SDKs, gitops, ui/dashboard/audio - Umbrella:
chimeramay depend on all layers; crates must not depend upward onchimeraexceptusb-daemon(portable binary)
Rules
- No cycles between crates.
- Shared wire types live in
transport-quic(not a 29th protocol crate). - Prefer re-exports from the umbrella for backward-compatible
chimera::*paths.
Honesty
Some umbrella modules (gateway, mgmt, fs facade, freight, …) still compose multiple crates inside chimera itself. The 28 packages are the stable boundaries; further extraction can continue without breaking those APIs.