observatory.capture
Scény mesh Observatoře tak, jak je tento proces má živě, způsobilé k publikaci: stroje, runtime, relace a události podle pořadí, událost jen podle jejího druhu, logických hodin a času. Nic nezapisuje; commit odpovědi do .ai/repo/observatory/recording.json je to, co ji publikuje.
Scény mesh Observatoře tak, jak je tento proces má živě, způsobilé k publikaci: stroje, runtime, relace a události podle pořadí, událost jen podle jejího druhu, logických hodin a času. Nic nezapisuje; commit odpovědi do .ai/repo/observatory/recording.json je to, co ji publikuje.
- query
- behaviorally_verified
- module observatory
- #observatory
- #mesh
- #ui
Zpřístupnění
Kde je tato jedna definice dosažitelná. Absence je explicitní: povrch, který není uveden, ji nenese.
| povrch | jako |
|---|---|
| MCP | nástroj majordomus_observatory_capture |
| HTTP | GET /api/v1/observatory/capture operationId observatory.capture |
| příkazová řádka | — |
Schémata
Kanonický vstup a výstup z typů Rustu; schéma nástroje MCP a parametry a odpovědi OpenAPI se odvozují z nich.
vstup · Prázdné
Žádné vlastnosti: schopnost nebere žádný vstup.
JSON Schema
{
"additionalProperties": false,
"description": "No input.",
"title": "Empty",
"type": "object"
}výstup · ObservatoryRecording
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());| vlastnost | typ | povinné | popis |
|---|---|---|---|
| manifest | reference | ano | Čeho je záznam záznamem a co vynechává. |
| recorded_at | string | ano | Kdy byly scény přečteny. |
| revize | string | null | ne | Commit, na kterém záznamový proces stál, zkráceně; chybí, když to neuměl říct. |
| scény | object | ano | Model každé zaznamenané scény podle id scény; scéna, pro kterou proces neměl nic živého, chybí, nikdy není prázdná. |
| schema | string | ano | 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"
}Politiky
- benchmark
- povinné — cíl na každém transportu, který expozice deklaruje; případy jsou ty ze vstupního typu
- cache
- vypnuto — každé volání spustí handler
Cíle benchmarku
Odvozeno z registru pro tento repozitář: jeden požadavek na transport a případy, které poskytuje typ vstupu. Celá matice je na stránce měření výkonu.