HACI and MACI are not two formats that convert into each other. They are two faithful exits of one validated substrate. Validate the substrate first; then both skins must exit together — each recovering the substrate exactly, graph and all.
skin → from → [ SUBSTRATE ] → to → skin. The old eskimo seam was H failing to be a faithful exit: it rebuilt refs as linear adjacency, so M→H→M silently collapsed any non-linear graph. Continuity closes it — and proves the closure by re-opening it on demand (the toggle below).
Flip the switch to drop refs in the human exit — exactly the eskimo regression. Watch C6 M→H→M turn red: the machine's ref-graph re-rendered into HACI-C and back no longer matches, because the human skin threw the refs away. That is the seam, and that is why the engine's mutation test demands a catch.
The suite proves the conversation survives the crossing between skins; the chain proves it survives the crossing between versions. Each substrate is sealed into a canonical manifest, signed (Ed25519, the who), timestamped against an external RFC-3161 authority (the when), and linked to its predecessor by prev_root. The anchor points outside the repo; the verifier recomputes everything.
id|from|authority|role|refs in a tail — base HACI traded that away for cleanliness and bought the seam. The machine-only roles (DECISION / DELEGATE) cannot exit as H at all, so C2 detects them as non-bridgeable residue rather than dropping them. The suite is exhaustive seeded property-testing, not a formal proof; HACI-C content is single-line here, multi-line / CODE-fence bodies a declared extension. This page runs the ported engine logic in your browser; the authoritative engine is the Python that ships in the repo.