Skip to content

observatory.capture

The mesh scenes of the Observatory as this process has them live, fit for publication: machines, runtimes, sessions and events by ordinal, an event by its kind, logical clock and time only. Writes nothing; committing the answer to .ai/repo/observatory/recording.json is what publishes it.

The mesh scenes of the Observatory as this process has them live, fit for publication: machines, runtimes, sessions and events by ordinal, an event by its kind, logical clock and time only. Writes nothing; committing the answer to .ai/repo/observatory/recording.json is what publishes it.

Exposure

Where this one definition is reachable. Absence is explicit: a surface not listed does not carry it.

surfaceas
MCPtool majordomus_observatory_capture
HTTPGET /api/v1/observatory/capture operationId observatory.capture
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 input.

No properties: the capability takes no input.

JSON Schema
{
  "additionalProperties": false,
  "description": "No input.",
  "title": "Empty",
  "type": "object"
}

output · ObservatoryRecording

The mesh scenes of one process at one moment, fit for publication.

use majordomus_cli::capability::builtin::observatory::ObservatoryRecording;
let r: ObservatoryRecording = serde_json::from_value(serde_json::json!({
    "schema": "observatory-recording/v1", "recorded_at": "2026-10-14T05:00:00Z", "scenes": {},
    "manifest": { "sources": [], "removed": [] },
})).unwrap();
assert!(r.scenes.is_empty() && r.revision.is_none());
propertytyperequireddescription
manifest reference yes What the recording is a record of, and what it leaves out.
recorded_at string yes When the scenes were read.
revision string | null no The commit the recording process stood at, short; absent when it could not say.
scenes object yes Each recorded scene's model, by scene id; a scene the process had nothing live for is absent, never empty.
schema string yes RECORDING_SCHEMA.
JSON Schema
{
  "$defs": {
    "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 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"
  ],
  "title": "ObservatoryRecording",
  "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.

transportstatecasestargets
directcovered1default
mcpcovered1default
httpcovered1default

Searches the titles and descriptions of every page this site publishes.