Every number on this page comes from a checked-in, machine-readable report with fixtures and commands in the repo. If a claim can't be re-run, we don't make it.
Three corpora, two lanes, one rule: every number re-runs.
The end-to-end benchmark measures source scanning, extraction, and output writes. The catalog-aware tools also update existing catalogs; the React Intl extraction workflow writes one aggregated extraction artifact and is marked as narrower scope. Every run uses the same logical inventory and is validated semantically. The cached Palamedes re-run is shown separately as a capability, not turned into a competitor speedup claim.
End-to-end extract + catalog update
Three checked corpora
2026-08-14 · Node v24.19.0 · darwin/arm64 · median of 7
Corpus
Palamedes cold
Palamedes warm · 5 files touched
Same-scope tools
80 files, 640 messages
12 ms
9 ms
27–51× slower
240 files, 1920 messages
21 ms
13 ms
24–50× slower
1,500 files (750 with i18n), ~400k lines, 6,000 messages
73 ms
47 ms
30–100× slower
Checked result ledger
Realistic corpus — 1,500 files across ~400k lines, 6,000 messages (median of 7 runs)
Rounded workflow times and relative factors for 1,500 files (750 with i18n), ~400k lines, 6,000 messages. Exact values are available in the checked benchmark report.
* 47 ms is Palamedes on a cached re-run after 5 changed source files; 73 ms is the cold workflow result. No speedup factor is calculated for the non-comparable cached run. Cache details →
Times are rounded to display precision and relative factors are rounded down. Exact medians remain in the checked report. Machine-local run: darwin/arm64, Node v24.19.0, 2026-08-14, median of 7 runs.
02 — Verification
25 apps smoke-checked on relevant changes; 21 browser-checked weekly.
01
Build
All 25 example apps build and smoke-test against the workspace packages on relevant PRs and main pushes — no mocked integrations.
02
Drive
21 browser-capable examples run the Playwright flow weekly or on manual dispatch: load, SSR output, locale switch, and localized server actions.
03
Capture
Screenshots are versioned in the repo, so 'works across frameworks' is a diffable artifact, not a slide.
Fast would be worthless if the catalogs were wrong.
Catalog semantics live in one dedicated engine (ferrocat): parsing, merging, structured audits, and ICU authoring diagnostics. The benchmark harness validates every tool run semantically — message inventories are compared, not just timed.
Structured audits
Machine-readable catalog audits catch missing translations, stale entries, and metadata drift in CI.
ICU diagnostics
Authoring mistakes in plural/select syntax are flagged at extract time, not at runtime in production.
Semantic merging
A Git merge driver resolves catalog conflicts by meaning, not by line — no more broken .po files after rebases.
04 — ICU semantics
ICU stays ICU from source to runtime.
A checked-in nested select + plural message runs through extraction, macro transformation, PO catalog update, catalog compilation, and six executions of the transformed runtime function. The proof compares exact messages and selector structure instead of treating ICU as a yes/no feature checkbox.
26 decisions, written down before you depend on them.
The ADRs cover message identity, the native boundary, adapter architecture — and, just as deliberately, what Palamedes refuses to own. Reading them is the fastest way to know if our tradeoffs match yours.