§43.1 Function
IOH-01 specifies how an external system enters and leaves a bound relationship with the Kiri runtime. The handshake is HTTP, JSON, and stateless between phases except for records persisted in the interop ledger.
§43.2 Phases
ANNOUNCE → NEGOTIATE → BIND → OPERATE → DISSOLVE. Each phase has a single endpoint, a fixed request shape, and a fixed response shape. Skipping is forbidden; reordering is forbidden.
httpPOST /api/public/handshake/announce { "schema_id": "ext:foo/v2", "namespace_uri": "https://foo.example/ns", "version": "2.1.0", "contact": "ops@foo.example" } → { "negotiation_id": "ng_…", "expires_at": "…" } POST /api/public/handshake/negotiate { "negotiation_id": "ng_…" } → { "supported_translations": ["ext:foo/v2 → kiri:agent.v1"], "required_invariants": ["anti_absorption", "schema_versioned", "namespace_resolvable"], "binding_offer_hash": "sha256:…" } POST /api/public/handshake/bind { "negotiation_id": "ng_…", "ack_signature": "<sig over binding_offer_hash>" } → { "bind_token": "bnd_…", "ledger_entry": "kiri:interop/bnd_…" } # OPERATE — all subsequent messages carry header x-kiri-bind: bnd_… POST /api/public/handshake/dissolve { "bind_token": "bnd_…", "reason": "…" } → { "sealed_at": "…", "ledger_entry": "kiri:interop/bnd_…#sealed" }
§43.3 Required Invariants
anti_absorption: neither party may rewrite the other's canonical identifiers. schema_versioned: every bound message carries an explicit schema version. namespace_resolvable: the external namespace_uri MUST return a machine-readable schema descriptor on HTTP GET.
§43.4 Failure Behavior
Any phase that fails an invariant returns HTTP 422 with a structured reason code. The binding is NEVER created in a partial state. A dissolved bind_token is permanently sealed and cannot be re-bound — a new ANNOUNCE is required.
§43.5 Final Principle
Interoperability is a contract with five visible steps. Anything that hides a step is not interoperability — it is integration disguised as one.
“A handshake you cannot trace is a hand you should not shake.”
Operational Bindings
View system map →This article is not inert prose. It compiles into the following runtime systems, schemas, signals, and governance permissions.
- Interoperability GatewayL4 · IOP-01Negotiates ontology references and brokers sovereign-to-sovereign treaties.interopschema handshakeonlinekiri:system/interop
- Ontology GraphL6 · ONT-01Canonical typed graph of doctrines, agents, swarms, treaties, and transactions.ontologyJSON-LD / GraphQLonlinekiri:system/ontology
- Governance CoreL8 · GOV-01Owns the proposal lifecycle, quorum gating, and amendment of the amendment process.governanceproposal lifecycleonlinekiri:system/governance
- kiri:spec/IOH-01Five-phase ANNOUNCE → NEGOTIATE → BIND → OPERATE → DISSOLVE handshake.
- kiri:schema/HandshakeNegotiated ontology reference exchange record.
- IOP-01 · Interoperability Gateway→ONT-01 · Ontology GraphBIND phase resolves namespace references via NUR-01.
- IOP-01 · Interoperability Gateway→GOV-01 · Governance CoreTreaty BIND requires ratified counter-signature.