Skip to main content

Capabilities manifest

The capabilities manifest is a structured, machine-readable description of what the running exd telemetry install can do: which commands exist, what parameters they accept, what output shapes they produce, and which T-codes they may emit.

It is the agent-discoverable counterpart to this reference. An agent encountering an unfamiliar exd install reads the capabilities manifest first and plans from there, instead of relying on documentation that may have been written against a different version.

This is the telemetry analogue of an OpenAPI document for an HTTP API.


Endpoint

exd telemetry capabilities --format json

The command MUST succeed without network access and without read access to any evaluation data. The capabilities manifest describes the install itself; it is independent of any data the install can read.

--format human renders a human-readable table. --format json is the normative form and is what agents consume.

CLI use cases live in reference/cli/exd/telemetry/capabilities.


Top-level shape

{
"spec_version": 1,
"exd_version": "0.5.0",
"schema_version": 1,
"engines": [
{ "name": "duckdb", "version": "1.0.0", "default": true },
{ "name": "snowflake", "version": null, "default": false }
],
"commands": [ ... ],
"queries": [ ... ],
"diagnostics": [ ... ],
"schemas": { ... }
}
FieldRequiredTypeDescription
spec_versionyesintegerThe telemetry spec version this install conforms to. Currently 1.
exd_versionyesstringThe version of exd-client providing this install.
schema_versionyesintegerThe EvaluationRecord schema version this install produces and consumes.
enginesyesarraySupported query engines. The first entry with default: true is the engine used when --engine is omitted.
commandsyesarrayEvery exd telemetry subcommand.
queriesyesarrayEvery user-defined query discovered in the manifest's queries/ directory. Empty in Phase 1 — see § queries entry.
diagnosticsyesarrayEvery T-code this install knows about.
schemasyesobjectJSON Schemas referenced by commands[].output_schema_ref and diagnostics[].data_schema_ref.

commands entry

{
"name": "telemetry.summary",
"alias": "summary",
"description": "Per-flag eval counts and variant distribution.",
"stability": "stable",
"parameters": [
{ "name": "flag", "type": "key", "required": false },
{ "name": "since", "type": "duration", "required": true },
{ "name": "compare_to", "type": "duration", "required": false }
],
"output_schema_ref": "#/schemas/summary-result",
"diagnostics": ["T007", "T008", "T009", "T010"],
"engines": ["duckdb", "snowflake", "bigquery", "databricks", "redshift"]
}
FieldRequiredTypeDescription
nameyesstringStable identifier. Mirrors the named-query form (telemetry.<name> for built-ins).
aliasnostringTop-level CLI alias if one exists (e.g. summary for telemetry.summary).
descriptionyesstringOne-line description.
stabilityyesenumstable, experimental, or deprecated.
parametersyesarrayParameter declarations (see below).
output_schema_refyesstringJSON-Pointer reference into schemas.
diagnosticsnoarray of T-codeDiagnostics this command may emit.
enginesyesarrayEngines that support this command.

Parameter declaration

FieldRequiredTypeDescription
nameyesstringParameter name.
typeyesstringOne of the parameter types listed in query-catalog § [parameters.<name>].
requiredyesboolWhether the parameter is required.
defaultnomatching typeDefault value if not required.
descriptionnostringFree-form.

queries entry

Deferred indefinitely. With the user-defined query catalog deferred, queries is always an empty array in Phase 1 outputs. The shape below describes what entries would carry if user-defined queries were reintroduced. The field stays in the top-level envelope so consumers don't need to special-case its presence.

User-defined queries discovered in the manifest's queries/ directory would be reflected here when exd telemetry capabilities is run from inside a manifest repo. Each entry has the same shape as a commands entry, plus:

Additional fieldRequiredTypeDescription
versionyesintegerThe query's declared version.
source_pathyesstringPath to the query file relative to the manifest root.

diagnostics entry

{
"code": "T001",
"severity": "warning",
"summary": "Sample-ratio mismatch detected.",
"data_schema_ref": "#/schemas/T001-data",
"stability": "stable"
}
FieldRequiredTypeDescription
codeyesstringThe T-code.
severityyesenuminfo, warning, or error.
summaryyesstringOne-line description.
data_schema_refyesstringJSON-Pointer reference into schemas for the diagnostic's data payload.
stabilityyesenumstable, experimental, or deprecated.

schemas block

The schemas field is a JSON object whose values are JSON Schema documents. Both commands[].output_schema_ref and diagnostics[].data_schema_ref resolve into this object using JSON-Pointer syntax (#/schemas/<name>).

The reference Rust implementation embeds these schemas at build time so that exd telemetry capabilities can produce them with no I/O. Schemas use JSON Schema Draft 2020-12.


Stability and tolerance

The capabilities manifest is itself versioned by the spec_version field. Compatibility expectations:

  • Forward compatibility for agents. Agents consuming the capabilities manifest MUST tolerate unknown fields, unknown commands, unknown diagnostic codes, and unknown engines by ignoring them, not by failing.
  • Backward compatibility for installs. An exd-client of spec version N MUST be able to produce a capabilities manifest accepted by an agent reading at spec version N or N-1.
  • Discovery first. Agents SHOULD query exd telemetry capabilities once per session and reason from the result, rather than encoding command shapes at the agent level.

Generating the capabilities manifest

The reference implementation lives in crates/exd-client/src/telemetry/capabilities.rs. It is generated by introspecting:

  1. The compiled set of built-in telemetry.* queries.
  2. The T-code registry.
  3. The set of registered query engines (gated on Cargo features).
  4. (Deferred indefinitely) User-defined queries discovered by walking the manifest repo's queries/ directory. In Phase 1 the manifest-repo walk does not run and queries is emitted as an empty array.

Generation is deterministic. Agents that cache the capabilities manifest can detect drift by comparing the exd_version field across runs.


See also