# Upstream OpenTelemetry Collector self-metric names (canonical set).
#
# Provenance:
#   binary            otelcol-contrib
#   version           v0.146.1
#   matches           production image otel/opentelemetry-collector-contrib:0.146.1
#                     (k8s/base/statefulset.yaml)
#   source            github.com/open-telemetry/opentelemetry-collector-releases
#                     releases/download/v0.146.1/otelcol-contrib_0.146.1_linux_amd64.tar.gz
#   archive_sha256    a2e866f21d482f9035d8898337b4e473578ae2a11d57d5265818bb460ca7b0aa
#   binary_sha256     859c4566b862d03ebdc998d03c722241bdcff7ac2fbc13f503f9fa5ebd6b6459
#   captured_at       2026-08-05T14:01Z (drill for story 6-22 round 4)
#   fixture           mca-prototype/tests/docs/fixtures/drill.yaml (committed)
#
# The fixture engages traces + metrics + logs pipelines through a batch
# processor into (a) a debug exporter (known-good) and (b) an otlp/broken
# exporter with sending_queue enabled that always fails to connect. This
# exercises every runbook-referenced counter for each signal type.
#
# How to refresh (deterministic; no ad-hoc runtime state):
#   1. Fetch and verify the release archive:
#        curl -sSL <URL above> -o /tmp/otelcol.tgz
#        echo 'a2e866f21d482f9035d8898337b4e473578ae2a11d57d5265818bb460ca7b0aa  /tmp/otelcol.tgz' | sha256sum -c -
#      (Bump the sha256 and version at the top of this file when refreshing.)
#   2. Extract otelcol-contrib and boot it against the committed fixture:
#        tar -xzf /tmp/otelcol.tgz otelcol-contrib
#        ./otelcol-contrib --config mca-prototype/tests/docs/fixtures/drill.yaml &
#   3. Fire ~10 valid OTLP requests per signal (traces, metrics, logs) +
#      a handful of malformed ones — see docs/RUNBOOK.md § "Real Collector
#      drill" or the story doc for the exact curl payloads.
#   4. Snapshot the emitted metric names:
#        curl -s http://127.0.0.1:8888/metrics | awk '/^# TYPE otelcol_/ {print $3}' | sort -u
#   5. Replace the "live-captured" block below with the new output. Do NOT
#      hand-append metrics; anything that isn't emitted by the fixture drill
#      belongs in the "documented but not emitted" section with a citation.
#
# Rationale: the SDK's runbook references these metric names for diagnostic
# grep commands. Hard-coding the set inside a Python test would be
# self-declared. This file is the pinned upstream source of truth, produced
# by running the committed fixture, and it's the union the runbook is
# validated against.
#
# --- LIVE-CAPTURED FROM v0.146.1 FIXTURE DRILL (23 metrics) ---
otelcol_exporter_queue_capacity
otelcol_exporter_queue_size
otelcol_exporter_sent_log_records_total
otelcol_exporter_sent_metric_points_total
otelcol_exporter_sent_spans_total
otelcol_process_cpu_seconds_total
otelcol_process_memory_rss_bytes
otelcol_process_runtime_heap_alloc_bytes
otelcol_process_runtime_total_alloc_bytes_total
otelcol_process_runtime_total_sys_memory_bytes
otelcol_process_uptime_seconds_total
otelcol_processor_batch_batch_send_size
otelcol_processor_batch_metadata_cardinality
otelcol_processor_batch_timeout_trigger_send_total
otelcol_receiver_accepted_log_records_total
otelcol_receiver_accepted_metric_points_total
otelcol_receiver_accepted_spans_total
otelcol_receiver_failed_log_records_total
otelcol_receiver_failed_metric_points_total
otelcol_receiver_failed_spans_total
otelcol_receiver_refused_log_records_total
otelcol_receiver_refused_metric_points_total
otelcol_receiver_refused_spans_total

# --- DOCUMENTED BUT NOT EMITTED BY THIS FIXTURE ---
# These names appear in v0.146.1 upstream source but require conditions the
# fixture doesn't reproduce. Each entry cites the source path in
# opentelemetry-collector v0.146.x so a future refresh can verify the
# claim without re-running the drill. Do not add speculative names here.
#
#   Source: exporter/exporterhelper/queue_sender.go — emitted only when an
#     enqueue attempt overflows the sending_queue (queue_size=4 is small
#     enough to trigger it under sustained load; the fixture's short burst
#     doesn't overflow because the retry timer holds items in-queue).
otelcol_exporter_enqueue_failed_spans_total
otelcol_exporter_enqueue_failed_metric_points_total
otelcol_exporter_enqueue_failed_log_records_total
#
#   Source: exporter/exporterhelper/base_exporter.go — emitted after
#     retry_on_failure gives up. The fixture's initial_interval=2s and
#     default max_interval=30s means the collector is still retrying at
#     drill-end; send_failed_* would appear if the drill ran long enough
#     for retry backoff to reach its ceiling.
otelcol_exporter_send_failed_spans_total
otelcol_exporter_send_failed_metric_points_total
otelcol_exporter_send_failed_log_records_total
#
#   Source: exporter/exporterhelper/base_exporter.go (Prometheus histogram)
#     — emitted on successful export attempts. The fixture's broken exporter
#     never succeeds; the debug exporter is synchronous and doesn't record
#     send_duration. In production this histogram appears whenever the
#     googlecloud exporter completes a batch.
otelcol_exporter_send_duration_seconds
