Expand description
Local exochain manager for kernel event logging.
Provides an append-only event chain with SHAKE-256 hash linking
(via weftos_rvf_crypto). Each event references the hash of the
previous event and a content hash of its payload, forming
an immutable, tamper-evident audit trail suitable for cross-service
and cross-node verification.
§Hash scheme
Every event carries three hashes:
prev_hash— SHAKE-256 of the preceding event (chain link)payload_hash— SHAKE-256 of the canonical JSON payload bytes (content commitment; zeroed when payload isNone)hash— SHAKE-256 of(sequence ‖ chain_id ‖ prev_hash ‖ source ‖ 0x00 ‖ kind ‖ 0x00 ‖ timestamp ‖ payload_hash)
Together these enable two-way verification: given an event you can verify the chain link backward and the payload content independently.
§K0 Scope
Local chain only: genesis, append, checkpoint.
§K1+ Scope (not implemented)
Global root chain, BridgeEvent anchoring, ruvector-raft consensus.
Structs§
- Anchor
Receipt - Receipt returned by a successful
ChainAnchor::anchorcall. - Chain
Checkpoint - A checkpoint snapshot of the chain state.
- Chain
Event - A chain event – one entry in the append-only log.
- Chain
Manager - Thread-safe chain manager.
- Chain
Status - Chain status summary.
- Chain
Verify Result - Result of chain integrity verification.
- Custody
Attestation - A single signed proof of system state.
- Dual
Signature - A dual signature (Ed25519 + optional ML-DSA-65).
- Dual
Signing Config - Configuration for dual Ed25519 + ML-DSA-65 signing.
- Governance
Decision Event - A governance decision event suitable for chain logging.
- IpcDead
Letter Event - An IPC dead-letter event suitable for chain logging.
- Mock
Anchor - A mock anchor that always succeeds (for testing).
- Restart
Event - A restart event suitable for chain logging.
Enums§
- Append
Signed Error - Errors from
ChainManager::append_signed(WEFT-105 / K6.4 replay).
Constants§
- EVENT_
KIND_ AGENT_ HIERARCHY_ ADD - Agent hierarchy: child added.
- EVENT_
KIND_ AGENT_ HIERARCHY_ REMOVE - Agent hierarchy: child removed.
- EVENT_
KIND_ API_ CONTRACT_ REGISTERED - API contract registration event (k2:D8).
- EVENT_
KIND_ APP_ INSTALL - Application installed event.
- EVENT_
KIND_ APP_ REMOVE - Application removed event.
- EVENT_
KIND_ APP_ START - Application started event.
- EVENT_
KIND_ APP_ STOP - Application stopped event.
- EVENT_
KIND_ APP_ TRANSITION - Application state transition event.
- EVENT_
KIND_ ARTIFACT_ EVICT - An artifact was evicted from the node’s cache (
reason= lru | revoked | manual). - EVENT_
KIND_ ARTIFACT_ FETCH - A completed or failed artifact fetch (
result= verified | failed). - EVENT_
KIND_ ARTIFACT_ PEER_ BAN - A peer was banned for serving corrupt pieces.
- EVENT_
KIND_ ARTIFACT_ PIECE_ REJECTED - A piece whose hash did not match, and the peer that sent it.
- EVENT_
KIND_ ARTIFACT_ REMOVE - Artifact removed event.
- EVENT_
KIND_ ARTIFACT_ REVOKE - A revocation was applied to what the node holds and seeds.
- EVENT_
KIND_ ARTIFACT_ SEED - A node began seeding a verified artifact (once per artifact).
- EVENT_
KIND_ ARTIFACT_ SERVE - First time an artifact is served to a given peer.
- EVENT_
KIND_ ARTIFACT_ STORE - Artifact stored event.
- EVENT_
KIND_ AUTH_ ATTEMPT - Auth authentication attempt event.
- EVENT_
KIND_ AUTH_ CREDENTIAL_ REGISTER - Auth credential registration event.
- EVENT_
KIND_ AUTH_ CREDENTIAL_ ROTATE - Auth credential rotation event.
- EVENT_
KIND_ AUTH_ TOKEN_ ISSUE - Auth token issuance event.
- EVENT_
KIND_ AUTH_ TOKEN_ REVOKE - Auth token revocation event.
- EVENT_
KIND_ BVH_ DERIVE - BVH branch derived (COW / clone).
- EVENT_
KIND_ BVH_ INSERT - BVH leaf inserted (ADR-056 / WEFT-718).
- EVENT_
KIND_ BVH_ REBALANCE_ SEAL - BVH rebalance / determinism-phase seal.
- EVENT_
KIND_ BVH_ REMOVE - BVH leaf removed.
- EVENT_
KIND_ CAPABILITY_ ELEVATE - Capability elevation requested event.
- EVENT_
KIND_ CAPABILITY_ REVOKED - Capability revocation event (k3:D8 — informational revocation).
- EVENT_
KIND_ CAUSAL_ CLEAR - Causal graph cleared event.
- EVENT_
KIND_ CAUSAL_ EDGE_ ADD - Causal graph edge added event.
- EVENT_
KIND_ CAUSAL_ EDGE_ REMOVE - Causal graph edge removed event.
- EVENT_
KIND_ CAUSAL_ NODE_ ADD - Causal graph node added event.
- EVENT_
KIND_ CAUSAL_ NODE_ REMOVE - Causal graph node removed event.
- EVENT_
KIND_ CAUSAL_ NODE_ STATE - Causal graph node lifecycle-state transition event (ADR-067 P1-graph / WEFT-629).
- EVENT_
KIND_ CLUSTER_ PEER_ ADD - Cluster peer added event.
- EVENT_
KIND_ CLUSTER_ PEER_ REMOVE - Cluster peer removed event.
- EVENT_
KIND_ CLUSTER_ PEER_ STATE - Cluster peer state changed event.
- EVENT_
KIND_ CONFIG_ DELETE - Configuration delete event.
- EVENT_
KIND_ CONFIG_ SECRET_ SET - Secret set event.
- EVENT_
KIND_ CONFIG_ SET - Configuration set event.
- EVENT_
KIND_ CONTAINER_ CONFIGURE - Container configured (registered) event.
- EVENT_
KIND_ CONTAINER_ START - Container started event.
- EVENT_
KIND_ CONTAINER_ STOP - Container stopped event.
- EVENT_
KIND_ CRON_ ADD - Cron job added event.
- EVENT_
KIND_ CRON_ EXECUTE - Cron job executed (fired) event.
- EVENT_
KIND_ CRON_ REMOVE - Cron job removed event.
- EVENT_
KIND_ EML_ DRIFT - EML model drift detected event.
- EVENT_
KIND_ EML_ LOADED - EML model loaded event.
- EVENT_
KIND_ EML_ SAVED - EML model saved event.
- EVENT_
KIND_ EML_ TRAINED - EML model trained event.
- EVENT_
KIND_ ENV_ REGISTER - Environment registered event.
- EVENT_
KIND_ ENV_ REMOVE - Environment removed event.
- EVENT_
KIND_ ENV_ SWITCH - Environment switched (set active) event.
- EVENT_
KIND_ GATE_ DEFER - TileZero gate deferred an action for review (WEFT-152).
- EVENT_
KIND_ GATE_ DENY - TileZero gate denied an action (WEFT-152).
- EVENT_
KIND_ GATE_ PERMIT - TileZero gate permitted an action (WEFT-152).
- EVENT_
KIND_ GRAPHIFY_ BUILD - Graphify knowledge graph built.
- EVENT_
KIND_ GRAPHIFY_ HOOK - Graphify git hook installed or uninstalled.
- EVENT_
KIND_ GRAPHIFY_ INGEST - Graphify URL ingested.
- EVENT_
KIND_ GRAPHIFY_ PIPELINE - Graphify pipeline executed.
- EVENT_
KIND_ GRAPHIFY_ QUERY_ RESULT - Graphify Q&A query result saved for re-extraction (WEFT-153).
- EVENT_
KIND_ HNSW_ CLEAR - HNSW store cleared event (governance gated – bulk destruction).
- EVENT_
KIND_ HNSW_ EML_ OBSERVE - HNSW EML search observation event.
- EVENT_
KIND_ HNSW_ EML_ RECALL - HNSW EML recall measurement event.
- EVENT_
KIND_ HNSW_ EML_ TRAINED - HNSW EML model trained event.
- EVENT_
KIND_ HNSW_ EML_ TRIAGE - HNSW EML triage decision event.
- EVENT_
KIND_ HNSW_ INSERT - HNSW vector inserted event.
- EVENT_
KIND_ HNSW_ LOAD - HNSW store loaded from file event.
- EVENT_
KIND_ HNSW_ SAVE - HNSW store saved to file event.
- EVENT_
KIND_ KERNEL_ LOAD - Kernel state loaded from disk.
- EVENT_
KIND_ KERNEL_ SAVE - Kernel state saved to disk.
- EVENT_
KIND_ LEWM_ FRAME_ ATTESTATION - LeWM per-frame observational tuple attestation (WEFT-533).
- EVENT_
KIND_ MESH_ ARTIFACT_ FETCH - Mesh artifact fetch request created.
- EVENT_
KIND_ MESH_ ARTIFACT_ STORE - Mesh artifact remote provider registered.
- EVENT_
KIND_ MESH_ IPC_ SEND - Mesh IPC envelope sent.
- EVENT_
KIND_ MESH_ PEER_ ADD - Mesh peer added (via announcement / catalog update).
- EVENT_
KIND_ MESH_ PEER_ REMOVE - Mesh peer removed.
- EVENT_
KIND_ MESH_ SENSOR_ FRAME - LeWM mesh sensor topic frame index (WEFT-526).
- EVENT_
KIND_ MESH_ SERVICE_ DEREGISTER - Mesh service resolution removed / negative-cached.
- EVENT_
KIND_ MESH_ SERVICE_ REGISTER - Mesh service resolution cached.
- EVENT_
KIND_ NODE_ FACTS_ REFRESH - An operator-forced node-facts probe ran (
cluster.factswithrefresh). Payload:node,seq. - EVENT_
KIND_ PROCESS_ DEREGISTER - Process deregistered (removed) from the process table.
- EVENT_
KIND_ PROCESS_ REGISTER - Process registered in the process table.
- EVENT_
KIND_ PROCESS_ STATE - Process state changed.
- EVENT_
KIND_ PROFILE_ CREATE - Profile created event.
- EVENT_
KIND_ PROFILE_ DELETE - Profile deleted event.
- EVENT_
KIND_ PROFILE_ SWITCH - Active profile switched event.
- EVENT_
KIND_ PROFILE_ VECTOR_ INSERT - Vector inserted into a profile backend.
- EVENT_
KIND_ PROJECT_ INIT - Project initialised.
- EVENT_
KIND_ RECONCILER_ ACTION - Reconciler corrective action recorded.
- EVENT_
KIND_ RECONCILER_ DESIRED_ REMOVE - Reconciler desired state removed.
- EVENT_
KIND_ RECONCILER_ DESIRED_ SET - Reconciler desired state set.
- EVENT_
KIND_ RECONCILER_ TICK - Reconciler tick completed.
- EVENT_
KIND_ SANDBOX_ EXECUTE - Sandbox command execution event.
- EVENT_
KIND_ SANDBOX_ SUDO_ OVERRIDE - Sandbox sudo override event (k3:D12).
- EVENT_
KIND_ SESSION_ APPEND - Session created event.
- EVENT_
KIND_ SESSION_ CREATE - EVENT_
KIND_ SESSION_ DESTROY - Session destroyed event.
- EVENT_
KIND_ SHELL_ EXEC - Shell command execution event (k3:D10).
- EVENT_
KIND_ SIGREG_ HEALTH - LeWM SIGReg health snapshot / rollback gate (WEFT-528).
- EVENT_
KIND_ TOOL_ DEPLOYED - Tool version deployment event.
- EVENT_
KIND_ TOOL_ REGISTER - Tool registered in the registry.
- EVENT_
KIND_ TOOL_ REGISTER_ METADATA - Tool registered with explicit metadata (WEFT-153).
- EVENT_
KIND_ TOOL_ SIGNED - Tool signed event (k3:D9).
- EVENT_
KIND_ TOOL_ VERSION_ REVOKED - Tool version revocation event.
- EVENT_
KIND_ WASM_ EXECUTE - WASM module executed.
- EVENT_
KIND_ WASM_ FS_ COPY - WASM filesystem: file copied.
- EVENT_
KIND_ WASM_ FS_ CREATE_ DIR - WASM filesystem: directory created.
- EVENT_
KIND_ WASM_ FS_ MOVE - WASM filesystem: file moved.
- EVENT_
KIND_ WASM_ FS_ REMOVE - WASM filesystem: file or directory removed.
- EVENT_
KIND_ WASM_ FS_ WRITE - WASM filesystem: file written.
- EVENT_
KIND_ WORKLOAD_ INSTALL - Workload package install decision / event.
- EVENT_
KIND_ WORKLOAD_ LIFECYCLE - An instance changed lifecycle state (health, restart, loss, reschedule).
- EVENT_
KIND_ WORKLOAD_ LOAD - Workload load decision / event.
- EVENT_
KIND_ WORKLOAD_ MIGRATE - Workload migration decision / event.
- EVENT_
KIND_ WORKLOAD_ NODE_ BIND - Fleet identity bound to a mesh node.
- EVENT_
KIND_ WORKLOAD_ NODE_ UNBIND - Fleet identity binding withdrawn (operator-signed
unboundrecord). - EVENT_
KIND_ WORKLOAD_ PLACE - Workload placement decision / event.
- EVENT_
KIND_ WORKLOAD_ REFUSE - Workload refusal (node admission refusal or unknown workload action).
- EVENT_
KIND_ WORKLOAD_ REVOKE - Package / signer key / artifact hash revocation.
- EVENT_
KIND_ WORKLOAD_ START - Workload start decision / event.
- EVENT_
KIND_ WORKLOAD_ STOP - Workload stop decision / event.
- EVENT_
KIND_ WORKLOAD_ UNLOAD - Workload unload decision / event.
- EVENT_
KIND_ WORKLOAD_ UNREVOKE - A revocation lifted again (
unrevoke), chained like the revocation. - EVENT_
KIND_ WORKSPACE_ CONFIG - Workspace config updated event.
- EVENT_
KIND_ WORKSPACE_ CREATE - Workspace created event.
- IDEMPOTENCY_
LOOKBACK - Number of recent events scanned for idempotency-key collisions
in
ChainManager::append_idempotent. - KERNEL_
SOURCES - Sources the kernel’s own code appends under and that a project kernel
trusts when it reads its chain back (review M3):
governance(the rollback floor readsgovernance.overlay.applied),project(genesis) andproject.supervisor. Refused, withRESERVED_SOURCES, from the two caller doors (thechain.appendRPC andchain_bridge). Not refused from replication (ChainManager::append_signed): every chain carries governance events and a peer’s must sync; a project kernel replicates nothing (its mesh is off). - PROJECT_
DOMAIN_ PREFIX - Domain-tag prefix of every project-key signed format
(
weftos-project-cert-v1,-anchor-v1,-anchor-record-v1, forward header, …). A signer that takes caller-chosen bytes under a key it does not tag (the chain’sdual_sign, the tree manager’ssign_bytes, the mesh handshake) must never sign bytes that start with it, or its signature could be replayed as one of those statements (ADR-103 A7 note). - RESERVED_
KINDS - Event kinds a project kernel folds as authority regardless of the source
they carry (the overlay rollback floor and
user_pin_usedreadgovernance.overlay.applied). Refused from replication under any source: a forged replicated one withparent_version = u64::MAXwould brick boot and reload. - RESERVED_
SOURCES - Chain sources only the daemon’s own code may append under: the user
chain’s identity events (
user.projects), project anchors (project.anchor, on both the user and the project chain) and token issue/revoke records (auth.token, folded byTokenAuthority). Refused from thechain.appendRPC andchain_bridge, and from replicated events (ChainManager::append_signed): a forged one would feed the identity view, fake an anchor or mint/revoke a bearer token. This is the ONE list: every authority-owned source a kernel component folds belongs here (the literals are pinned to the owning modules’ constants by a test).
Traits§
- Chain
Anchor - Trait for anchoring chain state to an external ledger or store.
- Chain
Loggable - Trait for types that can be logged to the ExoChain audit trail.
Functions§
- is_
caller_ reserved_ source - May a caller (an RPC or a tracing emitter) NOT append under
source? - is_
reserved_ kind - Is
kindan authority-folded kind that replication must never carry? - is_
reserved_ source - Is
sourcereserved for the daemon’s own events? - signs_
project_ domain - True when an untagged signer would be signing a project-domain-tagged
message. Callers refuse (return
None/Err) in release builds too.
Type Aliases§
- Rule
Hash Provider - Supplies the rule hash stamped on each append (ADR-103 A7).