# Events

> The optional, append-only log of what happened when.

Events are an optional, append-only provenance log. They answer why an attempt exists and when things happened. A consumer does not need them to learn cost.

- `at` ([Timestamp](https://orchestrationcontextprotocol.io/specification/0.3/schema#timestamp), required)

- `type` (string, required): Open set. Recommended vocabulary: attempt_started, attempt_settled, promoted, directive, note, launched, artifact_written, artifact_read, signal_observed, receipt_written, run_finished.

  At most 100 characters.

- `node` (string): At most 200 characters.

- `attempt` (string): At most 200 characters.

- `actor` (string): At most 200 characters.

- `detail` ([ShortText](https://orchestrationcontextprotocol.io/specification/0.3/schema#shorttext))

- `ext` ([Ext](https://orchestrationcontextprotocol.io/specification/0.3/schema#ext))

- Events SHOULD be in ascending time order ([W150](https://orchestrationcontextprotocol.io/specification/0.3/conformance#w150)).
- An event's `node` and `attempt` MUST name existing entities ([E113](https://orchestrationcontextprotocol.io/specification/0.3/conformance#e113), [E114](https://orchestrationcontextprotocol.io/specification/0.3/conformance#e114)).
- `type` is an open set. The recommended types cover attempts (`attempt_started`, `attempt_settled`), control (`promoted`, `directive`), hand-offs (`launched`, `artifact_written`, `artifact_read`), and from 0.3 the observation (`signal_observed`, `receipt_written`, `run_finished`), plus `note`.
