telemetry-privacy-review
Use this skill before changing mesh-llm OTLP metrics, exporter activation, or
telemetry attribute names.
Review Contract
- Keep telemetry metrics-only. Do not export prompts, completions, logs, traces,
hostnames, mesh gossip, relay messages, raw node IDs, raw GPU stable IDs,
endpoint URLs, local absolute paths, or prompt hashes.
- Keep egress explicit. There must be no hard-coded collector. Generic OTel env
endpoints may only be consumed after
telemetry.enabled = true; mesh config
endpoints are explicit operator configuration.
- Treat hashed IDs as stable pseudonymous identifiers, not anonymous data.
- Keep request-path telemetry non-blocking and bounded.
- Keep model labels sanitized with the runtime telemetry model-label helper.
- Prefer bounded enums, buckets, counts, and hashes over high-cardinality raw
values.
Required Updates
- Update
TELEMETRY_ATTRIBUTE_ALLOWLIST in
crates/mesh-llm/src/runtime/survey.rs for every new exported attribute.
- Update
docs/plugins/telemetry.md with the metric or attribute inventory and
privacy handling.
- Add focused tests for private-path, raw-ID, endpoint-URL, prompt, and
completion exclusion when the change touches those surfaces.
Validation
Run the narrowest relevant checks for the touched area. For telemetry runtime
changes, start with:
cargo test -p mesh-llm runtime::survey::tests --lib
cargo test -p mesh-llm telemetry_config --lib
If routing telemetry changed, also run the focused mesh routing telemetry test:
cargo test -p mesh-llm routing_telemetry_sink_receives_request_pressure_and_attempt_events --lib
1---2name: telemetry-privacy-review3description: Use this skill when adding, renaming, removing, or reviewing mesh-llm OTLP metrics, telemetry attributes, metrics exporter settings, or telemetry documentation.4---56# telemetry-privacy-review78Use this skill before changing mesh-llm OTLP metrics, exporter activation, or9telemetry attribute names.1011## Review Contract1213- Keep telemetry metrics-only. Do not export prompts, completions, logs, traces,14 hostnames, mesh gossip, relay messages, raw node IDs, raw GPU stable IDs,15 endpoint URLs, local absolute paths, or prompt hashes.16- Keep egress explicit. There must be no hard-coded collector. Generic OTel env17 endpoints may only be consumed after `telemetry.enabled = true`; mesh config18 endpoints are explicit operator configuration.19- Treat hashed IDs as stable pseudonymous identifiers, not anonymous data.20- Keep request-path telemetry non-blocking and bounded.21- Keep model labels sanitized with the runtime telemetry model-label helper.22- Prefer bounded enums, buckets, counts, and hashes over high-cardinality raw23 values.2425## Required Updates2627- Update `TELEMETRY_ATTRIBUTE_ALLOWLIST` in28 `crates/mesh-llm/src/runtime/survey.rs` for every new exported attribute.29- Update `docs/plugins/telemetry.md` with the metric or attribute inventory and30 privacy handling.31- Add focused tests for private-path, raw-ID, endpoint-URL, prompt, and32 completion exclusion when the change touches those surfaces.3334## Validation3536Run the narrowest relevant checks for the touched area. For telemetry runtime37changes, start with:3839```bash40cargo test -p mesh-llm runtime::survey::tests --lib41cargo test -p mesh-llm telemetry_config --lib42```4344If routing telemetry changed, also run the focused mesh routing telemetry test:4546```bash47cargo test -p mesh-llm routing_telemetry_sink_receives_request_pressure_and_attempt_events --lib48```