# ept/hermitage

What are the differences between the transaction isolation levels in databases? This is a suite of test cases which differentiate isolation levels.

Repository: https://github.com/ept/hermitage
Canonical: https://ross.abutalabs.com/products/hermitage
Homepage: http://martin.kleppmann.com/2014/11/25/hermitage-testing-the-i-in-acid.html
License Family: other
Last push: 2026-01-23T21:00:49+00:00

## Health v2 (maintenance only)
Score: 61/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 63, release rhythm 35, longevity 100
- inputs: {"age_days": 4318, "days_push": 222, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases, no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2743, forks 195 (observed 2026-08-28T04:07:16.629193+00:00)

## What it is
Hermitage is a suite of test cases that probes how different database systems actually implement their transaction isolation levels, simulating concurrency anomalies like write skew and phantom reads. It documents results for PostgreSQL, MySQL/InnoDB, Oracle, SQL Server, FoundationDB, CockroachDB, YugabyteDB, and Memgraph.

## Use cases
- compare transaction isolation levels across databases
- find out what 'repeatable read' actually means in Postgres vs MySQL
- test whether a database prevents write skew
- verify concurrency anomaly behavior before choosing an isolation level
- learn about weak isolation and race conditions in ACID databases
- port isolation tests to a new database system

## When to choose
- you need to understand the real guarantees behind a database's advertised isolation levels
- you're designing systems that depend on transactional concurrency behavior
- you're researching or teaching database isolation and ACID semantics

## When to avoid
- you need an automated CI test framework for your application
- you want a general-purpose database benchmark for performance
- your database isn't covered and you can't port the tests yourself

## Facets
- artifact type: dataset
- maturity: maintenance
- function: testing, database, benchmarking
- domain: databases, testing, microservices, developer-tools
- platform: cross-platform
- tags: transaction-isolation, acid, concurrency-anomalies, test-suite, database-internals

## Member repositories
- ept/hermitage (main) score 61

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:07:16.629193+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T08:19:05.790642+00:00, confidence not recorded.
  - readme: https://github.com/ept/hermitage (fetched 2026-08-28T04:07:16.629193+00:00, sha 41b272d8b8d7)
  - homepage: http://martin.kleppmann.com/2014/11/25/hermitage-testing-the-i-in-acid.html (fetched 2026-08-29T09:57:32.480609+00:00, sha af24a7f29fd7)
  - site_page: https://martin.kleppmann.com/contact.html (fetched 2026-08-29T09:57:32.484549+00:00, sha 8469a858e30f)
- Data as of 2026-08-30T08:39:29.467469+00:00.
