Evidence ledger 26 sources Checked 26 Sep 2026

Evidence ledger

One row per claim in Every backend you add is a six-year promise: ten years of Grafana Labs in git: who published it, what grade it carries, when it was written, when the link was last checked, and the quote or figure it rests on. Nothing in the guide is cited from memory, so anything not in this table is not in the guide.

Field guide: Every backend you add is a six-year promise: ten years of Grafana Labs, read from its own git history. Research date: 2026-09-26. Every row was read in this session.

How these sources were read, and the limit on this hunt

This session's network policy allowed GitHub and nothing else. Engineering blogs, conference talks, papers, vendor documentation sites and status pages were all refused at the egress proxy (HTTP 403 on CONNECT), including grafana.com, which is where Grafana Labs publishes its own architecture posts and its own Grafana Cloud incident reviews. Two consequences the reader should hold onto:

  1. Every claim here is a git object. Each repository below was cloned in full (git clone --filter=blob:none) and read with git log, git show and git ls-tree. Where a row cites a commit, the SHA is given, so the claim can be re-checked offline with git show <sha> against a clone of the same repository. Nothing is cited from memory, and nothing is cited from a search-result summary.
  2. There is no vendor narrative in this guide, and no first-party incident review. The announcement posts that would normally explain why a change was made were unreachable, so motives are read from commit messages, design proposals, changelogs and go.mod comments, and are marked as inference where they are inference. Grafana Labs' own public postmortems were unreachable; the three operator postmortems below come from other organisations running this stack.

Link convention: file rows link to raw.githubusercontent.com, which is the exact bytes that were read. Commit rows link to the github.com commit or pull-request page, which is the readable view of the same object; those pages answer 403 to scripted requests from this network, which the link checker reports as bot-blocked rather than dead.

# Org Title / artefact Tier Published Checked URL Claim taken from it Supporting quote or figure
1 Grafana Labs grafana/loki commit e59adccf — "create smaller unique files from boltdb shipper and other code refactorings (#2261)" source 2020-07-28 2026-09-26 https://github.com/grafana/loki/commit/e59adccfa0bbdade7dfd7a1e0747c2629064e931 The object-storage-only index (boltdb-shipper) landed in Loki in July 2020 Commit subject as quoted; first commit under pkg/storage/stores/shipper/
2 Grafana Labs grafana/loki commit 8c1095a5 — "Moves TSDB to the stores package. (#5852)" source 2022-04-11 2026-09-26 https://github.com/grafana/loki/commit/8c1095a55447c8d3a9d0b4c222fd4f9ebb578465 The second object-store index generation (TSDB) began in April 2022 First commit under pkg/storage/stores/tsdb/
3 Grafana Labs grafana/loki commit 9a215902 — "chore(dataobj): initial commit of value encoding (#15606)" source 2025-01-07 2026-09-26 https://github.com/grafana/loki/commit/9a21590238c1dfa743438558c5b35b6517c54fe9 A third storage generation ("dataobj") started in January 2025 and has 494 commits touching pkg/dataobj by 2026-09-25 git log --oneline -- "pkg/dataobj/*" \| wc -l → 494
4 Grafana Labs grafana/loki commit 1846a8ff — "chore!: Remove support for BigTable/GCP storage backend (#21502)" source 2026-04-16 2026-09-26 https://github.com/grafana/loki/pull/21502 BigTable index support was deleted in April 2026 Commit subject as quoted
5 Grafana Labs grafana/loki commit 7c647070 — "chore!: Remove deprecated Cassandra storage backend (#21574)" source 2026-04-17 2026-09-26 https://github.com/grafana/loki/pull/21574 Cassandra support was deleted in April 2026, 68.6 months after the replacement shipped Commit subject; deletes pkg/storage/chunk/client/cassandra/*
6 Grafana Labs grafana/loki commit 67bf1e61 — "chore!: Remove deprecated DynamoDB storage backend (#21601)" source 2026-04-20 2026-09-26 https://github.com/grafana/loki/pull/21601 DynamoDB support was deleted three days after Cassandra Commit subject as quoted
7 Grafana Labs grafana/loki commit ba9864c3 — "chore!: Remove deprecated BoltDB Shipper storage backend (#21678)" source 2026-05-15 2026-09-26 https://github.com/grafana/loki/pull/21678 Even the first-generation object-store index was removed, 69.6 months after it shipped Commit subject as quoted
8 Grafana Labs grafana/loki commit 7733be06 — "making clearer that TSDB is the new recommended index" (#9246) source 2023-08-16 2026-09-26 https://github.com/grafana/loki/pull/9246 The documentation first declared the legacy index stores doomed in August 2023, 32.0 months before they were deleted Added lines: "The following are deprecated for the index and will be removed in a future release:", "[Amazon DynamoDB]… Support for this is deprecated and will be removed in a future release."
8b Grafana Labs grafana/loki commit 8b63b66c — "docs: Update supported and deprecated type in Manage > Storage (#12742)" source 2024-04-23 2026-09-26 https://github.com/grafana/loki/pull/12742 A later pass made the same deprecation more visible rather than starting it Diff lines: +### ❌ Deprecated index stores, replacing prose that already said they "will be removed in a future release"
9 Grafana Labs grafana/loki commit 8d82d856 then 5b4cd230 — removal of /api/prom endpoints and its revert eight days later source 2026-06-11 / 2026-06-19 2026-09-26 https://github.com/grafana/loki/pull/22466 A breaking removal that passed review was reverted eight days later Revert commit subject: "revert: Remove deprecated /api/prom API endpoints (#21569) (#22466)"
10 Grafana Labs grafana/loki commit 4245b4a0 — "chore!: Remove targets for Simple Scalable Deployment (SSD) (#21481)" source 2026-06-24 2026-09-26 https://github.com/grafana/loki/pull/21481 The middle deployment topology was withdrawn Commit body: "BREAKING CHANGE: This PR removes the targets write, read, and backend… The Simple Scalable Deployment mode was deprecated and can be remove prior to Loki 4.0"
11 Grafana Labs grafana/loki commit d178f4c7 — "feat: Implement WAL segment ingestion via Kafka with partition ring (#14043)" source 2024-09-10 2026-09-26 https://github.com/grafana/loki/pull/14043 Loki put a Kafka partition log in the write path in September 2024 First commit under pkg/kafka/
12 Grafana Labs grafana/loki commit 88950906 — "fix: dataobj-consumers commit incorrect offset, which can cause data loss (#18833)" source 2025-08-13 2026-09-26 https://github.com/grafana/loki/pull/18833 The new consumer committed offsets that could lose data Commit subject as quoted; a second fix, 44aba622 (2025-08-29), is titled "fix possible data loss in dataobj-consumers (#19060)"
13 Grafana Labs grafana/loki commit 20ea556e — "fix(query-engine): Fix OR operations being silently dropped (#21204)" source 2026-03-19 2026-09-26 https://github.com/grafana/loki/pull/21204 The rewritten query engine silently dropped a logical operator Commit subject as quoted
14 Grafana Labs grafana/loki go.mod at main source 2026-09-25 2026-09-26 https://raw.githubusercontent.com/grafana/loki/main/go.mod Loki still carries a fork of the Cassandra driver five months after deleting the Cassandra backend, and replaces Thanos' object-storage library with its own fork "// Use fork of gocql that has gokit logs and Prometheus metrics.", "replace github.com/thanos-io/objstore => github.com/grafana/objstore"
15 Grafana Labs grafana/mimir go.mod at main source 2026-09-25 2026-09-26 https://raw.githubusercontent.com/grafana/mimir/main/go.mod Mimir replaces Prometheus itself, plus memberlist, regexp, goautoneg, yaml and the OTLP translator, with Grafana forks "replace github.com/prometheus/prometheus => github.com/grafana/mimir-prometheus"; "// Replace memberlist with our fork which includes some changes that haven't been merged upstream yet for years and we don't expect to change anytime soon."; "// Use Mimir fork of prometheus/otlptranslator to allow for higher velocity of upstream development, while allowing Mimir to move at a more conservative pace."
16 Grafana Labs grafana/mimir commit fa86354b — "Chore: Rename from Cortex to Mimir (#121)", and 174f599c — "Apply standard Grafana Labs governance and license (#22)" source 2021-08-11 / 2021-08-05 2026-09-26 https://github.com/grafana/mimir/commit/fa86354b5d47dcaac200bf98005f339df2755b63 The fork was named and relicensed in August 2021, 7.6 months before the public mimir-2.0.0 tag of 2022-03-28 Commit subjects as quoted; git log -1 --format=%ad mimir-2.0.0 → 2022-03-28
17 Grafana Labs grafana/mimir CHANGELOG.md at tag mimir-2.0.0 source 2022-03-28 2026-09-26 https://github.com/grafana/mimir/blob/mimir-2.0.0/CHANGELOG.md Removing one storage engine took eighteen pull requests, listed in a single changelog line "* [CHANGE] Remove chunks storage engine. #86 #119 #510 #545 #743 #744 #748 #753 #755 #757 #758 #759 #760 #762 #764 #789 #812 #813"
18 Grafana Labs grafana/mimir CHANGELOG.md at tag mimir-3.0.0 source 2025-10-31 2026-09-26 https://github.com/grafana/mimir/blob/mimir-3.0.0/CHANGELOG.md Mimir 3.0 removed Redis caching, the read-write deployment mode and the embedded query-scheduler, made its own query engine the default, and defaulted the HA tracker to gossip "[CHANGE] Remove support for Redis as a cache backend. #12163"; "[CHANGE] Remove support for the experimental read-write deployment mode. #12584"; "[CHANGE] Query-frontend: Use the Mimir Query Engine (MQE) by default. #12361"; "[CHANGE] Distributor: Use memberlist by default for the HA tracker. #12998"
19 Grafana Labs grafana/mimir commit 24591ae5 — "Add experimental support to write incoming data to a Kafka-compatible backend (#6888)" source 2023-12-12 2026-09-26 https://github.com/grafana/mimir/pull/6888 Mimir was first of the three to put Kafka in the write path, in December 2023 First commit under pkg/storage/ingest/
20 Grafana Labs grafana/mimir commits 96c92c99, 91972b95, 1bbffa50 — three data-loss fixes in the Kafka ingestion path source 2024-11-20 / 2026-01-24 / 2026-08-28 2026-09-26 https://github.com/grafana/mimir/pull/16493 The new write path produced a repeating class of data-loss bugs over 21 months Subjects: "Fix data loss bug in the experimental ingest storage when a Kafka Fetch is split into multiple requests and some of them return an error (#9963)"; "Block-builder-scheduler: fix data loss bug in partitions that are fully consumed at startup (#14136)"; "Block-builder: fix silent data loss for single-record jobs (#16493)"
21 Grafana Labs grafana/mimir docs/sources/mimir/configure/about-versioning.md vendor read at main 2026-09-26 https://raw.githubusercontent.com/grafana/mimir/main/docs/sources/mimir/configure/about-versioning.md The written guarantee is two minor releases for deprecated features, two years for reading old data, and nothing at all for experimental features "We will keep deprecated features in place for two minor releases."; "The Grafana Mimir maintainers commit to ensuring that future versions can read data written by versions within the last two years."; "We do not guarantee backwards compatibility for experimental features and flags."
22 Grafana Labs grafana/mimir README.md vendor read at main 2026-09-26 https://raw.githubusercontent.com/grafana/mimir/main/README.md The headline scale figure is an internal test, not a measurement anyone else reproduced "Internal testing shows that Grafana Mimir handles up to 1 billion active time series."
23 Cortex maintainers cortexproject/cortex docs/proposals/blocks-storage-bucket-index.md (Marco Pracucci, November 2020) adr 2020-12-09 2026-09-26 https://raw.githubusercontent.com/cortexproject/cortex/master/docs/proposals/blocks-storage-bucket-index.md The design document that moved block discovery off bucket listing, with the numbers that forced it "we would have 400 blocks for a single-tenant cluster, but 4M blocks for a 10K tenants cluster"; "The cold start of queriers and store-gateways (empty caches) take tens of minutes"; "represents a significant % of bucket API calls baseline costs, regardless the tenants QPS (costs we have even if the cluster has 0 queries)"
24 Cortex maintainers cortexproject/cortex commits e5114151 and e3b21d39 — chunks storage deprecated, then "Remove support for chunks storage entirely: Take 2" source 2021-06-18 / 2022-08-10 2026-09-26 https://github.com/cortexproject/cortex/pull/4812 Upstream Cortex took 13.7 months from deprecation to deletion, and needed a second attempt Commit subjects: "Deprecated Cortex chunks storage (#4268)"; "Remove support for chunks storage entirely: Take 2 (#4812)"
25 Grafana Labs grafana/tempo commits 08a49950, fc33ae5f, 2c125a14 — vParquet, vParquet4, vParquet5 block formats source 2022-06-23 / 2024-05-07 / 2025-08-18 2026-09-26 https://github.com/grafana/tempo/pull/1479 Tempo shipped five on-disk formats in 38 months, each with a conversion path First commits under tempodb/encoding/vparquet*; "Add Parquet block format (#1479)"
26 Grafana Labs grafana/tempo commit 3a0fc682 — "Rhythm: Livestore (#5563)" and CHANGELOG.md at v3.0.0 source 2025-08-25 / 2026-05-28 2026-09-26 https://github.com/grafana/tempo/pull/5563 Tempo was last of the three to adopt the Kafka write path, and its 3.0 chose failing over serving incomplete recent data Changelog: "[CHANGE] BREAKING CHANGE Recent data queries guarantee complete results by failing when an instance is lagging. Defaults query_frontend.query_end_cutoff to 30s and live_store.fail_on_high_lag to true."
27 Grafana Labs grafana/agent README.md (archived project) source read at main 2026-09-26 https://raw.githubusercontent.com/grafana/agent/main/README.md Grafana Agent's end of life is stated in the repository itself "Grafana Agent has reached End-of-Life (EOL) on November 1, 2025."
28 Grafana Labs grafana/alloy commit 8c2c7a0f — "all: rename main module to github.com/grafana/alloy" source 2024-03-25 2026-09-26 https://github.com/grafana/alloy/commit/8c2c7a0f69e3936596df24ae57b7d21b9840c702 Alloy is the Agent repository renamed, not a new codebase: both repositories share the initial commit of 2019-11-25 git log --reverse in both repos gives "2019-11-25 initial commit."
29 Grafana Labs grafana/loki commits 572df016, 04294bb7 — "feat: Remove Promtail support" and removal of pkg/promtail source 2026-03-25 2026-09-26 https://github.com/grafana/loki/pull/21245 The log agent that defined Loki's early deployments was deleted 13.4 months after deprecation banners went into the docs (b8b3ed17, 2025-02-12) Commit subjects as quoted
30 Grafana Labs grafana/phlare README.md (archived) source read at main 2026-09-26 https://raw.githubusercontent.com/grafana/phlare/main/README.md Phlare was archived after the Pyroscope acquisition "On 2023-03-15, Grafana Labs acquired Pyroscope… As a result, Grafana Labs Phlare has been archived."
31 Grafana Labs grafana/pyroscope commit 795b2eff — "chore: renames phlaredb to pyroscopedb (#2260)" source 2023-08-17 2026-09-26 https://github.com/grafana/pyroscope/pull/2260 After the acquisition the acquirer's engine survived under the acquired product's name; the acquired code remains at HEAD in pkg/og Commit subject; git ls-tree -d HEAD pkg/ lists both pkg/phlaredb and pkg/og
32 Grafana Labs grafana/beyla README.md source read at main 2026-09-26 https://raw.githubusercontent.com/grafana/beyla/main/README.md The eBPF instrumentation agent was given away to OpenTelemetry rather than kept "Beyla has been donated to the CNCF OpenTelemetry Project, under the project name OpenTelemetry eBPF Instrumentation… All Beyla current maintainers work full time on the upstream repository."
33 Grafana Labs grafana/grafana commits 8db3eb90, and grafana/loki a9d85de4, grafana/tempo 37aeb4d1 source 2021-04-20 2026-09-26 https://github.com/grafana/grafana/commit/8db3eb90ae8c20e1a2bbbad300e0683def9bf8fb Three products were relicensed to AGPLv3 on the same day Commit subjects: "Re-license Grafana to AGPLv3 (#33184)", "Re-license to AGPLv3 (#3630)", "Re-license to AGPLv3 (#660)"
34 Grafana Labs grafana/grafana commit f96e4e9a — "Frontend: Remove Angular (#99760)" source 2025-04-04 2026-09-26 https://github.com/grafana/grafana/pull/99760 The frontend framework present since the 2013-01-25 initial commit was removed in April 2025, 146 months later Commit body: "chore(angularsupport): delete feature toggle to disable angular… feat(angular-support): remove config.angularSupportEnabled"
35 DFDS dfds/postmortems — "PM2024-003 - Kube state metrics exposing wrong labels" postmortem 2024-06-06 2026-09-26 https://raw.githubusercontent.com/dfds/postmortems/master/PM2024-003%20-%20Kube%20state%20metrics%20exposing%20wrong%20labels.md Migrating collectors changed the label set and broke alerts; the fix could not be rolled out the same day "Reason was the configuration change on the labels exposed by the kube state metrics, as a result on our efforts to migrate to Grafana Cloud from our legacy Prometheus setup."; "These alarms had to be silenced until the next day"
36 DFDS dfds/postmortems — "PM2022-001 - Prometheus is down with connection refused errors" postmortem 2022-01-25 2026-09-26 https://raw.githubusercontent.com/dfds/postmortems/master/PM2022-001%20-%20Prometheus%20is%20down%20with%20connection%20refused%20errors.md The single-instance monitoring deployment failed three times in one day through the node under it "No resource requests or limits were set on the Helm chart that deploys the Prometheus pod."; timeline 10:21 to 15:00 UTC with three nodes entering NotReady
37 DFDS dfds/postmortems — "PM2022-007 - Kafka metrics stopped being exported to Prometheus" postmortem 2022-07-07 2026-09-26 https://raw.githubusercontent.com/dfds/postmortems/master/PM2022-007%20-%20Kafka%20metrics%20stopped%20being%20exported%20to%20Prometheus.md Telemetry collection failed on a credential owned by a person, and partial recovery hid missing metrics for another three hours "API key used by kafka exporter belong to a personal account"; timeline: outage closed 10:09, "Reported missing some metrics" 12:03, metrics restored 13:34
38 Zalando zalando-incubator/kubernetes-on-aws — "Total DNS outage in Kubernetes cluster" postmortem 2019-01-07 2026-09-26 https://raw.githubusercontent.com/zalando-incubator/kubernetes-on-aws/dev/docs/postmortems/jan-2019-dns-outage.md An operator incident record kept in the repository rather than on a status page; the pattern this guide relies on for incident evidence "The spike in DNS queries further resulted in a spike in memory usage of CoreDNS pods, which let to the pods running out of memory and getting OOM Killed at the same time."

Tier mix

  • source (git history, changelogs, go.mod, repository READMEs): 29
  • postmortem (operator incident reviews kept in public repositories): 4
  • adr (design proposal): 1
  • vendor (project's own documentation of its guarantees and claims): 2

What the hunt could not reach

  • Grafana Labs' own engineering posts and Grafana Cloud incident reviews (grafana.com): blocked.
  • Conference talks and papers about running these systems: blocked (usenix.org, youtube.com, arxiv.org, infoq.com all refused).
  • GitHub issues and pull-request discussion: the GitHub API is scoped to this session's own repository, so the argument inside a pull request was not readable. Only the merged result, its message, and the code are evidence here. Rejected pull requests, normally the best material in an archaeology of this kind, are therefore absent; the nearest substitute is the reverted commit (row 9) and the second attempt (row 24).
  • Deployment counts, cluster sizes, cost figures and the real blast radius of the data-loss bugs in rows 12 and 20: unpublished, and not derivable from a repository.