"Capability registry SSOT"

Capability registry SSOT

Vox maps semantic capabilities (what an agent or human is allowed to do) separately from transports (CLI, MCP, runtime builtins, HTTP). The machine-readable source of truth lives under contracts/capability/.

Canonical artifacts

ArtifactRole
contracts/capability/capability-registry.yamlGenerated from catalog.v1.yaml (capability: block + curated projections); do not hand-edit
contracts/capability/capability-registry.schema.jsonJSON Schema for the YAML
contracts/capability/model-manifest.generated.jsonPlanner-oriented manifest (generated; do not hand-edit)

The Rust crate vox-capability-registry loads the document, validates cross-registry consistency against the MCP tool registry and active CLI paths from contracts/cli/command-registry.yaml (also catalog-projected), and builds the model manifest.

ID conventions

  • Curated IDs use dotted namespaces such as mcp.vox_oratio_transcribe or cli.repo.status and must align with real registry paths or MCP tool names when cli_paths / mcp_tool are set.
  • Implicit MCP: when auto_mcp_capabilities is true, every tool in contracts/mcp/tool-registry.canonical.yaml receives mcp.<tool_name> unless exempted.
  • Implicit CLI: when auto_cli_capabilities is true, every active vox-cli path in the command registry receives cli.<segment1>.<segment2>… unless the path appears under exemptions.cli_paths (umbrella commands that are intentionally not one-to-one with a single capability).

CI and local workflows

  • vox ci command-compliance — JSON Schema validation for capability-registry.yaml, parse + validate_cross_registry (curated CLI paths and MCP tools must exist).
  • vox ci capability-sync [--write] — Regenerates or verifies model-manifest.generated.json from the live capability doc + MCP + CLI registries. ssot-drift runs capability-sync in verify-only mode after command-compliance.
  • MCP — read-only tool vox_capability_model_manifest returns the same merged JSON live from the workspace root (no args), for agents connected to vox-mcp.
  • CLI (--features dei)vox dei workspace …, vox dei snapshot …, vox dei oplog …, and vox dei takeover-status (aggregated handoff JSON) share payloads with MCP tools via vox_orchestrator::json_vcs_facade.

Agent VCS and codegen contracts

Naming across transports

  • MCP — tool ids use vox_snake_case in tool-registry.canonical.yaml.
  • CLI — segments use kebab-case; implicit capability ids join segments with dots (e.g. vox dei workspace createcli.dei.workspace.create).
SurfaceExample
CLIvox repo status
MCPvox_repo_status
Implicit capabilitycli.repo.status / mcp.vox_repo_status
CLIvox init …
MCPvox_project_init
Implicit capabilitycli.init / mcp.vox_project_init

Cross-repo catalog queries stamp CrossRepoQueryTrace.source_plane as cli or mcp via vox_repository::repo_query_*_with_plane.

Visualization

Concrete view sketches and data sources: Capability visualization views. Until those ship, use vox_capability_model_manifest, vox dei takeover-status, and vox ci capability-sync for inspection.

After editing capability metadata, change contracts/operations/catalog.v1.yaml (operation rows + capability: block), then:

cargo run -p vox-cli -- ci operations-sync --target capability --write
cargo run -p vox-cli -- ci capability-sync --write

(from the repo root; Bash equivalent: same args after cargo run -p vox-cli --.)

Mens and legacy aliases

Mens-oriented chat tool schemas may still accept legacy capability labels such as oratio.transcribe; canonical curated IDs in the registry use mcp.vox_oratio_*. Parameter schemas are resolved in vox-capability-registry (mens_chat_parameters).

Runtime builtins vs CLI / MCP

Language builtins such as std.fs / path / process helpers are not the same transport as MCP tools or vox CLI commands. Where semantics align, capability-registry.yaml may list runtime_builtin_maps so planners see a single capability id across surfaces. Prefer MCP or CLI for repo-scoped, policy-governed work; keep builtins for in-script sandboxed I/O. Detailed interop tiers: Interop tier policy.

Source of truth

Edit only contracts/operations/catalog.v1.yaml. Regenerate capability-registry.yaml with vox ci operations-sync --target capability --write. Implicit mcp.* / cli.* coverage plus curated rows stay enforced via vox ci command-compliance / vox ci operations-verify.