Define the state and commit hashes that let Echo retain a witnessed history without retaining observer interpretations as canonical state.
Legend: KERNEL
Depends on:
Echo needs stable hash commitments for replay, slicing, and audit. The hash boundary must commit to the witnessed carrier and replayable delta, while leaving observer-relative readings and diagnostic narration outside the commit unless a later version explicitly adds them.
Human users need hash mismatches to mean something concrete.
The hill: when a state root or commit id changes, a reviewer can trace the change to reachable state, patch bytes, parents, or policy id.
Agent users need deterministic equality tests.
The hill: an agent can rebuild a state from retained patches and compare the same state_root and commit id without access to the original process.
The state root is BLAKE3 over canonical encoding of reachable WARP state from a root NodeKey. Reachability follows outbound skeleton edges and descended attachment portals from reachable node/edge slots.
Commit header v2 commits to version, parents, state root, patch digest, and policy id. patch_digest is the digest of the replayable tick patch.
plan_digest, decision_digest, and rewrites_digest are deterministic diagnostics. They are useful witnesses, but commit hash v2 does not include them.
For length-prefixed list digests, EMPTY_LEN_DIGEST = blake3(0u64.to_le_bytes()). It is not blake3(b"").
Observation artifacts, view frames, and session packets are readings over the carrier. They may have their own hashes, but they are not part of commit_id v2.