observatory.replay
The recording of the mesh scenes the repository carries at .ai/repo/observatory/recording.json, which the Observatory draws, labelled as a replay, where no mesh runs. Absent is present: false; a file that cannot be read is an error.
The recording of the mesh scenes the repository carries at .ai/repo/observatory/recording.json, which the Observatory draws, labelled as a replay, where no mesh runs. Absent is present: false; a file that cannot be read is an error.
- query
- behaviorally_verified
- module observatory
- #observatory
- #mesh
- #ui
Exposure
Where this one definition is reachable. Absence is explicit: a surface not listed does not carry it.
| surface | as |
|---|---|
| MCP | tool majordomus_observatory_replay |
| HTTP | GET /api/v1/observatory/replay operationId observatory.replay |
| command line | — |
Schemas
The canonical input and output, from the Rust types; the MCP tool schema and the OpenAPI parameters and responses are derived from these.
input · Empty
No properties: the capability takes no input.
JSON Schema
{
"additionalProperties": false,
"description": "No input.",
"title": "Empty",
"type": "object"
}output · ObservatoryReplay
use majordomus_cli::capability::builtin::observatory::{replay_at, ObservatoryReplay, RECORDING};
let dir = tempfile::tempdir().unwrap();
let none: ObservatoryReplay = replay_at(dir.path()).unwrap();
assert!(!none.present && none.recording.is_none());
assert_eq!(none.path, RECORDING);| property | type | required | description |
|---|---|---|---|
| path | string | yes | The file it is read from. |
| present | boolean | yes | Whether the repository carries a recording. |
| recording | one of 2 | no | The recording. |
JSON Schema
{
"$defs": {
"ObservatoryRecording": {
"description": "The mesh scenes of one process at one moment, fit for publication.\n\n```\nuse majordomus_cli::capability::builtin::observatory::ObservatoryRecording;\nlet r: ObservatoryRecording = serde_json::from_value(serde_json::json!({\n \"schema\": \"observatory-recording/v1\", \"recorded_at\": \"2026-10-14T05:00:00Z\", \"scenes\": {},\n \"manifest\": { \"sources\": [], \"removed\": [] },\n})).unwrap();\nassert!(r.scenes.is_empty() && r.revision.is_none());\n```",
"properties": {
"manifest": {
"$ref": "#/$defs/RecordingManifest",
"description": "What the recording is a record of, and what it leaves out."
},
"recorded_at": {
"description": "When the scenes were read.",
"type": "string"
},
"revision": {
"description": "The commit the recording process stood at, short; absent when it could not say.",
"type": [
"string",
"null"
]
},
"scenes": {
"additionalProperties": true,
"description": "Each recorded scene's model, by scene id; a scene the process had nothing live for is\nabsent, never empty.",
"type": "object"
},
"schema": {
"description": "`RECORDING_SCHEMA`.",
"type": "string"
}
},
"required": [
"schema",
"recorded_at",
"scenes",
"manifest"
],
"type": "object"
},
"RecordingManifest": {
"description": "What a recording is a record of: the capabilities read, the window of events it holds,\nand what was removed from what they answered, with the reason.\n\n```\nuse majordomus_cli::capability::builtin::observatory::RecordingManifest;\nlet m: RecordingManifest = serde_json::from_value(serde_json::json!({\n \"sources\": [\"mesh.events\"], \"removed\": [\"event bodies\"],\n})).unwrap();\nassert!(m.window.is_none(), \"a recording that holds no event has no window\");\n```",
"properties": {
"removed": {
"description": "Every kind of thing removed before publication, and why.",
"items": {
"type": "string"
},
"type": "array"
},
"sources": {
"description": "The capabilities whose answers the recorded scenes were projected from.",
"items": {
"type": "string"
},
"type": "array"
},
"window": {
"anyOf": [
{
"$ref": "#/$defs/RecordingWindow"
},
{
"type": "null"
}
],
"description": "The first and last event the recording holds, by time and by logical clock; absent\nwhen it holds none."
}
},
"required": [
"sources",
"removed"
],
"type": "object"
},
"RecordingWindow": {
"description": "The events a recording holds, from first to last.\n\n```\nuse majordomus_cli::capability::builtin::observatory::RecordingWindow;\nlet w = RecordingWindow { events: 2, from_at: Some(100), to_at: Some(160), from_lamport: Some(9), to_lamport: Some(10) };\nassert_eq!(w.to_at.unwrap() - w.from_at.unwrap(), 60, \"a minute of the journal\");\n```",
"properties": {
"events": {
"description": "How many events.",
"format": "uint",
"minimum": 0,
"type": "integer"
},
"from_at": {
"description": "The earliest event's time, in seconds since the epoch.",
"format": "uint64",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"from_lamport": {
"description": "The smallest logical clock.",
"format": "uint64",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"to_at": {
"description": "The latest event's time, in seconds since the epoch.",
"format": "uint64",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"to_lamport": {
"description": "The largest logical clock.",
"format": "uint64",
"minimum": 0,
"type": [
"integer",
"null"
]
}
},
"required": [
"events"
],
"type": "object"
}
},
"description": "The recording the repository carries, or that it carries none.\n\n```\nuse majordomus_cli::capability::builtin::observatory::{replay_at, ObservatoryReplay, RECORDING};\nlet dir = tempfile::tempdir().unwrap();\nlet none: ObservatoryReplay = replay_at(dir.path()).unwrap();\nassert!(!none.present && none.recording.is_none());\nassert_eq!(none.path, RECORDING);\n```",
"properties": {
"path": {
"description": "The file it is read from.",
"type": "string"
},
"present": {
"description": "Whether the repository carries a recording.",
"type": "boolean"
},
"recording": {
"anyOf": [
{
"$ref": "#/$defs/ObservatoryRecording"
},
{
"type": "null"
}
],
"description": "The recording."
}
},
"required": [
"present",
"path"
],
"title": "ObservatoryReplay",
"type": "object"
}Policies
- benchmark
- required — a target on every transport the exposure declares; the cases are the input type's
- cache
- disabled — every call runs the handler
Benchmark targets
Derived from the registry for this repository: one requirement per transport, and the cases the input type provides. The whole matrix is on the benchmarks page.