How this site runs
The Java service behind these pages, and how it is built, tested and paid for. Every number here is either read from the running JVM or carries the date it was measured.
The JVM, right now
- Java
- —
- Framework
- —
- Garbage collector
- —
- AOT cache
- —
- Object headers
- —
- CPUs
- —
- Memory it sees
- —
- Heap ceiling
- —
- Up for
- —
- Revision
- —
Started with
—
The JVM’s own arguments, from api/jvm.args and the image’s entry point; only its -XX options are shown, never system properties.
Read from the running service when the page runs its script.
How a request travels
/*/api/*Startup, measured
| Image | JVM ready | First response after start | Memory at idle | Allocation-heavy request | Collections per request |
|---|---|---|---|---|---|
| Java 21 with a CDS archive, before | 4.23 s | 4,891 ms | 123 MiB | 341 ms | 731 |
| Java 25 with an AOT cache, as shipped | 3.53 s | 4,245 ms | 170 MiB | 342 ms | 256 |
Median of ten cold starts each, in a container limited to one vCPU and 512 MiB, on 3 October 2026: docs/measurements/startup-2026-10-03-0224.md. The full table, the method and why the memory went up are in ADR 0009.
Tests and gates
- 877API testsJUnit 6, in 141 classes
- 537web testsVitest, in 65 files
- 95%of mutants killedPIT on the pure logic: 1301 small faults planted, and the build fails below 90%
- 32 of 32packages null-checkedNullAway in JSpecify mode, with Error Prone, warnings as errors
- 19architecture rulesArchUnit: no cycles, experiments independent of each other, no field injection
- 30API operationsin the public reference, generated from the code, each with a recorded response
- 19,321lines of Javaand 14,391 of tests
- 29,667lines of TypeScript9,758 of CSS, 6,611 of tests
On every push to main and every pull request, CI runs the unit tests on Java 25, a start that fails if the AOT cache does not match, a scan of the image for known vulnerabilities and a scan of the history for secrets. The tests that need a database and the mutation tests run locally, not in CI. The bill of materials is public: /api/sbom/application (ADR 0010).
Counted from the build reports on 8 November 2026 by web/scripts/engineering-facts.mjs.
What it costs
| Part | A month | Why |
|---|---|---|
| HTTPS load balancer | $18–20 | the forwarding rule: the only fixed cost |
| Cloud Run | $0 | within the free tier at this traffic; nothing runs while nobody visits |
| Cloud Storage and CDN | cents | a few megabytes of files and their egress |
In all about $18–20 a month, from October 2026 list prices before the first bill: infra/gcp/README.md.