Event model audit (Phase 2)
#Current envelope
The implemented universal envelope is temporality.event/1: event ID/time, source, context (project/run/task/actor/parent event), type, data and evidence refs. Kernel events currently place frame_id, parent_frame_id, sequence, caused_by, operation IDs and payload-specific fields in data. The outbox and Temporal workflow provide a source-scoped deduplication identity and orchestration history, respectively.
#Audit against Phase 2 queries
| Query need | Current representation | Audit |
|---|---|---|
| What happened? | type, data |
Available; event envelope is versioned (temporality.event/1 + JSON schema), the knowledge/hint families are validated centrally |
| Who did it? | context.actor |
Run actor is present; approval events also include approver in data |
| When? | occurred_at, server received_at |
Available; ordering must use sequence/causality per run |
| In which execution/frame? | context.run, data.frame_id, data.parent_frame_id |
Available for current Kernel emissions; not first-class envelope fields |
| What operation? | data.operation_id, tool name/hash |
Approval identity is hash-bound; operations have a shared lifecycle projection (GET /v1/agent/operations, reconcile endpoint, operation.reconciled) |
| What caused it? | context.parent_event_id, data.caused_by |
Immediate chain is emitted; cross-run parent links exist for delegated events |
| What evidence appeared? | top-level evidence[], evidence.observed data |
Refs are carried and addressable: the artifact registry (artifact_read/artifact_search, docs/artifact-registry.md) stores agent-produced evidence artifacts with versions and reviews |
| What knowledge changed? | knowledge.* event family |
Two proposal channels: model remember (claims) and the kernel execution-observation heuristic (kernel-heuristic/execution-observation.v1 proposes kind observation after successful verification/build commands; repeats confirm via execution-reverification.v1); challenge/correct beyond this is not automatic |
| Is the narrative a record? | agent.summary derived event |
Final answers are stored as bounded, redacted agent.summary events with derived_from frame links, emitted after run.completed; they are derived data, never the execution record. Failure events (model.failed, run.failed) carry a bounded redacted error detail |
| Schema compatibility? | fixed envelope temporality.event/1 |
data is extensible; per-event data schema versions are not yet validated |
#Decision for Phase 2
Do not change the universal envelope before collecting the real code-change/MCP corpus. Keep operation and frame fields in the current extension data for compatibility. Add event-family schema docs and validators only for fields backed by concrete queries. The audit identifies the missing artifact/result linkage and explicit operation record as the largest provenance gaps.