The event catalog has been revised and expanded to 25 event types (spec amended 2026-06): the loop events plus an explicit L0 approval gate (approval.requested / decided / expired), pause and resume checkpoints (execution.paused / resumed / escalated), human contact as a capability (human_input.requested / received), observation and evaluation events, and release milestones. This page documents the founding 15-event schema in full detail; several of those names were superseded in the revision, and the current canon lives in spec/event-catalog.md. 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| Field | Type | Description |
|---|---|---|
| signal_id | string | Unique signal identifier (SIG-*) |
| source | string | Origin: "cli" | "mcp" | "email" | "slack" | "agent" |
| content | string | Raw signal text or observation |
| confidence | number | 0.0–1.0 initial confidence (before enrichment) |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| signal_id | string | Unique signal identifier (SIG-*) |
| trust_score | number | 0.0–1.0 enriched trust score |
| tags | array | Context tags added by enrichment pipeline |
| references | array | Related signal IDs identified during dedup |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| signal_id | string | Unique signal identifier (SIG-*) |
| cluster_id | string | Cluster identifier (CL-*) |
| cluster_name | string | Human-readable cluster label |
| similarity_score | number | 0.0–1.0 semantic similarity to cluster centroid |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| signal_id | string | Unique signal identifier (SIG-*) |
| cluster_id | string | Source cluster (CL-*) |
| intent_id | string | Newly created intent (INT-*) |
| trace_id | string | OTel trace identifier (TRACE-*) |
| reason | string | Promotion rationale |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| signal_id | string | Unique signal identifier (SIG-*) |
| reason | string | Dismissal reason |
| dismissed_by | string | User or "auto" |
| dismissed_at | ISO 8601 | Dismissal timestamp |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| intent_id | string | Unique intent identifier (INT-*) |
| trace_id | string | OTel trace identifier (TRACE-*) |
| signals | array | Contributing signal IDs |
| title | string | Human-readable intent summary |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| intent_id | string | Unique intent identifier (INT-*) |
| accepted_by | string | User handle or "auto" |
| confidence | number | 0.0–1.0 acceptance confidence |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| spec_id | string | Unique spec identifier (SPEC-*) |
| intent_id | string | Parent intent (INT-*) |
| trace_id | string | OTel trace identifier (TRACE-*) |
| title | string | Spec title |
| contracts | array | Contract IDs defined in the spec |
| author | string | Author (user handle or agent name) |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| spec_id | string | Unique spec identifier (SPEC-*) |
| completeness_score | number | 0.0–1.0 spec completeness |
| checks_passed | array | List of passed readiness checks |
| approved_by | string | User handle or "auto" |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| contract_id | string | Unique contract identifier (CON-*) |
| spec_id | string | Parent spec (SPEC-*) |
| trace_id | string | OTel trace identifier (TRACE-*) |
| agent | string | Executing agent name |
| started_at | ISO 8601 | Execution start timestamp |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| contract_id | string | Parent contract (CON-*) |
| assertion_id | string | Assertion identifier |
| assertion_name | string | Human-readable assertion label |
| evidence | string | Command output or proof artifact |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| contract_id | string | Parent contract (CON-*) |
| assertion_id | string | Assertion identifier |
| assertion_name | string | Human-readable assertion label |
| error | string | Error message or stack trace |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| contract_id | string | Unique contract identifier (CON-*) |
| spec_id | string | Parent spec (SPEC-*) |
| duration | number | Execution duration in seconds |
| assertions_passed | number | Count of passed assertions |
| assertions_failed | number | Count of failed assertions |
| timestamp | ISO 8601 | Event 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| Field | Type | Description |
|---|---|---|
| timestamp | ISO 8601 | Heartbeat timestamp |
| servers_active | number | Count of active MCP servers |
| event_count | number | Total events processed since startup |
| uptime_seconds | number | Server uptime in seconds |
| memory_usage_percent | number | Memory 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| Field | Type | Description |
|---|---|---|
| error_type | string | Error classification (e.g. MCP_CONNECTION_TIMEOUT) |
| error_code | string | Machine-readable error code |
| message | string | Human-readable error description |
| stack | string | Stack trace (optional) |
| context | object | Additional context (server, endpoint, etc.) |
| timestamp | ISO 8601 | Event 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"
}
Learn More
- See live events: Observe page — Real-time event stream from Intent itself
- See the OTel ingestion stack: Observability page — How these events are collected, stored, and visualized
- See the data model: Schemas page — Field definitions, types, and constraints for all event types
- Understand the loop: Flow diagram — How events connect through notice→spec→execute→observe