ARTICLE XXXIII/RATIFIED 26.05.24/REVISION 1.0.0

Interoperability Handshake (IOH-01)

A five-phase deterministic handshake by which external systems bind to Kiri without being absorbed and without absorbing Kiri.

§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.

http
POST /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.

Bound Systems
  • Interoperability Gateway
    L4 · IOP-01
    Negotiates ontology references and brokers sovereign-to-sovereign treaties.
    interopschema handshakeonline
    kiri:system/interop
  • Ontology Graph
    L6 · ONT-01
    Canonical typed graph of doctrines, agents, swarms, treaties, and transactions.
    ontologyJSON-LD / GraphQLonline
    kiri:system/ontology
  • Governance Core
    L8 · GOV-01
    Owns the proposal lifecycle, quorum gating, and amendment of the amendment process.
    governanceproposal lifecycleonline
    kiri:system/governance
Published Schemas
  • kiri:spec/IOH-01
    Five-phase ANNOUNCE → NEGOTIATE → BIND → OPERATE → DISSOLVE handshake.
  • kiri:schema/Handshake
    Negotiated ontology reference exchange record.
Emitted Signals
handshake.openedtreaty.ratifiedbridge.transfer
Governance Permissions
interop.handshakeinterop.treaty
Runtime Flows
  • IOP-01 · Interoperability GatewayONT-01 · Ontology GraphBIND phase resolves namespace references via NUR-01.
  • IOP-01 · Interoperability GatewayGOV-01 · Governance CoreTreaty BIND requires ratified counter-signature.
End of Article XXXIII · Doctrine MELEGA-IOH-XXXIII · Verified by Consensus