Every source behind this page, graded. Note the shape of it: this is a corpus
of repository artefacts, because that is what the research environment could reach.
Source
Cloudflare2026-09
workerd compatibility-date.capnp
The whole contract in one schema: 187 flags, 90 with dates, 146 with permanent opt-outs,
39 experimental, 12 retired to dead field numbers, and a running commentary of admissions
about bugs that could not be fixed outright.
Carry forwardIf you version behaviour, keep the versioning in one file that a reviewer can read end to end.
raw.githubusercontent.com/cloudflare/workerd
Decision record
Cloudflare2026-09
workerd docs/api-updates.md
The rule that makes the contract auditable: flags "MUST be documented BEFORE their enable
date", and the author of the flag owns the docs change in the same window.
Carry forwardTie the documentation obligation to the flag's date, not to the release.
raw.githubusercontent.com/cloudflare/workerd
Decision record
Cloudflare2026-09
workerd docs/v8-updates.md
The twelve-step procedure for moving the engine underneath everyone, including rebasing
the local patch series onto each new V8 and an automation script the doc says "has not been
thoroughly tested".
Carry forwardWrite the upgrade procedure down as steps a stranger can run; the patch series is a dependency you own.
raw.githubusercontent.com/cloudflare/workerd
Source
Cloudflare2026-09
workerd patches/v8
41 patch files, including promise context tagging and cross-request promise resolution,
which are the pieces that make one V8 isolate serve many tenants' requests safely.
Carry forwardCount your upstream patches; the number is the true cost of staying on someone else's release train.
github.com/cloudflare/workerd
Postmortem
Cloudflare2023-11
GHSA-g76q-p3jj-mm56, CVE-2023-48230
A Cap'n Proto vulnerability reachable because WebSocket compression is on by default for
compatibility dates from 2023-08-15. Production was patched before disclosure.
Carry forwardEvery dated default silently enlarges the dependency surface of every tenant past that date.
github.com/cloudflare/workerd
Postmortem
Cloudflare2023-05
GHSA-8vx6-69vg-c46f, CVE-2023-2512
Integer overflow in FormData iteration reading from the wrong memory,
impractical to exploit on Cloudflare's own platform, patched in v1.20230419.0.
Carry forwardSelf-hosting a runtime inherits its memory-safety profile without inheriting the operator's resource limits.
github.com/cloudflare/workerd
Source
Cloudflare2026-07
workerd issue 6907: Temporal with a clock stuck at epoch 0
An engine upgrade exposed a new global whose clock bypassed the runtime's virtualised
time, and feature detection in tenant code turned that into JWTs stamped 1970.
Carry forwardInherited behaviour needs an allowlist at the boundary; your flag file only covers what you wrote.
github.com/cloudflare/workerd
Decision record
Cloudflare2026-04
workerd PR 6444: Enable nodejs_compat by default, closed unmerged
The argument in public: globals added, and "setTimeout and setInterval returning an object
rather than a number" as the change with "the greatest potential for introducing problems".
Closed 17 April 2026; the flag carries 2026-08-04 today.
Carry forwardA date mechanism buys you the option to argue for four months instead of shipping or abandoning.
github.com/cloudflare/workerd
Source
Cloudflare2026-09
workerd README and release tags
The promise, "Updating workerd to a newer version will never break your JavaScript code",
alongside a release every day whose version number is that day's date, and the warning that
workerd alone "is not a hardened sandbox".
Carry forwardDaily releases and frozen semantics are the same decision viewed from two ends.
github.com/cloudflare/workerd
Source
Cloudflare2023-08
cloudflare/wrangler-legacy, archived
The Rust CLI, 2,775 commits and 3.2k stars, archived on 3 August 2023 with a deprecation
notice pointing at the TypeScript rewrite.
Carry forwardDeveloper tooling belongs in the users' ecosystem even when the company's centre of gravity is elsewhere.
github.com/cloudflare/wrangler-legacy
Source
Cloudflare2026-09
npm registry: wrangler and @cloudflare/wrangler
Dates the reversal precisely: Rust CLI first published 1 June 2019 and last on 21 February
2023; the TypeScript line starts at 2.0.0 on 8 May 2022, so the two ran side by side for
nine months.
Carry forwardRegistry metadata dates a migration more reliably than any blog post about it.
registry.npmjs.org
Source
Cloudflare2026-09
npm registry: miniflare
0.1.0 on 20 May 2021, 3.0.0 on 17 May 2023 the same day as wrangler 3, and current builds
versioned by calendar date, 5.20260911.0-alpha.
Carry forwardWhen the emulator's version scheme starts matching the runtime's, the emulator has stopped being a separate implementation.
registry.npmjs.org
Source
Cloudflare2026-09
crates.io: pingora, quiche, boringtun, lol_html, foundations
The Rust arc with dates: QUIC in January 2019, WireGuard in March 2019, the HTML rewriter
in November 2019, the proxy framework in December 2022, the service library in January
2024.
Carry forwardA language migration is legible as a sequence of first-publish dates, and the order tells you where the pain was.
crates.io
Vendor
Cloudflare2026-09
pingora README
The claim of more than 40 million requests per second, and the stated reason to adopt it:
a memory-safe alternative for services written in C or C++.
Carry forwardTreat a project README's scale figure as a claim; this corpus contains no independent measurement of it.
raw.githubusercontent.com/cloudflare/pingora
Vendor
Cloudflare2026-09
quiche README
"quiche powers Cloudflare edge network's HTTP/3 support", with the library also shipping
on Android, which is the rare case of a vendor's infrastructure component becoming someone
else's platform dependency.
Carry forwardComponents that leave the building acquire compatibility obligations of their own.
raw.githubusercontent.com/cloudflare/quiche
Source
Node.js2026-09
Node.js doc/api/deprecations.md
The opposite contract, written down: 206 numbered deprecations with 131 already at
End-of-Life, which is what becomes possible when the user chooses the runtime version.
Carry forwardIf you can make users choose a version, you can delete code; if you cannot, you cannot.
raw.githubusercontent.com/nodejs/node
Source
Fastly2024-07
js-compute-runtime CHANGELOG 3.19.0
"use StarlingMonkey by default, --disable-starlingmonkey flag": an entire JavaScript engine
swapped under customer code in one release, with a named way back.
Carry forwardThe opt-out flag is the unit of trust in a hosted runtime, whatever the size of the change behind it.
raw.githubusercontent.com/fastly/js-compute-runtime
Decision record
WinterTC2024-12
wintercg/admin standardization.md
Why the runtime vendors' interoperability group left the W3C for Ecma: "technical standards
development work will need to take place in a TC or WG, rather than a W3C CG".
Carry forwardCross-vendor compatibility needs a venue that can actually publish a specification, or each vendor keeps its own flag file.
raw.githubusercontent.com/wintercg/admin
Source
Vercel2026-09
vercel/edge-runtime
Still active, 915 stars, describing itself as "Developing, testing, and defining the
runtime Web APIs for Edge infrastructure": a third vendor maintaining a fourth definition
of the same surface.
Carry forwardWhere several vendors each define the surface, portability claims are about the intersection, and nobody publishes it.
github.com/vercel/edge-runtime
Vendor
Cloudflare2026-09
cloudflare-docs: per-flag documentation tree
Each compatibility flag has its own markdown file in the public docs repository, which is
the artefact the contributor rule in api-updates.md points at.
Carry forwardOne file per flag makes the contract diffable by outsiders, which is what turns a policy into an audit trail.
github.com/cloudflare/cloudflare-docs
Source
Cloudflare2026-09
workerd commit history: daily release commits
"Release 2026-09-13", "Release 2026-09-12", and so on, cut by an automation account
between ordinary pull request merges from named engineers.
Carry forwardA daily release train is only safe when the semantics a tenant sees are pinned somewhere other than the release.
github.com/cloudflare/workerd
Source
Cloudflare2026-09
workerd Python compatibility annotations
Python Workers carry their own annotation class, pythonSnapshotRelease, for
changes that break memory snapshots, and pin a Pyodide generation by flag, for example
python_workers_20250116 implied after 2025-09-29.
Carry forwardA second language runtime needs its own compatibility axis; dates alone will not carry snapshot or ABI concerns.
raw.githubusercontent.com/cloudflare/workerd
Decision record
Cloudflare2026-09
workerd docs/hardening.md
The C++ rules the runtime is held to: bounds and null checking enabled everywhere, raw
references described as "incredibly dangerous", smart pointers required by default.
Carry forwardIf the safety argument cannot reach a component, write the compensating rules down and enforce them in review.
raw.githubusercontent.com/cloudflare/workerd
Source
Cloudflare2026-09
cloudflare/foundations
The service library the Rust components share: logging, tracing, metrics, memory profiling
and seccomp sandboxing, published on crates.io since January 2024 and now a dependency of
Pingora's own telemetry crate.
Carry forwardA rewrite programme needs a shared operability library early, or each rewritten service invents its own observability.
github.com/cloudflare/foundations