Every source behind this page, graded. The mix is unusual and the reason is
stated at the end of section one: this hunt reached code hosts only, so there are no blogs,
talks or papers here at all.
Postmortem
Cockroach Labs2020-05
Technical advisory 48860: data corruption with snapshots and delete range
Range deletions concurrent with replica garbage collection could corrupt data
permanently, because of a defect in the third-party storage engine. Recovery requires
restoring a backup.
Carry forwardA defect you can only fix by shipping your whole product is a subsystem you own without controlling.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/advisories/a48860.md
Postmortem
Cockroach Labs2024-10
Technical advisory 131639: lease expiration regression loses writes
Sustained disk slowness during lease promotion could move a lease expiry backwards,
allowing two leaseholders and losing writes in multi-range transactions.
Carry forwardTest leases against a slow device, not a dead one; slowness is what produces two owners.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/advisories/a131639.md
Postmortem
Cockroach Labs2026-02
Technical advisory 162085: garbage collection races range splits
A race between MVCC garbage collection and range splits could delete live data. The
interim mitigation disables the bulk-delete optimisation with one cluster setting.
Carry forwardEvery bulk shortcut needs a switch back to the slow path that is safe to flip under load.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/advisories/a162085.md
Postmortem
Cockroach Labs2024-06
Technical advisory 123371: changefeeds drop events during initial scan
A change made to reduce duplicates on restart caused span progress to be forwarded past
unscanned spans. Consumers received incomplete data, detectable only by counting rows.
Carry forwardRow-count reconciliation is the only detector for a pipeline that trades duplicates for omissions.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/advisories/a123371.md
Postmortem
Cockroach Labs2021-11
Technical advisory 71655: zigzag joins produce incorrect results
Wrong answers when two indexes shared nullable trailing columns holding nulls. Fixed by
no longer planning the join in those cases; mitigated by a setting that costs
performance.
Carry forwardA rewrite rule that is only valid for non-null values needs a test that generates nulls deliberately.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/advisories/a71655.md
Postmortem
Cockroach Labs2022-07
Technical advisory 84144: regional by row tables at risk of corruption
Dropping a region succeeded when it should have failed, leaving stale references to a
region enum value and breaking later locality changes. Includes a full reproduction.
Carry forwardAdding a placement dimension adds a reference graph that somebody has to own explicitly.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/advisories/a84144.md
Postmortem
Cockroach Labs2026-02
Technical advisory 161317: silent data loss importing AVRO
An import defect could silently drop rows, affecting versions from v20.1 onward. The
latest member of the class this guide calls the data-out paths, arriving in 2026.
Carry forwardBulk ingest needs a post-load count check, because the loader's success code proves nothing about completeness.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/advisories/a161317.md
Postmortem
Cockroach Labs2018-10 to 2026-05
The advisory index: 73 disclosures in one list
The index page is the corpus. Sorted by date it shows the shift from availability and
authentication defects to wrong answers and silent omissions, and back to a lower
overall rate after 2023.
Carry forwardRead a vendor's defect disclosures in bulk and in order before you read its architecture page.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/advisories/index.md
ADR
Cockroach Labs2023-01
Design record: Read Committed isolation
The document that reverses eight years of serializable-only, and says why: applications
built for Read Committed "often struggle" to move, and adding retry logic is "often
infeasible for existing applications".
Carry forwardMigration friction, not benchmark numbers, is what forces a guarantee to become an option.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/RFCS/20230122_read_committed_isolation.md
ADR
Cockroach Labs2018-03
Design record: parallel commits
Cuts commit latency "in half, from two rounds of consensus down to one" by writing a
STAGED status in parallel with the final batch, and introduces a recovery process for
transactions abandoned in that state.
Carry forwardEvery latency shortcut across a commit boundary creates a new intermediate state that somebody must be able to resolve.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/RFCS/20180324_parallel_commit.md
ADR
Cockroach Labs2018-03
Design record: range merges, with its own disclaimer
Opens by stating that splitting a range was irreversible, and carries a note that the
implementation "encountered serious hurdles with the initial design proposed here",
preserved "for posterity".
Carry forwardA decision record that is annotated when reality diverges is worth ten that are quietly deleted.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/RFCS/20180330_range_merges.md
ADR
Cockroach Labs2018-06
Design record: follower reads
Introduces closed timestamps so that non-leaseholder replicas can serve consistent
historical reads, and names three downstream consumers before any of them existed.
Carry forwardA mechanism that publishes a safe-to-read boundary is reusable; features that need one keep appearing.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/RFCS/20180603_follower_reads.md
ADR
Cockroach Labs2022-07
Design record: shared-process deployments for virtual clusters
Tenant SQL servers start dynamically inside an already-running node process, with a
server registry and routing to avoid one listener per tenant. Written for the managed
service and reused for on-premises multitenancy.
Carry forwardTenant isolation is a dial, not a switch; the same product moved it from process to address space when latency mattered more.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/RFCS/20220720_shared_process_deployments.md
ADR
Cockroach Labs2021-06
Design record: distributed token bucket for tenant cost control
Rate limits tenant work against a budget in "request units" tied directly to a dollar
amount. Notable for what it points at: the motivating document is an internal-only
record in a private repository.
Carry forwardWhen the money model moves into a private repository, the public design record stops explaining the system's incentives.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/RFCS/20210604_distributed_token_bucket.md
ADR
Cockroach Labs2015-07
Design record: segmented storage, rejected
One of the rejected records that make the directory worth reading. The status field
distinguishes completed, rejected, obsolete, postponed and superseded, so the corpus
records paths not taken as well as those taken.
Carry forwardA status vocabulary that includes obsolete and superseded is what lets a record stay honest for a decade.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/RFCS/20150729_segmented_storage.md
ADR
Cockroach Labs2024-05
The design-record README, after the process was retired
"This review process is deprecated. Existing docs are left for archival purposes." The
replacement process lives on an internal wiki. The change lands between the v23.2.0 and
v24.1.0 tags.
Carry forwardCheck whether a vendor's public reasoning is still being written before you rely on it for a decision.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/RFCS/README.md
ADR
Cockroach Labs2021 to 2024
Admission control tech note
States the goal as moving queueing out of the goroutine scheduler into queues that can
differentiate, names CPU overload and LSM read amplification as observed problems in real
clusters, and excludes memory because it is non-preemptible.
Carry forwardOverload control is only worth building where the resource is preemptible; say which resources you are not protecting.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/tech-notes/admission_control.md
Source
Cockroach Labs2022 onward
Unoptimised query oracle and cost fuzz roachtests
Generated statements are run twice, once normally and once with optimiser rules
disabled with probability one half or one, and the result sets compared. Setups include
nine-node geo-distributed clusters and multi-region schemas.
Carry forwardBuild a deliberately slow reference path and diff against it; it is the only cheap detector of silent wrongness.
raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/unoptimized_query_oracle.go
Source
Cockroach Labsv19.1 to v26.1
.gitmodules across eighteen release tags
Nine submodules at v19.1.0 including rocksdb, snappy, cryptopp and googletest; four at
v26.1.0. The storage engine and its supporting C libraries leave together at v21.1.0.
Carry forwardDependency manifests at tags are the cheapest honest timeline of what a project stopped depending on.
raw.githubusercontent.com/cockroachdb/cockroach/v19.1.0/.gitmodules
Source
Cockroach Labsv24.3.0
Store liveness support manager
The first tag where liveness support is exchanged between stores rather than read from
a single system range. It arrives one month after the advisory about lease expiration
regression.
Carry forwardWhen a shared range is the substrate for safety, its failure mode is the cluster's failure mode.
raw.githubusercontent.com/cockroachdb/cockroach/v24.3.0/pkg/kv/kvserver/storeliveness/support_manager.go
Source
Cockroach Labs2026-09
Generated cluster settings table
The public switch surface, generated from the code at each release: 172 rows at
v21.2.0, 387 at v26.1.0. Only ten of the 73 advisories can be mitigated by flipping one
of them.
Carry forwardCounting your switches is easy; knowing which failure each one buys you back is the work.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/generated/settings/settings.html
Source
Cockroach Labs2026-09
Two TLA+ specifications, and only two
Parallel commits and store liveness. Both are protocol changes whose failure mode is a
silent loss of a guarantee rather than an outage.
Carry forwardSpend formal methods where the failure is invisible, not where it is merely expensive.
raw.githubusercontent.com/cockroachdb/cockroach/master/docs/tla-plus/StoreLiveness/StoreLiveness.tla
Source
Cockroach Labs2020 onward
Pebble: README and the RocksDB differences document
States that Pebble inherits the RocksDB file formats and targets only the features
CockroachDB needs, and documents the implementation divergences in detail. Its own
design records continue after the main product's stopped.
Carry forwardFormat compatibility is what turns a rewrite into an upgrade; design for it before you decide to rewrite.
raw.githubusercontent.com/cockroachdb/pebble/master/docs/rocksdb.md
ADR
PingCAP2018 to 2026
TiDB design documents, still being written
113 dated design documents in the public repository, including seven in 2024, five in
2025 and seven by August 2026. The contrast that dates the closure of the other
vendor's public record.
Carry forwardCompare vendors on whether they still argue in public, not on whether they once did.
raw.githubusercontent.com/pingcap/tidb/master/docs/design/README.md
ADR
Yugabyte2026-09
YugabyteDB design documents, with named owners
A design directory whose index lists a reference engineer per feature, and which
describes DocDB as inspired by Spanner and built on RocksDB: the storage-engine decision
answered the other way.
Carry forwardTwo competent teams split on owning the storage engine; the deciding variable is whether you can patch it on your own schedule.
raw.githubusercontent.com/yugabyte/yugabyte-db/master/architecture/design/README.md
Vendor
Cockroach Labs2026-09
Release register and support policy
636 release entries, 393 of them production, with dates. Two major versions a year
through 2023, then three or four, under a policy that splits releases into Regular and
Innovation with different support phases.
Carry forwardA faster major-version cadence moves upgrade cost onto the operator; read the support phases before agreeing to it.
raw.githubusercontent.com/cockroachdb/docs/main/src/current/releases/release-support-policy.md