Skip to content

Event Contracts

github-actions[bot] edited this page Mar 8, 2026 · 6 revisions

Event Contracts — Routing Table & Function Declarations

Every function has a contract. Every event has a declaration. The routing table is the single source of truth.

Overview

Event Contracts define the declarative routing table that maps all 67 domain function handlers and 79 events to their FEEDS topics, subtypes, handler paths, required payload fields, and emitted events.

Modules:

  • src/core/feeds/contracts/routing_table.json — the manifest
  • src/core/feeds/contracts/loader.py — load, query, fingerprint
  • src/core/feeds/contracts/validator.py — publish-time validation

Schemas:

  • src/core/schemas/feeds/event_contract.schema.json — per-function contract schema
  • src/core/schemas/feeds/routing_table.schema.json — routing manifest schema

Function Contract Format

Each function entry in the routing table:

{
  "INTEL-F01": {
    "name": "claim_ingest",
    "domain": "intelops",
    "description": "Ingest a new claim into the truth layer via FEEDS.",
    "inputTopic": "truth_snapshot",
    "inputSubtype": "claim_ingest",
    "outputTopics": ["canon_entry", "drift_signal"],
    "outputSubtypes": ["claim_accepted", "claim_rejected"],
    "handler": "core.modes.intelops.claim_ingest",
    "requiredPayloadFields": ["claimId", "statement", "confidence"],
    "emitsEvents": ["INTEL-E01", "INTEL-E02"],
    "stateWrites": ["canon_store", "memory_graph"],
    "preconditions": ["claim has valid claimId"],
    "postconditions": ["claim persisted in canon store"]
  }
}

Function Registry (67 Functions)

IntelOps (12)

ID Name Input Topic Input Subtype
INTEL-F01 claim_ingest truth_snapshot claim_ingest
INTEL-F02 claim_validate canon_entry claim_accepted
INTEL-F03 claim_drift_detect drift_signal claim_contradiction
INTEL-F04 claim_patch_recommend drift_signal claim_drift
INTEL-F05 claim_mg_update canon_entry patch_recommended
INTEL-F06 claim_canon_promote canon_entry claim_accepted
INTEL-F07 claim_authority_check decision_lineage authority_check
INTEL-F08 claim_evidence_verify decision_lineage evidence_check
INTEL-F09 claim_triage drift_signal claim_drift
INTEL-F10 claim_supersede canon_entry retcon_executed
INTEL-F11 claim_half_life_check drift_signal half_life_sweep
INTEL-F12 claim_confidence_recalc drift_signal confidence_decay

FranOps (12)

ID Name Input Topic Input Subtype
FRAN-F01 canon_propose canon_entry canon_proposed
FRAN-F02 canon_bless canon_entry canon_proposed
FRAN-F03 canon_enforce canon_entry canon_blessed
FRAN-F04 retcon_assess canon_entry retcon_request
FRAN-F05 retcon_execute canon_entry retcon_assessed
FRAN-F06 retcon_propagate canon_entry retcon_executed
FRAN-F07 inflation_monitor drift_signal canon_inflation
FRAN-F08 canon_expire canon_entry canon_expire_sweep
FRAN-F09 canon_supersede canon_entry claim_superseded
FRAN-F10 canon_scope_check canon_entry scope_check
FRAN-F11 canon_drift_detect drift_signal canon_drift
FRAN-F12 canon_rollback canon_entry canon_rollback

ReflectionOps (19)

ID Name Input Topic Input Subtype
RE-F01 episode_begin decision_lineage episode_begin
RE-F02 episode_seal decision_lineage episode_active
RE-F03 episode_archive decision_lineage episode_sealed
RE-F04 gate_evaluate drift_signal gate_request
RE-F05 gate_degrade drift_signal gate_deny
RE-F06 gate_killswitch drift_signal killswitch_request
RE-F07 audit_non_coercion decision_lineage episode_active
RE-F08 severity_score drift_signal severity_request
RE-F09 coherence_check drift_signal coherence_request
RE-F10 reflection_ingest decision_lineage episode_sealed
RE-F11 iris_resolve decision_lineage iris_query
RE-F12 episode_replay decision_lineage episode_replay
RE-F13 precedent_ingest decision_lineage reflection_ingested
RE-F14 pattern_fingerprint decision_lineage precedent_stored
RE-F15 precedent_match decision_lineage precedent_query
RE-F16 knowledge_consolidate decision_lineage consolidation_request
RE-F17 temporal_recall decision_lineage temporal_recall
RE-F18 knowledge_decay decision_lineage decay_request
RE-F19 iris_precedent_resolve decision_lineage iris_precedent_query

AuthorityOps (19)

ID Name Input Topic Input Subtype
AUTH-F01 action_request_intake authority_slice action_request
AUTH-F02 actor_resolve authority_slice actor_resolve
AUTH-F03 resource_resolve authority_slice resource_resolve
AUTH-F04 policy_load authority_slice policy_load
AUTH-F05 dlr_presence_check decision_lineage dlr_check
AUTH-F06 assumption_validate truth_snapshot assumption_check
AUTH-F07 half_life_check truth_snapshot half_life_check
AUTH-F08 blast_radius_threshold authority_slice blast_radius_check
AUTH-F09 kill_switch_check drift_signal killswitch_check
AUTH-F10 decision_gate authority_slice decision_gate
AUTH-F11 audit_record_emit authority_slice audit_emit
AUTH-F12 delegation_chain_validate authority_slice delegation_check

ParadoxOps (12)

ID Name Input Topic Input Subtype
PDX-F01 tension_set_create drift_signal pts_create
PDX-F02 pole_manage drift_signal pts_pole_manage
PDX-F03 dimension_attach drift_signal pts_dimension_attach
PDX-F04 dimension_shift drift_signal pts_dimension_shift
PDX-F05 pressure_compute drift_signal pts_pressure_compute
PDX-F06 imbalance_compute drift_signal pts_imbalance_compute
PDX-F07 threshold_evaluate drift_signal pts_threshold_evaluate
PDX-F08 drift_promote drift_signal pts_drift_promote
PDX-F09 interdimensional_drift_detect drift_signal pts_id_drift_detect
PDX-F10 seal_snapshot drift_signal pts_seal
PDX-F11 patch_issue drift_signal pts_patch_issue
PDX-F12 lifecycle_transition drift_signal pts_lifecycle_transition

Querying the Routing Table

from core.feeds.contracts.loader import load_routing_table

rt = load_routing_table()

# Look up a function
fn = rt.get_function("INTEL-F01")
print(fn.handler)  # "core.modes.intelops.claim_ingest"

# Look up an event
ev = rt.get_event("INTEL-E01")
print(ev.produced_by)  # ("INTEL-F01",)

# Get handler path
path = rt.get_handler("FRAN-F04")

# Get consumers of an event
consumers = rt.get_consumers("INTEL-E06")

# Get all functions in a domain
fns = rt.functions_by_domain("intelops")

# Get functions for a topic/subtype
fns = rt.functions_for_topic("drift_signal", "claim_contradiction")

Contract Validation

At publish time, the validator checks:

  1. Event has required payload fields per contract
  2. Output topics and subtypes match declared outputs
  3. State writes are consistent with handler declaration

Implementation: src/core/feeds/contracts/validator.py

Fingerprinting

The routing table has a SHA-256 fingerprint computed over the functions and events sections (sorted keys, compact JSON). This fingerprint is embedded in the manifest and verified by CI.

Domino Delegation Encryption Events

The Domino Delegation Encryption module (EDGE) defines 9 events across 3 domains. These events are emitted by the ceremony tool and can be consumed by Coherence Ops for audit and drift tracking.

ReOps (3)

ID Name Trigger Payload
DELEG-E01 reops.delegation.ceremony_initiated Self-test passes, chain sealed {session_id, chain_fingerprint, participant_count, timestamp}
DELEG-E02 reops.delegation.keywords_generated Keywords created {session_id, n, t, ttl_ms, created_at, expires_at}
DELEG-E03 reops.delegation.ttl_expired TTL countdown reaches zero {session_id, expired_at}

FranOps (3)

ID Name Trigger Payload
DELEG-E04 franops.delegation.quorum_reached 4+ valid keywords entered {session_id, valid_count, threshold}
DELEG-E05 franops.delegation.message_locked Plaintext encrypted {session_id, ciphertext_length}
DELEG-E06 franops.delegation.message_unlocked Ciphertext decrypted {session_id, plaintext_length}

IntelOps (3)

ID Name Trigger Payload
DELEG-E07 intelops.delegation.ceremony_verified Verifier confirms record {session_id, chain_fingerprint, all_checks_passed}
DELEG-E08 intelops.delegation.fingerprint_mismatch Keyword fails fingerprint check {session_id, slot_index, expected_fp}
DELEG-E09 intelops.delegation.seal_tampered Chain hash mismatch on verification {session_id, expected_hash, computed_hash}

FEEDS Topic Mapping

All 79 functions route through the existing 6 FEEDS topics plus authority_slice:

Topic Functions
truth_snapshot INTEL-F01; AUTH-F06, F07
canon_entry INTEL-F02, F05, F06, F10; FRAN-F01–F06, F08–F10, F12
drift_signal INTEL-F03, F04, F07–F09, F11, F12; FRAN-F07, F11; RE-F04–F06, F08, F09; AUTH-F09; PDX-F01–F12
decision_lineage INTEL-F07, F08; RE-F01–F03, F07, F10–F12; AUTH-F05
authority_slice AUTH-F01–F04, F08, F10–F12
mg_update INTEL-F05
coherence_report RE-F09

JRM Pipeline (5 Stages)

The Judgment Refinement Module extends the routing table with a 5-stage coherence pipeline for external telemetry. JRM adapters normalize log sources into JRMEvent records, which flow through the pipeline and produce JRM-X packet zips.

Adapters (3)

ID Name Input Format
JRM-A01 suricata_eve Suricata EVE JSON lines (alert, dns, http, flow, tls, fileinfo)
JRM-A02 snort_fastlog Snort fast.log [GID:SID:REV] format
JRM-A03 copilot_agent Copilot/agent JSONL (prompt, tool_call, response, guardrail)

Pipeline Stages (5)

ID Stage Purpose Output
JRM-S01 truth Cluster events into claims by (source, signature) Claims + truth_snapshot
JRM-S02 reasoning Assign decision lanes (LOG_ONLY/NOTIFY/QUEUE_PATCH/REQUIRE_REVIEW) ReasoningResults + DLR entries
JRM-S03 drift Detect FP_SPIKE, MISSING_MAPPING, STALE_LOGIC, ASSUMPTION_EXPIRED DriftDetections + DS entries
JRM-S04 patch Create rev++ patch records with lineage preservation PatchRecords
JRM-S05 memory_graph Build evidence/claim/drift/patch graph + canon postures MG delta + canon entries

Enterprise Federation (4)

ID Name Purpose
JRM-E01 gate_validate Validate packet integrity, enforce environment scope, redact fields
JRM-E02 hub_ingest Ingest multi-env packets, detect cross-env drift (VERSION_SKEW, POSTURE_DIVERGENCE)
JRM-E03 advisory_publish Publish/accept/decline drift advisories with recommendations
JRM-E04 packet_sign HMAC-SHA256 manifest signing and validation

Related Pages

Clone this wiki locally