How to read the risk map before choosing a tool or a contractor

Each incident page grades likelihood from the count of public reports in the last 5 years and grades impact from the impact class those reports state. The caught-by table names 1 to 3 test classes, each with one limitation sentence and a basis label. The What catches this block then lists, in alphabetical order, only the tools and providers whose own documentation or site names those classes.

3 cited public reports · verified 2026-10-21

How the likelihood grade is read

The likelihood grade counts accepted primary and secondary reports from distinct organisations published in the last 5 years.

Six or more reports give high, 3 to 5 reports give medium, and 2 reports give low.

The label prints the count behind the grade, for example "Likelihood: low (2 public reports in 5 years)".

A page with only 1 report inside the 5-year window prints "Likelihood: not published (1 public report in 5 years)".

Nine of the 58 published incidents carry that label.

The model does not weight by company size, industry or the author's opinion.

The model does not produce a single score.

How the impact grade is read

The impact grade uses the impact class each accepted report states: availability, data, money, compliance or degraded.

A majority of reports in data, money or compliance gives high.

A majority in availability gives medium.

A majority in degraded gives low.

When fewer than 2 reports state an impact, the label reads "Impact: unrated (fewer than 2 reports state impact)".

Across the 58 published incidents, 40 grade medium, 11 grade high, 5 grade low and 2 are unrated.

Group pages and the incident index draw a 3x3 grid of likelihood against impact, with unrated impact in a separate row.

How the caught-by limitation is read

Each caught-by row names a test class, the pipeline stage where the class runs, one limitation sentence and a basis label.

The label "cited" means an accepted report for that incident names the test class.

The label "by design analysis" means the link between the incident and the class is the author's reasoning.

The 58 published incidents carry 158 caught-by rows: 17 cited and 141 by design analysis.

Fifteen of the 58 incidents have at least one cited row.

The limitation sentence states what the class misses for that specific incident.

How the What catches this block is built

The What catches this block lists tools and providers for the test classes in the caught-by table of the same page.

A tool appears under a class only when a page in the tool's own documentation describes that class.

A provider appears under a class only when a page on the provider's own site names the matching service.

Marketing pages, reviews and blogs do not create a listing.

Every row carries its source URL and a verification date.

Rows are sorted alphabetically, and the order is not a ranking.

The block does not recommend any entry.

When no entry documents a class, the block prints "No tool in the catalogue documents this test class."

In the current capability matrix, 89 tools document at least one test class.

Thirty-two tools document end-to-end tests (user flows through the real UI against a deployed environment).

Eight tools document migration tests (migrations run against a production-shaped copy with timing and rollback checks).

Ten tools document load and performance tests (traffic replay or synthetic load with latency and resource budgets).

Seven tools document canary and progressive delivery checks (a small share of traffic runs the new version with automated metric comparison).

Five tools document configuration and environment tests (checks that config, flags, secrets and endpoints resolve correctly per environment).

In the current capability matrix, 60 providers name at least one test class.

No provider names canary and progressive delivery checks, configuration and environment tests or synthetic monitoring (scripted checks of key user flows against production on a schedule).

For those three classes, the provider list prints "No provider in the catalogue names this test class on its site."

Worked example

Memory leak in new release grades "Likelihood: low (2 public reports in 5 years)" and "Impact: medium (2 of 2 reports: availability)".

The memory leak page holds 3 accepted reports, and 1 of them falls outside the 5-year window.

In a status page report from 2023, the canary ring did not send enough traffic to an authorization service to expose a memory leak [1].

That build graduated to production at 6:37 PM UTC, and alerts triggered at 6:44 PM UTC [1].

The canary row on the memory leak page is labelled cited because report [1] names the canary ring.

The capability matrix lists 7 tools and no provider for canary and progressive delivery checks.

The load and unit rows on the memory leak page carry the by design analysis label.

The matrix lists 10 tools for load and performance tests and 9 tools for unit tests (tests of one function or class in isolation).

Irreversible migration fails midway grades "Likelihood: low (2 public reports in 5 years)" and "Impact: medium (2 of 4 reports: availability)".

Of its 4 accepted reports, 2 state availability, 1 states degraded and 1 states data.

In an engineering post-mortem (a written review of an incident: timeline, cause, impact and follow-up actions) from 2023, a migration that added a unique UUID field failed partway after new records were written during a backfill of about 400k rows [2].

That report states that no load testing ran against the migration [2].

That report also states that load testing would have had to run while UUID generation was running [2].

In a post-mortem from 2017, a release script completed the schema changes but failed to move data into the new tables [3].

That report names enhanced testing of data migration during schema updates as a follow-up [3].

The migration row and the load row on the irreversible migration page are both labelled cited.

The migration limitation states that migration tests check the schema change itself, not the application code paths that read the new schema.

The matrix lists 8 tools for migration tests and 10 tools for load and performance tests.

A tool listed under migration tests does not close the concurrent-write gap in report [2] unless load runs during the migration.

Reading order for a tool or contractor decision

The steps below read one incident page from the risk card down to the catalogue rows.

  1. Read the likelihood label and note the count of public reports behind it.
  2. Read the impact label and note which impact class holds the majority.
  3. List each test class in the caught-by table with its basis label.
  4. Copy each limitation sentence into the written requirement for the tool or contractor.
  5. Open the source URL on every row of the What catches this block for each listed class.
  6. Compare the verification date on each row with the date of the decision.
  7. Record an empty class list as a gap in the catalogue, not as proof that the class is unnecessary.

Public reports cited

  1. [1]GitHub, 2023-11-03. A performance and resilience optimisation to GitHub's authorization microservice contained a memory leak exposed under high traffic; pods crashed repeatedly, authorization checks failed and pages returned 404s until the change was rolled back. primary Incident with Git Operations, Issues, Pull Requests, Actions, API Requests, Codespaces, Packages, Pages and Webhooks
  2. [2]edX, 2023-02-27. An edX enterprise Django migration that added tables, columns and a unique UUID field failed partway on MySQL 5.7 production and was left partially applied, blocking the deployment pipeline, and stage migrations could not be rolled back from the deploy tool. primary RCA: Enterprise partially-applied licensed course enrollment migration
  3. [3]CEI, 2017-06-13. A CEI ProWrite Cloud release ran a database script that completed the schema changes but failed to move data into the new tables, leaving metadata inaccessible to some users until the release was rolled back and all customer databases were restored. primary June 10, 2017

Questions

How do you check whether a tool or a provider documents a test class?

Read the What catches this block on the incident page. A row appears only when a page in the tool's own documentation, or a page on the provider's own site, names that class. Each row links its source URL with a verification date.

What does by design analysis mean on a caught-by row?

The by design analysis label means the link between the incident and the test class is the author's reasoning rather than a statement in a cited report. The 58 published incidents carry 141 such rows and 17 cited rows.

Why does a cited test class show no providers?

The catalogue lists a provider only when a page on its own site names the matching service. No provider in the current matrix names canary and progressive delivery checks, so the memory leak page cites the canary class and prints the provider empty state.

Does the alphabetical order rank the tools?

No. Rows in the What catches this block are sorted alphabetically, and the block does not recommend any entry.

Why does a published incident show Likelihood: not published?

The label appears when only 1 accepted report falls inside the 5-year window. Nine of the 58 published incidents carry that label.