028-opentelemetry-evidence-sink

OpenTelemetry evidence sink and redaction policy

Lifecycle approvedImplementation completeVerification unknownQualification unknown

Approved (A-24) as its own reviewable change before code; implemented in seven increments. A new optional integration, `integrations/rustev-otel`, exports each delivered run record as OpenTelemetry spans, metrics and optional log records, with GenAI semantic-convention attributes on backend attempts, W3C trace-context parenting from the host, OTLP over gRPC or HTTP to allowlisted host collectors only, and a local JSONL exporter. Every exported field passes a declared redaction policy, `rustev.redaction/1`, that defaults to deny for caller, third-party, attributed-claim and generated text. The policy document, its evaluation, the keyed digest and the `rustev.trace/1` span line document are pure additions to `rustev-contract`; `rustev trace tail` is added to the CLI with no OpenTelemetry dependency; the boundary check gains the telemetry exporter family. Approval does not authorize a release, a deployment, an export to any collector outside tests, or real-user data.

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "directory",
      "path": "integrations/rustev-otel/"
    }
  • extends
    {
      "nature": "additive",
      "spec": "002-decision-contract-and-pure-core",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-contract/"
      }
    }
  • extends
    {
      "nature": "amending",
      "spec": "006-cli-surface",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-cli/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-boundaries-and-authority",
      "unit": {
        "kind": "directory",
        "path": "tools/rustev-boundaries/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-boundaries-and-authority",
      "unit": {
        "kind": "file",
        "path": "Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-boundaries-and-authority",
      "unit": {
        "kind": "file",
        "path": "Cargo.lock"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "031-public-api-and-release-family",
      "unit": {
        "kind": "directory",
        "path": "tools/rustev-release/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-boundaries-and-authority",
      "unit": {
        "kind": "file",
        "path": "Makefile"
      }
    }

Source headings

  1. 028: OpenTelemetry evidence sink and redaction policy
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 3.1 Placement of the pure parts
  6. 3.2 Pinned conventions and schema versions
  7. 3.3 Field classes
  8. 3.4 Redaction policy
  9. 3.5 Span model
  10. 3.6 Metrics and logs
  11. 3.7 Trace context, plans and exchange records
  12. 3.8 Sink policies, acknowledgement and loss
  13. 3.9 Export and endpoint allowlist
  14. 3.10 The JSONL development exporter and `rustev.trace/1`
  15. 3.11 `rustev trace tail`
  16. 3.12 Dependency boundary
  17. 3.13 Binding principles
  18. 3.14 Overhead benchmark
  19. 4. Out of scope
  20. 5. Observable negative cases
  21. Acceptance
  22. Verification
  23. Implementation record
  24. Decisions at approval

Frozen anchors

No frozen anchors declared.