Document · doc-0003

Closed GitHub issues (pre-Backlog history index)

GitHub Issues was retired as this project’s tracker on 2026-08-14, after 449 closed issues. This document is the index of that history. It is the record of what happened; the board (backlog task list --plain) is the record of what is left.

Why these were not imported as tasks

A second ID space could never carry the numbers the history already cites. Backlog IDs follow creation order, so #526 would have become some unrelated mde-NNNN — while 901 commits, the per-directory CLAUDE.md files, code comments and the issue bodies themselves all say #526. Keeping the GitHub numbers as the only ID space over this history is what keeps those citations resolvable. 420 of the 449 resolve to at least one commit, listed below.

The second reason is signal. 449 Done rows would drown a five-task board, and the only thing a board is for is showing what is left. One index doc costs one file and loads on demand.

Twelve were closed not planned — deliberate decisions not to do something, which are the rows most worth reading before re-proposing an idea.

The five open issues that became tasks

These were live work when the tracker moved, so they crossed over. Their bodies were rewritten to be self-contained on the task, since they can no longer be read on GitHub.

was is now
#717 Investigate the duration-histogram arithmetic that the code says is impossible mde-0001
#712 Helm resource defaults sized from a measured MEDIUM fleet mde-0002
#721 Gate merges on change-scoped scanners and publication on severity mde-0003
#691 MV: plan migration off the deprecated camera analytics endpoints mde-0004
#694 Tracker: v1.1 production-hardening programme milestone v1.1-hardening + the Hardening programme standing decisions doc

#694 became no task of its own: it was a parent whose only remaining acceptance was “children done”, which the milestone expresses. Its frozen decisions D1–D18 and its carried-forward corrections are durable reference, so they are their own doc.

The TODO(CFG-BIG) residue in app.py, which had no issue at all, became mde-0005.

How to read a row

outcome is GitHub’s own state reason: completed for work that landed or was resolved, not planned for a deliberate decision against it. commits lists every commit on every ref whose subject or body cites #NNN, so a row with several commits usually means the work landed in stages, and a row with none was closed without a code change (a decision, a duplicate, or a docs-only change that did not cite it).

Bodies, acceptance criteria and comment threads are not on GitHub any more. The same 2026-08-14 migration deleted the 444 issues authored by the maintainer and by CI, after capturing all 455 issues and 642 comments to archive/github-issues-2026-08-14.json, so gh issue view <N> 404s for the rows below. Read them there instead:

jq '.[] | select(.number == 694)' archive/github-issues-2026-08-14.json
jq -r '.[] | select(.number == 694) | .comments[].body' archive/github-issues-2026-08-14.json

The archive is redacted — device serials, MACs, network IDs and names, organisation IDs, street addresses, coordinates and host names are replaced by stable placeholders, one token per real value. archive/README.md carries the mapping and the verification method.

Eleven issues were not deleted and are still readable on GitHub: the nine filed by outside contributors, and Renovate’s two dependency dashboards. They are in the archive too.

# closed outcome title commits
726 2026-08-12 completed product_series counts exporter self-instrumentation as product data (~18% overstated) edf538f
725 2026-08-12 completed Control UI must not render buttons it cannot authenticate: hide them, document the API call 16e5f3b
724 2026-08-12 completed make check must include ruff format –check: the local gate can pass where CI fails 353ecfa
723 2026-08-12 completed Discovery bypasses the API facade: startup calls are unmetered, unpaced, and outside the #698 gate 16e5f3b
722 2026-08-12 completed Record the extension-cost measurement for a new device family 6d03473
720 2026-08-12 completed Docs corrections: multi-org claims, webhook variable, scaling arithmetic, endpoint reference, log format 61e49fe
719 2026-08-12 completed Doc generators must fail loudly rather than under-report 0410fc2
718 2026-08-12 completed Support matrix must state a verification level per device family 15da33c
716 2026-08-14 completed Startup validation: fail fast on provably-wrong config, warn on merely-suboptimal 75a36e2
715 2026-08-12 completed Webhook freshness window, replay dedupe, and separated delivery metrics 26813ed
714 2026-08-14 completed Deterministic shutdown drain, and a Helm grace-versus-deadline check f2feb5d
713 2026-08-14 completed Disposable exporter instance with a recorded API corpus and fault-injection proxy ed44f79
711 2026-08-12 completed Cardinality-endpoint honesty and client-store map eviction 349e8ed
710 2026-08-12 completed Concurrency admission: task-group back-pressure, executor alignment, queue visibility 9e97504
709 2026-08-12 completed Bound the DNS fan-out and disclose reverse-DNS behaviour 16e5f3b
708 2026-08-12 completed Bound client application cardinality with top-N and an other bucket 16e5f3b
707 2026-08-12 completed Fleet fixture generator with seven named presets, tiered in CI fa76729
706 2026-08-12 completed Apply validate_response_format to the four fetches that bypass it 16e5f3b
705 2026-08-12 completed Preserve error categories instead of erasing known failures into unknown 16e5f3b
704 2026-08-12 completed Scope health backoff by domain; a 404 or 402 on an optional endpoint must never count 16e5f3b
703 2026-08-12 completed Client child endpoint groups: register and cost only when their own flag is on fd5cb69
702 2026-08-12 completed Scheduler and staleness observability; document /ready as a startup gate 16e5f3b
701 2026-08-12 completed Collection profiles and an over-budget policy that protects priority 1 and 2 16e5f3b
700 2026-08-12 completed Budget truth: document the per-source-IP limit and verify the burst default d5adf5b
699 2026-08-12 completed Call construction: perPage at maximum, cost from expected pages, drop unchunked serial filters 16e5f3b
698 2026-08-12 completed One instrumented API facade: project AIMD owns pacing, smart flow off, every call metered 1997aec
697 2026-08-12 completed api_base_url: HTTPS-only, allowlist by default, never carry credentials across a redirect origin ca8b938
696 2026-08-12 completed Never substitute a MAC for client.id, and scrub identifiers from data-log bodies 2d73c8d
695 2026-08-12 completed Control POSTs must fail closed when no API token is configured 40e24f8
693 2026-08-11 completed api-drift lane: acknowledge mechanism + stop re-posting an unchanged report daily a286fac
692 2026-08-11 not planned Decision: do not consume wlanIdentifier or campusGateway from getNetworkWirelessSsids
690 2026-08-11 completed apidrift: detect deprecated consumed operations, and stop reporting model-extra for untyped responses b354e02
686 2026-08-11 completed Meraki OpenAPI drift on consumed operations a286fac b354e02 a72e48f
669 2026-07-20 completed meraki_mr_clients_connected returns only one line instead of one per AP afe2562
664 2026-08-14 completed Don’t promote service.version to a per-series metric label (OTLP→Prometheus: version belongs on target_info/build_info) ae4ea9a
661 2026-07-14 completed Dockerfile: replace manual uv tarball checksums with digest-pinned ghcr.io/astral-sh/uv 8bacd50
657 2026-07-12 completed Meraki OpenAPI drift on consumed operations 5626b3e
648 2026-07-03 completed otel: attach scheduler endpoint-group name as a span attribute on collector/API spans a9f075b
647 2026-07-03 completed otel: collector failures never surface on the collect.collector root span → root-level error panels read zero a9f075b
646 2026-07-03 completed otel: collect.collector root span is unattributed — cannot identify the collector without descending a9f075b
645 2026-07-03 completed otel: trace_method attribute auto-extraction reads kwargs only → org.id/network.id never reach spans a9f075b
644 2026-07-03 completed Docs: document the OTLP-bridge parity envelope vs the Prometheus scrape dfe4ff1
643 2026-07-03 completed OTLP bridge: histogram le label renders as int on bridge path, float on scrape path dfe4ff1
642 2026-07-03 completed MX: getDeviceAppliancePerformance returns None → DataValidationError “Expected dict, got NoneType” (~2/min) ab5ab6f
641 2026-07-03 completed Logs: structlog level=“warning” vs Loki detected_level=“warn” spelling mismatch dfe4ff1
640 2026-07-03 completed Logs: default to JSON renderer in-container for clean Loki field extraction 1e4ee31
639 2026-07-03 completed Data-logs: make the emitted/dropped counters discoverable (zero-series == never-emitted is invisible) d6a8b8c
638 2026-07-03 completed Data-logs: verify + prove the OTLP logs pipeline reaches Loki end-to-end 4ac87a8
637 2026-07-03 completed Data-logs: signal_quality never emits for clients with no packet loss (coupled to packetLoss/byClient) d6a8b8c 4ac87a8
636 2026-07-03 completed Clarify (and reconsider) api.concurrency_limit vs the adaptive rate limiter — do we need per-run sub-work caps? 1e4ee31
635 2026-07-03 completed Settings() constructed twice on server start → duplicated startup validator warnings cc76452
634 2026-07-03 completed Build-metadata env vars (MERAKI_EXPORTER_VERSION/COMMIT) warned as unrecognized + redacted at startup cc76452
633 2026-07-03 completed Benign getNetworkWirelessMeshStatuses 404 (no repeaters) logged twice at ERROR cc76452
632 2026-07-03 completed DataRatesCollector crashes (TypeError) on null downloadKbps/uploadKbps — wireless data-rate metrics never emitted cc76452
631 2026-07-03 completed De-tier the dispatch layer: per-collector group-clocked loops replace the FAST/MEDIUM/SLOW heartbeat loops (completes #617) cc76452 55dd4e5
630 2026-07-03 completed Live-verify the frozen scheduler assumptions: volatility floors, #271 byBand/6GHz, #549 MV fields, #331 conn-stats dedup, perPage maxima 4514bf9 ae1ffdd
629 2026-07-03 completed Scheduler gate-semantics gaps from the #617 implementation audit (mark_ran on failed fan-outs, untracked MS_PORT_OVERVIEW TTL) 55dd4e5
628 2026-07-03 completed Docs site: redesign & rebrand alignment + SEO/LLM discoverability 6486bbd
624 2026-07-03 completed MR org-wide presence gate misses Catalyst (CW*) APs — model-prefix check should include productType 907aa24
623 2026-07-03 completed Epic: auto-detect in-use features/hardware per org and auto-disable unused collectors/endpoints (periodic re-discovery) 907aa24
622 2026-07-03 completed Epic: OTel log emitter for high-cardinality per-entity data (solve cardinality via logs, not metrics) d6a8b8c 2b9400c c34a6cc 0528524
621 2026-07-03 completed Surface per-item batch failures in collector_errors_total (process_in_batches_with_errors) a382d54
619 2026-07-05 completed V1.0.0 release-readiness verification & cut (the P6 gate) 410575b 5b24890 2b9400c ae13759 13bf859
618 2026-07-05 completed V1 LAUNCH — master execution plan & tracker (all milestones → v1.0.0)
617 2026-07-03 completed Adaptive budget-aware API scheduler: replace fixed FAST/MEDIUM/SLOW with cost- and volatility-driven scheduling (epic) 4514bf9 cc76452 55dd4e5 907aa24 52b39d7 2cb500d 3071792 3e20f34 bd4ecca 8f3168a f08cd69
616 2026-07-03 completed “Why this exporter” comparison / positioning page 281f899
615 2026-07-03 completed Native TLS/mTLS on the exporter listener
614 2026-07-03 completed Webhook events → faster device state transitions (down/up) cc08673 281f899 5b24890
613 2026-07-03 completed Meraki Insight collector (license-gated WAN app-health) ae13759
612 2026-07-03 completed Air Marshal threat_type breakdown + refresh stale module docstring 13bf859
611 2026-07-03 completed Firmware compliance metrics: per-device firmware version info + per-network up-to-date gauge 13bf859
610 2026-07-02 completed Rename/repurpose the misleading examples/ dir (currently only a pytest example) aebd16a
609 2026-07-02 completed Expand __meraki_op__ annotation coverage so apidrift auto-catches device-model drift 57455d8
608 2026-07-02 completed Make codecov patch status informational de15dc9
607 2026-07-02 completed Remove redundant pyproject extra-files entry from release-please config 3ff9be8
606 2026-07-02 completed Annotate/document chart version handling (static 0.1.0 is intentional) 3ff9be8
605 2026-07-02 completed Add a container-structure test c368e4b
604 2026-07-02 completed Local-ops documentation nits (compose –build, APP_VERSION dev, Docker healthcheck) 7638f6e
603 2026-07-02 completed Drop dead armv7 build capability 6b48c74
602 2026-07-02 completed Declare v1 distribution = container image + Helm chart only (no PyPI machinery) f119c7a
601 2026-07-02 completed Helm: strategy Recreate (or maxSurge 0) for the singleton a8740e5
600 2026-07-02 completed Helm: warn/fail on replicaCount > 1 (no leader election) a8740e5
599 2026-07-03 completed Delete dead log_configuration(); stop double-logging the startup summary c98f0ad
598 2026-07-03 completed Accept lowercase log levels c98f0ad
597 2026-07-03 completed Document/tune shutdown grace vs blocked SDK threads b66eb05
596 2026-07-03 completed Derive liveness auto-threshold from the fastest enabled tier 3071792 5450e0a
595 2026-07-02 completed Fix perpetually-red weekly slow-tests job (0 collected → exit 5) c368e4b
594 2026-07-02 completed Golden /metrics exposition test per device family (units/label regression net) 25ac17a
593 2026-07-02 completed CI: helm lint + kubeconform job wired into ci-success c368e4b
592 2026-07-02 completed CI: container serve-smoke test (/health + /metrics on the built image) c368e4b
591 2026-07-03 completed Skip smoothing offsets during initial collection (cut ~3.5min /ready on every rolling restart) 5450e0a
590 2026-07-03 completed Validate api_base_url + org_id at startup c98f0ad
589 2026-07-03 completed Friendly, actionable 401 startup error instead of a 2KB frame-locals blob 3cc9fb2
588 2026-07-03 completed --check config-validation / dry-run mode c98f0ad
587 2026-07-03 completed File-based API key (_FILE / secrets_dir) + rotation semantics c98f0ad
586 2026-07-03 completed First-class proxy + custom-CA support (requests_proxy / certificate_path) 3cc9fb2
585 2026-07-03 completed Enforce single-organization contract for v1 (1 poller = 1 org, breaking) bd4ecca 9860855 c98f0ad 9e2dd45
584 2026-07-03 completed [F-156] Surface M2/M3 device-specific metrics in the MX/MG/MV (and MS/MT) dashboards — 59 meraki_* metric families are shown on no dashboard 4ac87a8 f08cd69
583 2026-07-03 completed [F-155] Remove or fix the status=“grace_period” license matcher — no license state ever has that value
582 2026-07-03 completed [F-154] Fix exact-match org_id=“$organization” on non-repeat panels with a multi-select/All variable
581 2026-07-03 completed [F-153] Fix legendFormat labels that don’t exist in the query result — legends render empty in ~10 panels across 5 dashboards
580 2026-07-03 completed [F-152] Remove rate() from windowed-gauge metrics (connection stats, org usage) — 8 panels across 3 dashboards render meaningless numbers
579 2026-07-03 completed [F-151] Fix band label values in mr-access-points ‘Radio Configuration’ panels (dashboard filters band=“2.4GHz”/“5GHz”, exporter emits “2.4”/“5”/“6”)
578 2026-07-03 completed [F-150] Fix org template variable and panels querying nonexistent meraki_org series (real series is meraki_org_info) 4ac87a8 f08cd69
577 2026-07-02 completed FAQ page 9e2dd45
576 2026-07-02 completed Complete endpoint inventory in README/getting-started (or point at generated endpoints.md) 7638f6e
575 2026-07-02 completed api-call-audit.md: remove from customer nav or add dated-internal-snapshot banner 9e2dd45
574 2026-07-02 completed Fix hand-written generator notes: ghost PATH_PREFIX/ENABLE_HEALTH_CHECK + wrong SAMPLING_RATE claim baked into generate_config_docs.py 2f7711e
573 2026-07-02 completed otel.md corrections: SAMPLING_RATE is a normal pydantic setting; TLS available via OTEL__INSECURE=false 9ea11a6
572 2026-07-02 completed .env.example accuracy sweep: remove ghost CLIENTS__DNS_SERVER, add mtsensoralerts to default list, add missing keys, fix filter fail-fast wording 7638f6e
571 2026-07-02 completed Upgrade/migration guide + release-notes convention for breaking metric/config changes 9e2dd45
570 2026-07-03 completed Troubleshooting runbook: symptom→check→fix (401/403, zero filter matches, empty metrics, backoff, 429 storms, shedding, webhook secret) + fix broken LogQL example 281f899
569 2026-07-03 completed Starter Prometheus alert rules: examples/prometheus-rules.yaml (~15 curated) + optional chart prometheusRule template 410575b 281f899
568 2026-07-03 completed Scaling-out & HA guide: shard-by-org recipes, rate_limit_shared_fraction arithmetic, why replicas>1 is harmful, failover semantics bd4ecca
567 2026-07-03 completed Data-freshness doc: per-tier staleness table, Meraki-side detection lag, alert for: guidance; fix README real-time webhook overclaim 281f899
566 2026-07-03 completed Support matrix page: per-product-line supported/best-effort/not-collected; SM + Insight as explicit non-goals; tested hardware; regions 281f899
565 2026-07-02 completed Document SERVER__API_TOKEN (security.md auth section, .env.example, README) + default-unauthenticated posture 7638f6e
564 2026-07-03 completed Invert secret-masking to an allowlist (substring heuristic is allowlist-by-omission) c98f0ad
563 2026-07-02 completed Helm chart: optional NetworkPolicy template (ingress from Prometheus + egress 443/OTLP) a8740e5
562 2026-07-02 completed Digest-pin base image + verify uv tarball checksum in Dockerfile 8bacd50 0652871 6b48c74
561 2026-07-03 completed Bound webhook success-path labels (org_id/alert_type attacker-controlled when require_secret=false) + refuse insecure combo without explicit flag f2675a9
560 2026-07-02 completed Webhook receiver deployability: document Meraki HTTPS requirement + TLS-termination examples; optional chart ingress a8740e5
559 2026-07-03 completed Data privacy / GDPR documentation for client tracking (PII in Prometheus, retention, mitigation) 281f899
558 2026-07-03 completed Endpoint exposure hardening: threat-model doc + extend auth to sensitive GETs (or ui_enabled flag) + reverse-proxy/TLS pattern f2675a9
557 2026-07-03 completed getOrganizations: add total_pages=“all” for paved-path consistency 567149c
556 2026-07-03 completed Review 30s single_request_timeout default for large-org bulk fetches + document 2c2c7e5
555 2026-07-02 completed Pass fields=“avg” to latency-stats fetchers (skip unused rawDistribution payload) 8f74757
554 2026-07-03 completed CardinalityMonitor: cap retained label-value lists + lengthen interval at scale cda95ba
553 2026-07-03 completed MT sensor readings: decorate with rate limiter + drop all-serials query param 55440da
552 2026-07-03 completed Gate per-MX getDeviceAppliancePerformance to 900s + document linear cost 2cb500d
551 2026-07-03 completed Route ConfigCollector login-security through the inventory cache (or delete the dead cache method) 3cc9fb2
550 2026-07-03 completed Default rate_limit_shared_fraction to 0.8 + ‘shared org budget’ doc (sequence AFTER call-volume reductions) 838ef02 2c2c7e5
549 2026-07-03 completed MV camera: migrate deprecated analytics endpoints, add own interval/off-default, fix rate-limiter org keying 4514bf9 2cb500d
548 2026-07-03 completed Set perPage to endpoint maxima on paginated fetchers (memory-history 10→20, assurance alerts 30→300) fdd9f52
547 2026-07-03 completed OrgHealthTracker: make per-org backoff aware of device/network failure domains (single-writer fix) 08587ff
546 2026-07-03 completed Per-fetch deadlines + defined timeout semantics (stop torn partial metric state on collector timeout) b66eb05 4332161
545 2026-07-03 completed Single 429 retry owner + bounded/cancellable Retry-After (stop ~12 attempts/fetch) 4332161
544 2026-07-03 completed Dedicated sized executor for SDK calls (stop /metrics queueing behind blocked threads); wire or remove dead semaphore b66eb05 4332161
543 2026-07-03 completed Memory bounds: ClientStore eviction + global client cap + DNS cache pruning d666ab7 d2c99b9
542 2026-07-03 completed Publish quantitative API-budget sizing formula + correct scaling-guide numbers bd4ecca
541 2026-07-03 completed Per-endpoint refresh intervals for windowed network-health endpoints (cut NetworkHealth ~8W→~4.7W calls) 2cb500d
540 2026-07-03 completed Per-family cardinality budgets — stop silently deleting live device series at scale (alarm, don’t delete) 838ef02 cda95ba
539 2026-07-02 completed Disambiguate duplicate webhook counters + org-vs-exporter api_requests_total HELP 42322b6
538 2026-07-02 completed Delete dead *MetricName enum members never passed to a constructor (reconcile 7-vs-8 list) 4410df4
537 2026-07-02 completed Add meraki_exporter_build_info{version,commit} + evaluate org API-budget headroom gauge be1ed71
536 2026-07-02 completed Add data-window/lag language to windowed-metric HELP strings 9b31a3e
535 2026-07-02 completed Publish metric stability & deprecation policy (docs/stability.md) 64bc2e6
534 2026-07-02 completed Decide mutable name-label policy pre-v1 (name/org_name/network_name/port_name churn vs _info joins) cd76d8d 9e2dd45 343ea48 32dd2f6 64bc2e6
533 2026-07-02 completed Client metrics v1 label contract: ID-only numeric series + meraki_client_info join, capped & expiration-tracked 281f899 c34a6cc d2c99b9 63221da 32dd2f6
532 2026-07-02 completed Fix mistyped exporter self-metrics (cardinality_analyzed_total gauge, errors_total_expired, cache_size_tracked_metrics) 167b6ef
531 2026-07-02 completed Coordinated v1 metric naming & unit sweep (drop gauge _total, base units, _percent/_percentage, ×1000 kB) 9e2dd45 64bc2e6 416a26a 8f3168a
530 2026-07-02 completed Remove dead WebhookMetricsCollector (or wire it deliberately) 640b589 42322b6
529 2026-07-03 completed Stop special-casing the bare MERAKI_API_KEY env var that is never consumed c98f0ad
528 2026-07-03 completed Remove or activate the dead tier-loop 10-consecutive-failure kill switch 57f79bb
527 2026-07-02 completed Verify VPN stats timespan=300 returns populated summaries; widen if sparse 640b589 dbbc72f
526 2026-07-02 completed Verify and harden firmware _PENDING_STATUSES against live spelling cbd4de2
525 2026-07-02 completed Reduce application-usage client-ID batch size to avoid URL-length/414 risk 8889eb3
524 2026-07-02 completed Bucket unknown alert severities as “other” instead of dropping them 28eaf9c
523 2026-07-03 completed Drop meraki_org_login_security_strong_passwords_enabled (derived from deprecated field) 43bf9f8
522 2026-07-03 completed Wrap discovery.py single-org getOrganization with validate_response_format c98f0ad
521 2026-07-02 completed Pass explicit timespan to getDeviceAppliancePerformance for deterministic score b9e2257
520 2026-07-02 completed Reapply NetworkFilter in api_helpers._fetch_devices_direct and unify product_types filtering 1aadae6
519 2026-07-03 completed Wrap single-org getOrganization fallbacks with validate_response_format 43bf9f8
518 2026-07-03 completed Fix dead China-region timeout auto-bump (matches wrong host substring) c98f0ad
517 2026-07-02 completed Aggregate MX uplink loss/latency per uplink instead of last-write-wins across destination IPs 640b589 74ed0cb
516 2026-07-03 completed Handle subscription-licensing organizations instead of going permanently red 43bf9f8
515 2026-07-03 completed Warn at startup on unrecognized MERAKI_EXPORTER_* environment variables c98f0ad
514 2026-07-03 completed Accept CSV form of COLLECTORS__ENABLED / DISABLE_COLLECTORS without crashing at boot c98f0ad
513 2026-07-03 completed Apply NetworkFilter to configuration-changes row counting 43bf9f8
512 2026-07-02 completed Fix channel-utilization non_wifi key and bucket sort to live API field names 6b73c46
511 2026-07-03 completed Increment an error counter on bare-except swallow paths and document an alerting recipe a382d54 b6bcaec
510 2026-07-03 completed Propagate ManagedTaskGroup child-task failures so coordinators can detect all-failed aff2ed4
509 2026-07-02 completed Treat “collected nothing” as a collection failure so health signals are honest 57f79bb aff2ed4 61c4bb1 8f3168a
508 2026-07-02 completed Demote apidrift submodel-vs-bare-object conformance mismatch to INFO to unblock CI f9e4316 8f3168a f08cd69
507 2026-07-02 completed [F-054] Delete dead code in core (async_utils / metrics / api_helpers) 24bacf3
506 2026-07-02 completed [F-169] Gate Device/NetworkHealth/Clients/Alerts/MTSensorAlerts collectors on OrgHealthTracker backoff 67cd893
505 2026-07-02 completed [F-177] Wire Chart.yaml appVersion into release-please 25aac12
504 2026-07-02 completed [F-007] Paginate org memory-usage fetch so all devices are covered 0e1508d
503 2026-07-02 completed [F-029] Add Pydantic domain models for MG/MS-power/MX-uplink-health/MV collectors 6f18706
502 2026-07-02 completed [F-078] get_devices returns cache dicts by reference; enrichment pollutes cache 036bc6d
501 2026-07-02 completed [F-075] DNS lookups share the default executor and can starve API calls 036bc6d
500 2026-07-02 completed [F-019] None-valued label silently drops the entire metric series 036bc6d
499 2026-07-02 completed [F-108] Collector performance metrics use hardcoded name strings 036bc6d
498 2026-07-02 completed [F-118] Container image self-reports version 0.0.0+dev c9e5be8 009da56
497 2026-07-02 completed [F-110] Drive OTLP exporter TLS from settings.otel.insecure 009da56
496 2026-07-02 completed [F-170] Scope network-health rate limiting to the owning org 009da56
495 2026-07-02 completed [F-028/F-074] /status API-health card always reports 0 calls and 0 throttles 009da56
494 2026-07-02 completed [F-171] Demote per-network client log lines to debug 10c9d87
493 2026-07-02 completed [F-060] Signal-quality collection drains the org rate-limit budget 10c9d87
492 2026-07-02 completed [F-112] Fractional client usage drops the whole network’s client metrics 10c9d87
491 2026-07-02 completed [F-052] 404 substring check downgrades genuine 500s 486360f
490 2026-07-02 completed [F-002] ManagedTaskGroup loses fail-fast task exceptions 486360f
489 2026-07-02 completed [F-053] api_helpers direct fetchers skip validate_response_format 486360f
488 2026-07-02 completed [F-000] Add validate_response_format to api_helpers._fetch_networks_direct 486360f
487 2026-07-02 completed [F-166] Stop logging the raw webhook payload (with sharedSecret) on validation failure 451bc6b
486 2026-07-02 completed [F-051] Prevent unauthenticated webhook cardinality injection via failure-path labels 451bc6b
485 2026-07-02 completed [F-109] Use constant-time comparison for the webhook shared secret 451bc6b
484 2026-07-02 completed [F-162] Add test coverage for the production collection scheduler 6420c6c
483 2026-07-02 completed [F-003] Bound the cardinality label-value distribution to stop unbounded growth 6420c6c
482 2026-07-02 completed [F-044] Track and cancel the first-collection wait task on shutdown 6420c6c
481 2026-07-02 completed [F-026] Offload synchronous Prometheus registry iteration off the event loop 6420c6c
480 2026-07-02 completed [F-103] Cap webhook body size while reading, regardless of Content-Length 6420c6c
479 2026-07-02 not planned [F-115] Client application-usage KB vs bytes — verify units (WONTFIX)
478 2026-07-02 completed [F-018] Clamp smoothing offset so it can’t stretch tier cadence past the interval effe4a8
477 2026-07-02 completed [F-167] Optional bearer-token guard for state-changing control endpoints effe4a8
476 2026-07-02 completed [F-105] /ready must reflect real collection success, not just tier completion effe4a8
475 2026-07-02 completed [F-104] Run startup discovery off the lifespan critical path effe4a8
474 2026-07-02 completed [F-043] Dead-man liveness switch: /health degrades when the exporter is wedged effe4a8
473 2026-07-02 not planned [F-136] Harden issue-triage tool restriction (OBSOLETE — workflow removed)
472 2026-07-02 not planned [F-133] Codacy coverage reporter runs an unpinned curl|bash from master (WONTFIX)
471 2026-07-02 completed [F-178] Add a Renovate custom manager for the pinned Dockerfile UV_VERSION 1a03f14
470 2026-07-02 completed [F-137] Edge :main publishing silently freezes if the release-please job fails 1a03f14
469 2026-07-02 completed [F-135] Pin the tufin/oasdiff image and separate oasdiff tool errors from real drift 1a03f14
468 2026-07-02 completed [F-131] Remove the broken Claude enrichment step from the api-drift report action 1a03f14
467 2026-07-02 completed [F-130] Remove the stale bot (placeholder messages, no exemptions, would auto-close roadmap backlog) 1a03f14
466 2026-07-02 completed [F-160] Fix tests/CLAUDE.md paved-path error-test example (70s real retry-sleep trap) 24e307b
465 2026-07-02 completed [F-134] Add ruff to CI — the lint third of make check is enforced nowhere 24e307b
464 2026-07-02 completed [F-132] Gate Codecov/Codacy upload steps on secret availability 24e307b
463 2026-07-02 completed [F-072] Add the mandated exhausted-retry error-shape tests for the four M2 fetchers 24e307b
462 2026-07-02 completed [F-023] Add the Pydantic domain models the M3 acceptance criteria require for the new MX/MT fetchers 088f3fd
461 2026-07-02 completed [F-106] OTel sampling rate: honor .env and don’t let a bad value kill tracing 3687573
460 2026-07-02 completed [F-076] Remove non-working clients.dns_server setting (silent no-op + timeout bypass) 3687573
459 2026-07-02 completed [F-034] Validate dict-shaped responses to avoid false zeros (config + mx_firewall) 088f3fd 3687573
458 2026-07-02 completed [F-016] Replace unbounded asyncio.gather in ConfigCollector 3687573
457 2026-07-02 completed [F-011] Emit config admin metrics via _set_metric for expiration 3687573
456 2026-07-02 completed [F-008] Wire MonitoringSettings.histogram_buckets to the duration histogram 3687573 c2fad44 6d98834 3d430f8 f367ea9
455 2026-07-02 completed [F-005] Startup summary always reports Network Health & MT Sensors disabled 3687573
454 2026-07-02 not planned [F-178] Add a Renovate regex manager for the pinned UV_VERSION in Dockerfile
453 2026-07-02 not planned [F-177] Wire Chart.yaml appVersion into release-please so it auto-bumps
452 2026-07-02 completed [F-176] Stale ‘(default: 120s)’ comment on collector_timeout in manager.py 476bee5
451 2026-07-02 completed [F-146] Reconcile stale MT-only hardware warning in docs/index.md df78af1
450 2026-07-02 completed [F-139] Add NetworkFilterSettings to generate_config_docs.py nested_models df78af1
449 2026-07-02 completed [F-129] Validate config.otelEndpoint at Helm render time when config.otelEnabled is true fdea149
448 2026-07-02 completed [F-128] .helmignore doesn’t exclude CLAUDE.md from the packaged chart fdea149
447 2026-07-02 completed [F-127] Chart securityContext missing seccompProfile — restricted PSS rejects the pod fdea149
446 2026-07-02 completed [F-126] Dockerfile fetches uv ‘latest’ at build time instead of a pinned version fdea149
445 2026-07-02 completed [F-125] values.yaml extraEnv example uses an unquoted int value fdea149
444 2026-07-02 completed [F-123] Dockerfile HEALTHCHECK hardcodes port 9099, ignores MERAKI_EXPORTER_SERVER__PORT fdea149
443 2026-07-02 completed [F-121] Chart.yaml appVersion is stale and not wired to release-please fdea149
442 2026-07-02 completed [F-119] CI ‘Verify non-root user’ step is vacuous — never actually checks the runtime UID fdea149
441 2026-07-02 completed [F-117] Helm chart collectorTimeout default silently reverts the app’s 240s default fdea149
440 2026-07-02 completed [F-159] Remove fictional ‘failures’ count field from SSID failed-connections handling/tests 40e3130
439 2026-07-02 completed [F-065] Correct wireless data-rate help strings: kilobytes-per-second, not kilobits 40e3130
438 2026-07-02 completed [F-017] Pin timespan/resolution/perPage and sort buckets in RF channel-utilization fetch 40e3130
437 2026-07-02 completed [F-015] Stop setting Bluetooth client count to 0 on rate-limit/error responses 40e3130
436 2026-07-02 completed [F-027] Reduce MV per-camera API fan-out: throttle near-static calls to SLOW cadence 3543ccb
435 2026-07-02 completed [F-004] Stop emitting literal “None” MV label values for null quality/resolution/profileId 3543ccb
434 2026-07-02 completed [F-024] Fix MV zone-name join: zones response field is id, not zoneId 3543ccb
433 2026-07-02 completed [F-088] Remove MTCollector._set_metric_value override bypassing expiration c9d932c
432 2026-07-02 completed [F-021] Route MT gateway metrics through expiration tracking c9d932c
431 2026-07-02 completed [F-092] Stop re-fetching orgs/names/devices every 60s in the MT FAST path c9d932c
430 2026-07-02 completed [F-069] MTSensorCollector inverted org-name reuse condition c9d932c
429 2026-07-02 completed [F-061] Add validate_response_format to MT standalone fetchers c9d932c
428 2026-07-02 completed [F-089] Enforce NetworkFilter on MT org-wide sensor readings c9d932c
427 2026-07-02 completed [F-031] MT sensor collection bypasses NetworkFilter c9d932c
426 2026-07-02 completed [F-030] MS org-wide collection block skips Catalyst switches bee1402
425 2026-07-02 completed [F-071] Add psu_model label to meraki_ms_power_supply_status bee1402
424 2026-07-02 completed [F-091] Rename ‘_total’-suffixed non-counter gauges (MS port errors/warnings, MX security events) bee1402
423 2026-07-02 completed [F-175] MSStackCollector emits stack-member series via raw .labels().set() with no expiration 7454948
422 2026-07-02 completed [F-174] MS STP-priority series collide on network+name because lookup-matched switches emit serial=“” 7454948
421 2026-07-02 completed [F-168] Replace per-switch getDeviceSwitchPortsStatuses usage/PoE loop with org-wide endpoints 7454948
420 2026-07-02 completed [F-113] MSStackCollector fabricates the stack role label from serial order instead of the API role ba86643
419 2026-07-02 completed [F-157] Fix dead MS STP tests (stale 2-arg call + unwired mock_parent.inventory) ba86643
418 2026-07-02 completed [F-037] Move MS STP-priority collection off the sequential per-network MEDIUM path ba86643
417 2026-07-02 completed [F-070] Remove stale label-transition series for MS port STP state and 802.1X status ba86643
416 2026-07-02 completed [F-084] MS port metrics bypass _set_metric expiration — removed switches/ports go stale ba86643
415 2026-07-02 completed [F-083] collect_port_overview lacks validate_response_format — exhausted-retry error zeroes port counts ba86643
414 2026-07-02 completed [F-093] Set perPage=1000 on the MX security-events fetch to avoid up-to-10x pagination fc2bfaa
413 2026-07-02 completed [F-085] MX firewall rules fetched every MEDIUM cycle despite being near-static (SLOW) fc2bfaa
412 2026-07-02 completed [F-066] Stop calling getDeviceAppliancePerformance for Z-series/vMX appliances fc2bfaa
411 2026-07-02 completed [F-067] MX VPN latency/jitter/packet-loss gauges are registered but never populated fc2bfaa
410 2026-07-02 completed [F-013] Remove dead MX VPN latency/jitter/packet-loss metrics parsed from fields the endpoint never returns fc2bfaa
409 2026-07-02 completed [F-173] AlertsCollector active/severity/network alert gauges are not NetworkFilter-filtered 960e336
408 2026-07-02 completed [F-172] Expose success/failure from the 5 separate org sub-collectors to OrgHealthTracker 960e336
407 2026-07-02 completed [F-158] Strengthen MR happy-path tests + fix fictional mock shapes fa62d97
406 2026-07-02 completed [F-058] Rename meraki_mr_air_marshal_rogue_ssids_total — it counts all observed foreign SSIDs, not rogues fa62d97
405 2026-07-02 completed [F-114] SSID usage silently limited to the top 10 (endpoint default quantity) fa62d97
404 2026-07-02 completed [F-035] Remove the per-network SSID-to-network mapping fan-out fa62d97
403 2026-07-02 completed [F-082] SSID usage replicated the org-wide total onto every network sharing the SSID name fa62d97
402 2026-07-02 completed [F-111] Fix MR packet-loss parsing: nested network object + device metrics come from the ByDevice endpoint fa62d97
401 2026-07-02 completed [F-081] Paginate getOrganizationWirelessDevicesSystemCpuLoadHistory — only 10 of each 20-serial batch got CPU metrics fa62d97
400 2026-07-02 completed [F-033] Add pagination to MR ethernet-status and CPU-load fetches fa62d97
399 2026-07-02 completed [F-012] Paginate getOrganizationWirelessDevicesEthernetStatuses — MR ethernet/power metrics truncated at 100 APs fa62d97
398 2026-07-02 completed [F-116] Single-org mode emits the org ID as the org_name label on every metric 9a0545a 6410fa6
397 2026-07-02 completed [F-102] Cache the per-device getOrganizationLicenses full-list fetch 6410fa6
396 2026-07-02 completed [F-100] Handle licenses-overview fetch failure distinctly from an empty overview 6410fa6
395 2026-07-02 completed [F-097] Fix meraki_org_licenses_expiring undercount (per-device + co-term paths) 6410fa6
394 2026-07-02 completed [F-099] Guard against non-numeric responseCodeCounts values aborting the loop 6410fa6
393 2026-07-02 completed [F-096] Emit zero counts in APIUsageCollector instead of freezing stale values 6410fa6
392 2026-07-02 completed [F-101] Bound the client-overview stale-zero guard by age / consecutive-zero count 9a0545a 6410fa6
391 2026-07-02 completed [F-095] Wrap ClientOverviewCollector fetch with validate_response_format 9a0545a 6410fa6
390 2026-07-02 completed [F-064] Migrate off deprecated getNetworkHealthAlerts in AlertsCollector 6410fa6
389 2026-07-02 completed [F-059] Stale alert gauges: resolved alerts stay nonzero forever in AlertsCollector 6410fa6
388 2026-07-02 completed [F-057] Tie device-availability-history timespan to the configured MEDIUM interval 9a0545a 6410fa6
387 2026-07-02 completed [F-056] Zero out absent label combos in windowed/status count gauges 6410fa6
386 2026-07-02 completed [F-055] Case-mismatched _PENDING_STATUSES so firmware upgrade counts never match 6410fa6
385 2026-07-02 completed [F-010] Apply NetworkFilter in FirmwareCollector and DeviceAvailabilityHistoryCollector 9a0545a 6410fa6
384 2026-07-02 completed [F-098] Apply NetworkFilter to devices-by-model and packet-capture collection 6410fa6
383 2026-07-02 completed [F-042] Clamp application-usage quantity to the documented API maximum (50) 6410fa6
382 2026-07-02 completed [F-041] Dead {“items”: …} branch in _collect_device_counts_by_model 6410fa6
381 2026-07-02 completed [F-040] Unreachable org-failure path: sub-collection exceptions swallowed before OrgHealthTracker.record_failure 6410fa6
379 2026-07-02 completed [F-164] Factory malformed double-tz timestamps (fixed) + dead large-org scale-testing infra (follow-up) 0fbb195 a583c19
378 2026-07-02 completed [F-163] MetricAssertions cached metric snapshots, causing stale reads and false passes a583c19
377 2026-07-02 completed [F-165] MockAPIBuilder HTTP errors lacked .status, making the production 429-retry branch unreachable in tests a583c19
376 2026-07-02 completed [F-161] MockAPIBuilder method→module routing wrong for org-wireless/sensor-latest; error routing disagreed with response routing a583c19
375 2026-07-02 completed [F-050] MockAPIBuilder org_id/param-scoped responses silently collapse to last-write-wins a583c19
374 2026-07-02 completed [F-124] install-hooks clobbers the pre-commit framework’s managed hook 6d0b538
373 2026-07-02 completed [F-122] docker-build-all/docker-build-push request platforms the Dockerfile rejects 6d0b538
372 2026-07-02 completed [F-120] docker-compose-up/down reference deleted docker-compose.dev.yml 6d0b538
371 2026-07-02 completed [F-048] docker-run passes env vars the exporter never reads 6d0b538
370 2026-07-02 completed [F-047] core/CLAUDE.md cardinality paths wrong + MGMetricName missing from enum roster 24db96d
369 2026-07-02 completed [F-009] Undocumented third NetworkFilter bypass site + wrong cardinality endpoint paths in CLAUDE.md 24db96d
368 2026-07-02 completed [F-107] Root CLAUDE.md/AGENTS.md overclaim ‘OpenTelemetry mirroring’ 24db96d
367 2026-07-02 completed [F-006][F-090] charts CLAUDE.md readinessProbe note is backwards/stale 24db96d
366 2026-07-02 completed [F-049] .github/CLAUDE.md workflow count and harden-runner coverage claim are stale 24db96d
365 2026-07-02 completed [F-086] devices/CLAUDE.md wrongly documents MG/MV as no-op stubs 24db96d
364 2026-07-02 completed [F-045] Collector-layer CLAUDE.md rosters stale after M2/M3 (4 files) 24db96d
363 2026-07-02 completed [F-068] Collector CLAUDE.md rosters missing mt_alerts/mx_ha/mx_uplink_usage/mx_uplink_health 24db96d
362 2026-07-02 completed [F-046] api/CLAUDE.md paved-path with_error_handling example raises TypeError if copy-pasted 24db96d
361 2026-07-02 completed [F-032] api/CLAUDE.md stale AsyncMerakiClient production-usage claim 24db96d
360 2026-07-02 completed [F-149] Document the published Helm chart in README and docs 2b5aa07
359 2026-07-02 completed [F-148] Remove self-contradictory docker-compose claim in integration-dashboards.md 2b5aa07
358 2026-07-02 completed [F-147] Fix invalid LogQL examples in deployment-operations.md 2b5aa07
357 2026-07-02 completed [F-145] Wire scaling-guide.md and api-call-audit.md into the zensical nav 2b5aa07
356 2026-07-02 completed [F-144] Fix broken favicon reference in zensical.toml 2b5aa07
355 2026-07-02 completed [F-143] Fix scaling-guide ‘Collector Timeouts’ symptom metric name 2b5aa07
354 2026-07-02 completed [F-142] Fix wrong self-monitoring metric names in docs/metrics/overview.md 2b5aa07
353 2026-07-02 completed [F-141] Remove docs claim that /status shows network-filter resolution 2b5aa07
352 2026-07-02 completed [F-140] Remove docs claim that MERAKI_EXPORTER_LOGGING__FORMAT=json exists 2b5aa07
351 2026-07-02 completed [F-138] Fix cosign verification docs: certificate identity points at deleted docker-build.yml 2b5aa07
350 2026-07-02 completed [F-080] Inventory cache hit/miss enums declared but never registered; cache-size gauge name diverges from its enum f4add56
349 2026-07-02 completed [F-079] meraki_network_filter_match + inventory cache-size series never expire; filter_match uses a raw literal not an enum f4add56
348 2026-07-02 completed [F-073] meraki_exporter_api_rate_limit_remaining/_total registered but never set (3 dashboards query them) f4add56
347 2026-07-02 completed [F-062] Remove never-observed meraki_exporter_collection_wait_seconds histogram 3181a58 cff7ff9
346 2026-07-02 completed [F-039] Remove frozen collector_success_age_seconds gauge — freezes when runs stop cff7ff9
345 2026-07-02 completed [F-025] Remove phantom pre-initialized zero-forever collector self-metric series 57181fe
344 2026-07-02 completed [F-077] AsyncMerakiClient._request instrumentation is dead: api_duration/api_retry never emit, dashboard latency panels empty 836a6f3 f4add56
343 2026-07-02 completed [F-022] Unsupported span_callback kwarg on RequestsInstrumentor — Meraki span enrichment silently dead 96988f3
342 2026-07-02 completed [F-036] Wrong @log_api_call endpoint name on collect_packet_loss (ByClient vs ByNetwork) 4c15bff
341 2026-07-02 completed [F-063] Cache hits counted as API calls in _track_api_call call sites 246d3e7
340 2026-07-02 completed [F-014] Double-counted meraki_exporter_collector_api_calls_total: @log_api_call + manual _track_api_call fc8c9c2
339 2026-07-03 completed Epic: optional OTLP metrics emission via Prometheus-registry bridge 2b9400c
338 2026-07-02 completed [F-087] collect_org_security_events _metrics.clear() erases every org’s MX security-event series 0710ef7
337 2026-07-02 completed [F-020] MXHACollector _metrics.clear() wipes other orgs’ HA mode/role series 0710ef7
336 2026-07-02 completed [F-001] Multi-org gauge wipe: per-org _metrics.clear() erases other orgs’ series 0710ef7
335 2026-07-02 completed [F-094] Route org device-count gauges through _set_metric so grouped label sets expire d5ec85b
334 2026-07-02 completed [F-038] Implement real Prometheus series removal in MetricExpirationManager 0710ef7 d5ec85b 85c28ca
332 2026-07-02 not planned Add MT20 button-press metric (deferred from #246)
331 2026-07-03 completed Batch getNetworkWirelessDevicesConnectionStats (mr/clients.py) into the org-wide client overview already fetched 4514bf9
330 2026-07-03 completed Add uplink status overview aggregate (org-wide counts by status) ae13759
329 2026-07-02 not planned Insight application health (WAN health scores)
328 2026-07-03 completed General uplink-status fallback / high-availability role for MG (unifies with MX pattern) ae13759
327 2026-07-03 completed eSIM inventory / rate-plan visibility (ops signal, not time-series) ae13759
326 2026-07-03 completed Catalyst wireless controller association info ae13759
325 2026-07-03 completed Power mode change history ae13759
324 2026-07-03 completed Per-AP/per-client signal quality (SNR/RSSI) — deferred pending cost decision ae13759
323 2026-07-03 completed Org-wide per-client wireless packet loss c34a6cc 0528524
322 2026-07-03 completed Org-wide camera detection history by boundary (people/vehicle in/out counts)
321 2026-07-03 completed Implement Systems Manager (SM) device metrics d076e16 cb48291
320 2026-07-03 completed Evaluate adopting meraki.aio.AsyncDashboardAPI (native async SDK) instead of asyncio.to_thread wrapping
319 2026-07-03 completed Expose DNS resolver stats as real Prometheus metrics d666ab7 d2c99b9
318 2026-07-02 completed Document/provide Helm resource-sizing guidance (or an HPA example) for larger orgs a8740e5
317 2026-07-03 completed Surface webhook receiver health on /status f2675a9
316 2026-07-03 completed Add a CI check that dashboard JSON references only real metric/label names
315 2026-07-03 completed Ship a Grafana provisioning example (docker-compose + datasource/dashboard YAML)
314 2026-07-03 completed Support TLS for the OTLP exporter endpoint 2b9400c
313 2026-07-03 completed Add an OTLP metrics exporter (true OTel “mirroring”, not tracing-only) 2b9400c
312 2026-07-03 completed Add a redacted effective-config view (extend /status or new /config endpoint) f2675a9
311 2026-07-03 completed Surface NetworkFilterSettings effective state on /status f2675a9
310 2026-07-03 completed Add a log_format setting (logfmt vs JSON) c98f0ad
309 2026-07-03 completed Add per-metric / per-label cardinality controls beyond whole-collector enable/disable cda95ba
308 2026-07-03 completed MT↔MV sensor relationship info metric 13bf859
307 2026-07-03 completed Wireless mesh link health
306 2026-07-03 completed Org-wide camera onboarding status 13bf859
305 2026-07-03 completed MV Sense (object detection) enablement status 13bf859
304 2026-07-03 completed Add carrier/band + serving-cell detail for MG (complements uplink status) 13bf859
303 2026-07-03 completed Surface MT20 button presses as a distinguishable metric 13bf859 ead1217
302 2026-07-03 completed Sensor alert profiles as a config-count metric 13bf859
301 2026-07-03 completed SAML / SSO configuration posture 13bf859
300 2026-07-03 completed Webhook delivery log / failure tracking c34a6cc 13bf859
299 2026-07-03 completed Top clients/applications/SSIDs by usage (org-wide “top N” summary) 13bf859
298 2026-07-03 completed Adaptive policy overview counters 13bf859
297 2026-07-03 completed Config templates inventory + per-network binding 13bf859
296 2026-07-03 completed Cable/link partner discovery (CDP/LLDP) topology, org-wide 13bf859
295 2026-07-03 completed Link aggregation (LACP) group membership, network-level config 13bf859
294 2026-07-03 completed Org-wide PoE power-draw trend (organization summary) 13bf859
293 2026-07-03 completed Dynamic ARP Inspection (DAI) trusted-port coverage warnings 13bf859
292 2026-07-03 completed Rogue/unauthorized DHCP server detection per network 13bf859
291 2026-07-03 completed RF profile assignment drift tracking 13bf859
290 2026-07-03 completed SSID firewall rule counts (config drift, parity with MX) 13bf859
289 2026-07-03 completed Add VLAN and static route inventory counts 13bf859
288 2026-07-03 completed Add port forwarding / NAT rule counts (config drift) 13bf859
287 2026-07-03 completed Add site-to-site VPN topology config (mode, hub count, subnets advertised) 13bf859
286 2026-07-03 completed Add DHCP subnet utilization 13bf859
285 2026-07-03 completed Add content filtering config-drift metrics 13bf859
284 2026-07-02 completed Explicit guardrail: do not wire liveTools beta endpoints into passive collectors 269ec6a
283 2026-07-02 completed tools/apidrift blind spot: beta-spec endpoints are invisible to drift detection 57455d8
282 2026-07-03 not planned Per-AP radio status metrics (channel / width / DFS radar / tx power / power mode) cd76d8d
281 2026-07-02 completed Document has_beta_api production-risk in operator-facing docs 7638f6e
280 2026-07-03 not planned Per-AP wireless health score metrics (performance / onboarding score) cd76d8d
279 2026-07-03 completed Add a read-only Early Access opt-in state metric 281f899 cd76d8d
278 2026-07-03 completed Add BetaAPISettings config block + per-org has_beta_api detection cache 281f899 cd76d8d
277 2026-07-03 completed Add exporter self-resource metrics (memory/CPU) f76d984 6a8e5dc
276 2026-07-03 completed Add an explicit self-observability metric for total scrape API-call cost per cycle be1ed71
275 2026-07-03 completed Wire up OrganizationInventory.set_ttl_for_tier or remove the dead tier-TTL design 567149c
274 2026-07-03 completed API requests by endpoint/method — replace status-code-only totals f76d984 8084b8b
273 2026-07-03 completed Eliminate the duplicate per-network getNetworkHealthAlerts loop in AlertsCollector
272 2026-07-03 completed Org-wide wireless packet loss by network (replace/augment per-network health loop)
271 2026-07-03 completed Migrate RF channel-utilization to the org-wide endpoint 4514bf9 2cb500d
270 2026-07-03 completed Wire OrgRateLimiter into every collector’s API calls, not just inventory 30b0c3b
269 2026-07-01 completed Sensor-to-gateway connectivity (RSSI + last-connected) 639526b
268 2026-07-01 completed Network-wide “currently alerting sensors” overview 639526b
267 2026-07-01 completed Collect org-wide device statuses + availability change history 639526b
266 2026-07-01 completed Firmware upgrade status & staged rollout tracking 639526b
265 2026-07-01 completed Admin accounts & 2FA/SSO posture inventory 639526b
264 2026-07-01 completed Add org-wide VPN stats (per-uplink-pair latency + data volume) 639526b
263 2026-07-01 completed Add HA / warm-spare redundancy status 639526b
262 2026-07-01 completed Add MX appliance performance score 639526b
261 2026-07-01 completed Add appliance uplink bandwidth usage (bytes sent/received per uplink) 639526b
260 2026-07-01 completed Air Marshal rogue AP / SSID-spoofing detection 639526b
259 2026-07-01 completed Add network-wide wireless latency stats (device + client breakdown) 639526b
258 2026-07-01 completed PSU/power-module redundancy status (org-wide, covers MS + other device types) 0a21fec
257 2026-07-01 completed Add 802.1X / Secure Port authentication status per port 0a21fec
256 2026-07-01 completed Add per-port STP status from the existing port-status payload 0a21fec
255 2026-07-01 completed Camera quality & retention config as an info metric 0a21fec
254 2026-07-01 completed Add per-uplink loss & latency history (wan1/wan2/cellular) 0a21fec
253 2026-07-01 completed Wire up already-declared MV analytics metrics (people counting) 0a21fec
252 2026-07-01 completed Populate MG cellular uplink status/signal (currently zero MG metrics exist) 0a21fec
251 2026-07-01 completed Reconcile or drop MV_RECORDING_STATUS c533579
250 2026-07-01 completed Clean up dead MR metric enum entries c533579
249 2026-07-01 completed Stop constructing a new AsyncMerakiClient per org every FAST-tier cycle in MT collector 86ced18
248 2026-07-01 completed Fix AlertsCollector’s unbounded asyncio.gather fan-out b27c276
247 2026-07-01 completed Fix hardcoded stale service.version in OTel resource attributes 640dafe
246 2026-07-01 completed Add missing MT sensor reading types (no2, o3, pm10, button) 86ced18 c533579
245 2026-07-01 completed Capture port errors/warnings from the port-status call already being made 79c4fc5 c533579
244 2026-07-01 completed Wire up the already-declared MX_SECURITY_EVENTS_TOTAL gauge (IDS/IPS + AMP events) 4705139 c533579
243 2026-07-01 completed Wire the Helm chart’s readinessProbe to the app’s own /ready endpoint 8639c1b
242 2026-07-01 completed Fix the dead first-run API-key error path (and wrong –help env var) dff23c8
226 2026-06-26 not planned [test2] Feature request: MG cellular gateway metrics
225 2026-06-26 not planned [test] Exporter crashes on startup with malformed API key
221 2026-06-26 completed arm64 image broken: ModuleNotFoundError: No module named ‘pydantic_core._pydantic_core’ 98f58db caf73c8 700de3c
218 2026-07-03 completed Still hitting API limit
214 2026-05-08 completed 429 Too Many Requests, retrying in 1 seconds
213 2026-05-08 completed Failed to collect RF health metric b1f9456
212 2026-05-08 completed Feature Request: Allow to filter by networks
199 2026-04-15 completed meraki_mr_radio_broadcasting 120e351
186 2026-03-26 completed MX devices show device up intermittently d22d280 4e40908
68 2026-03-13 completed MX67 Metric Devices
8 2026-03-16 completed Dependency Dashboard

View the source file on GitHub