Task · MDE-0056

Enforce the fixed data-log event vocabulary before creating Prometheus series

Description

Audit dimension 3 confirmed a preventive cardinality gap at the v2.0.0 release tree. src/meraki_dashboard_exporter/core/otel_data_logs.py:81 defines BUILT_IN_EVENTS from DataLogEvent, but is_event_enabled at lines 301-305 checks only global enablement and the configured allowlist. emit at lines 335-370 then uses any supplied string as the event.name attribute and as the event label on the emitted/dropped Prometheus counters. All current producers use enum members, so this is preventive rather than a present unbounded producer; however, a future API-derived name or typo explicitly allowlisted can create one self-observability series per value despite the documented fixed vocabulary. Existing tests even allow some.other.event and do not assert rejection of unknown emitted values.

Acceptance Criteria

Definition of Done

Implementation Plan

Write a failing unknown-event regression proving no OTLP record, status entry or Prometheus series is created; enforce BUILT_IN_EVENTS at the validation point and retain all built-in/default/allowlist paths.

Final Summary

Rejected unknown OTel data-log event names before Prometheus series creation. The failing regression was observed before the fix; just check and just ci passed at 5e8d9c23b76a2f2edd531c15c776cbfbcc9134fa; exact-head CI 33843833956 and publication 33843966820 succeeded.

View the source file on GitHub