"Telemetry trust boundary and SSOT map"

Telemetry trust boundary and SSOT map

Purpose

This page is the normative documentation map for telemetry, observability, and trust boundaries in Vox. It complements:

Critique of the original research-only plan (folded)

The first telemetry-trust research pass was correct to defer code and schema changes. For implementation, the following gaps must stay explicit:

  1. Environment variable SSOT drift: VOX_BENCHMARK_TELEMETRY and VOX_SYNTAX_K_TELEMETRY are implemented in crates/vox-cli/src/benchmark_telemetry.rs and must appear in Environment variables (SSOT) alongside deeper docs in orchestration-unified and mens-training.
  2. Machine contracts beyond research_metrics: context-lifecycle-telemetry.schema.json is part of the telemetry vocabulary; it is not optional detail.
  3. ci_completion_* is workspace-adjacent: Tables defined in crates/vox-db/src/schema/domains/ci_completion.rs carry paths and metadata. They are not interchangeable with coarse product telemetry without a separate sensitivity class (see Telemetry retention and sensitivity SSOT).
  4. VS Code and debug surfaces: The extension webview uses a telemetry tab id for local dashboards; that naming can collide with user expectations about “phone-home” telemetry. vscode-mcp-compat documents vox.mcp.debugPayloads — high sensitivity and must sit inside the same trust framework as Ludus MCP arg modes.
  5. Governance hooks: New operations and drift checks must stay aligned with operations catalog, data-ssot-guards, and CHANGELOG.
  6. Build timing telemetry: Shallow vox ci build-timings and deep --deep paths write UsageTelemetry-class signals (coarse timings, crate names, dependency-shape summaries). Canonical structured rows live in build_run / build_crate_sample / build_warning / build_run_dependency_shape; summarized benchmark_event rows use VOX_BENCHMARK_TELEMETRY (see telemetry-metric-contract “Build timing producers”). Query via MCP vox_benchmark_list with source=build_health|build_regressions|build_warnings|dependency_shape. Retention aligns with retention-policy.yaml and telemetry-retention-sensitivity-ssot.

Authoritative SSOT set (no duplicate primaries)

ConcernPrimary SSOTSecondary / derivative
research_metrics row shape, session prefixes, validationtelemetry-metric-contract, research_metrics_contract.rsCrate doc comments
Env names and rolesenv-varsorchestration-unified, mens-training, populi SSOT
Table TTL hints for pruneretention-policy.yamldb retention CLI
Completion CI telemetry schemascontracts/telemetry/completion-*.v1.schema.jsoncompletion-policy-ssot
Context lifecycle tracing fieldscontext-lifecycle-telemetry.schema.jsoncontext_lifecycle.rs
Taxonomy and event families (rollout)telemetry-taxonomy-contracts-ssotcontracts under contracts/telemetry/
Client disclosure and debugtelemetry-client-disclosure-ssotvox-vscode README
Build timing + build_* observabilitytelemetry-metric-contract, crate-build-lanes-migration, ops_build.rsvox ci build-timings; MCP vox_benchmark_list (source for build_*); CI may set VOX_BENCHMARK_TELEMETRY
agent_exec_history timingexec_time_telemetry.rs (S1)agent_exec_time
Secrets for any future upload endpointAGENTS.md, Clavis

Trust planes (normative vocabulary)

Use these terms consistently in docs and code comments:

PlaneMeaningDefault posture
UsageTelemetryCoarse, low-entropy signals for product improvementLocal-first; remote only with explicit opt-in (future)
DiagnosticsSupport bundles, debug logs, user-reviewed exportExplicit action; never default remote
ContentPersistenceChat, tool args, retrieval, transcriptsLocal / operator store; not “telemetry” without separate consent story
OperationalTracingStructured logs and local JSONLLocal; treat as sensitive if identifiers or content leak

A2A dogfood JSONL: MCP may append optional a2a_traces.jsonl under a dogfood trace directory. That file is OperationalTracing-class convenience only; it is not interchangeable with Codex a2a_messages or mesh delivery logs.

Contributor rule

Any change that adds or widens data collection, persistence, or export must update:

  1. the relevant contract or SSOT doc,
  2. CHANGELOG,
  3. retention or sensitivity SSOT if TTL or class changes,
  4. operations catalog / CLI registry if a new operator-facing command or flag is introduced.

See doc-to-code acceptance checklist.