Intent emits 15 event types across four categories—signal.*, intent.*, spec.*, and contract.*—plus two system.* event types. These events form the complete audit trail of the notice→spec→execute→observe loop, enabling observability, reproducibility, and trust scoring.

Each event is immutable, timestamped, and appended to events.jsonl. Events can be ingested by the OTel Collector for distributed tracing, or analyzed directly via log queries in Grafana Loki.

signal.* Events

signal.created

Signal
When: Signal captured from any tier (CLI, MCP, agent, Slack, email).
FieldTypeDescription
signal_idstringUnique signal identifier (SIG-*)
sourcestringOrigin: "cli" | "mcp" | "email" | "slack" | "agent"
contentstringRaw signal text or observation
confidencenumber0.0–1.0 initial confidence (before enrichment)
timestampISO 8601Event emission timestamp
{ "event_type": "signal.created", "signal_id": "SIG-042", "source": "cli", "content": "API latency p99 > 2s in production", "confidence": 0.75, "timestamp": "2026-03-30T14:23:45Z" }

signal.enriched

Signal
When: Dedup/context/trust pipeline completes enrichment of a signal.
FieldTypeDescription
signal_idstringUnique signal identifier (SIG-*)
trust_scorenumber0.0–1.0 enriched trust score
tagsarrayContext tags added by enrichment pipeline
referencesarrayRelated signal IDs identified during dedup
timestampISO 8601Event emission timestamp
{ "event_type": "signal.enriched", "signal_id": "SIG-042", "trust_score": 0.92, "tags": ["performance", "prod", "p99"], "references": ["SIG-039", "SIG-041"], "timestamp": "2026-03-30T14:24:12Z" }

signal.clustered

Signal
When: Signal assigned to a cluster (semantic grouping of related signals).
FieldTypeDescription
signal_idstringUnique signal identifier (SIG-*)
cluster_idstringCluster identifier (CL-*)
cluster_namestringHuman-readable cluster label
similarity_scorenumber0.0–1.0 semantic similarity to cluster centroid
timestampISO 8601Event emission timestamp
{ "event_type": "signal.clustered", "signal_id": "SIG-042", "cluster_id": "CL-012", "cluster_name": "API Latency Spike", "similarity_score": 0.87, "timestamp": "2026-03-30T14:25:00Z" }

signal.promoted

Signal
When: Signal cluster becomes an intent (human or auto approval).
FieldTypeDescription
signal_idstringUnique signal identifier (SIG-*)
cluster_idstringSource cluster (CL-*)
intent_idstringNewly created intent (INT-*)
trace_idstringOTel trace identifier (TRACE-*)
reasonstringPromotion rationale
timestampISO 8601Event emission timestamp
{ "event_type": "signal.promoted", "signal_id": "SIG-042", "cluster_id": "CL-012", "intent_id": "INT-015", "trace_id": "TRACE-015", "reason": "4 correlated signals above threshold", "timestamp": "2026-03-30T14:26:00Z" }

signal.dismissed

Signal
When: Signal marked irrelevant (duplicate, noise, or out of scope).
FieldTypeDescription
signal_idstringUnique signal identifier (SIG-*)
reasonstringDismissal reason
dismissed_bystringUser or "auto"
dismissed_atISO 8601Dismissal timestamp
timestampISO 8601Event emission timestamp
{ "event_type": "signal.dismissed", "signal_id": "SIG-043", "reason": "duplicate of SIG-042", "dismissed_by": "auto", "dismissed_at": "2026-03-30T14:24:30Z", "timestamp": "2026-03-30T14:24:30Z" }

intent.* Events

intent.proposed

Intent
When: Cluster promoted to intent (ready for spec authoring).
FieldTypeDescription
intent_idstringUnique intent identifier (INT-*)
trace_idstringOTel trace identifier (TRACE-*)
signalsarrayContributing signal IDs
titlestringHuman-readable intent summary
timestampISO 8601Event emission timestamp
{ "event_type": "intent.proposed", "intent_id": "INT-015", "trace_id": "TRACE-015", "signals": ["SIG-039", "SIG-041", "SIG-042", "SIG-044"], "title": "Investigate API latency spike in prod", "timestamp": "2026-03-30T14:26:30Z" }

intent.accepted

Intent
When: Human or auto-approval accepts intent (moves to spec phase).
FieldTypeDescription
intent_idstringUnique intent identifier (INT-*)
accepted_bystringUser handle or "auto"
confidencenumber0.0–1.0 acceptance confidence
timestampISO 8601Event emission timestamp
{ "event_type": "intent.accepted", "intent_id": "INT-015", "accepted_by": "@brien", "confidence": 0.92, "timestamp": "2026-03-30T14:30:00Z" }

spec.* Events

spec.created

Spec
When: Spec authored (human writes or agent proposes).
FieldTypeDescription
spec_idstringUnique spec identifier (SPEC-*)
intent_idstringParent intent (INT-*)
trace_idstringOTel trace identifier (TRACE-*)
titlestringSpec title
contractsarrayContract IDs defined in the spec
authorstringAuthor (user handle or agent name)
timestampISO 8601Event emission timestamp
{ "event_type": "spec.created", "spec_id": "SPEC-042", "intent_id": "INT-015", "trace_id": "TRACE-015", "title": "Profile API and identify bottleneck", "contracts": ["CON-091", "CON-092", "CON-093"], "author": "claude-code", "timestamp": "2026-03-30T14:45:00Z" }

spec.approved

Spec
When: Spec passes readiness check (all contracts defined, fields complete).
FieldTypeDescription
spec_idstringUnique spec identifier (SPEC-*)
completeness_scorenumber0.0–1.0 spec completeness
checks_passedarrayList of passed readiness checks
approved_bystringUser handle or "auto"
timestampISO 8601Event emission timestamp
{ "event_type": "spec.approved", "spec_id": "SPEC-042", "completeness_score": 1.0, "checks_passed": ["contracts_defined", "fields_complete", "assertions_valid"], "approved_by": "@brien", "timestamp": "2026-03-30T14:42:00Z" }

contract.* Events

contract.started

Contract
When: Agent begins execution of a contract.
FieldTypeDescription
contract_idstringUnique contract identifier (CON-*)
spec_idstringParent spec (SPEC-*)
trace_idstringOTel trace identifier (TRACE-*)
agentstringExecuting agent name
started_atISO 8601Execution start timestamp
timestampISO 8601Event emission timestamp
{ "event_type": "contract.started", "contract_id": "CON-091", "spec_id": "SPEC-042", "trace_id": "TRACE-015", "agent": "claude-code", "started_at": "2026-03-30T14:45:30Z", "timestamp": "2026-03-30T14:45:30Z" }

contract.assertion.passed

Contract
When: Verification command returns 0 (assertion succeeds).
FieldTypeDescription
contract_idstringParent contract (CON-*)
assertion_idstringAssertion identifier
assertion_namestringHuman-readable assertion label
evidencestringCommand output or proof artifact
timestampISO 8601Event emission timestamp
{ "event_type": "contract.assertion.passed", "contract_id": "CON-091", "assertion_id": "assert-1", "assertion_name": "api_profile_generated", "evidence": "profile.json (2.4KB)", "timestamp": "2026-03-30T15:02:15Z" }

contract.assertion.failed

Contract
When: Verification fails (non-zero exit or exception).
FieldTypeDescription
contract_idstringParent contract (CON-*)
assertion_idstringAssertion identifier
assertion_namestringHuman-readable assertion label
errorstringError message or stack trace
timestampISO 8601Event emission timestamp
{ "event_type": "contract.assertion.failed", "contract_id": "CON-092", "assertion_id": "assert-2", "assertion_name": "lint_passes", "error": "eslint: 3 errors in src/api/handler.ts", "timestamp": "2026-03-30T15:03:45Z" }

contract.completed

Contract
When: All assertions evaluated (contract execution complete).
FieldTypeDescription
contract_idstringUnique contract identifier (CON-*)
spec_idstringParent spec (SPEC-*)
durationnumberExecution duration in seconds
assertions_passednumberCount of passed assertions
assertions_failednumberCount of failed assertions
timestampISO 8601Event emission timestamp
{ "event_type": "contract.completed", "contract_id": "CON-091", "spec_id": "SPEC-042", "duration": 18.45, "assertions_passed": 3, "assertions_failed": 0, "timestamp": "2026-03-30T15:02:30Z" }

system.* Events

system.health

System
When: Periodic heartbeat (every 60s by default).
FieldTypeDescription
timestampISO 8601Heartbeat timestamp
servers_activenumberCount of active MCP servers
event_countnumberTotal events processed since startup
uptime_secondsnumberServer uptime in seconds
memory_usage_percentnumberMemory utilization percentage
{ "event_type": "system.health", "timestamp": "2026-03-30T15:05:00Z", "servers_active": 3, "event_count": 1847, "uptime_seconds": 864000, "memory_usage_percent": 34.2 }

system.error

System
When: Error condition detected (agent crash, network failure, validation error).
FieldTypeDescription
error_typestringError classification (e.g. MCP_CONNECTION_TIMEOUT)
error_codestringMachine-readable error code
messagestringHuman-readable error description
stackstringStack trace (optional)
contextobjectAdditional context (server, endpoint, etc.)
timestampISO 8601Event emission timestamp
{ "event_type": "system.error", "error_type": "MCP_CONNECTION_TIMEOUT", "error_code": "ERR_MCP_001", "message": "notice MCP server did not respond within 30s", "context": {"server": "notice", "endpoint": "signal.ingest"}, "timestamp": "2026-03-30T15:10:45Z" }