Files
zeekay 917f6c7a87 chains: the emitted registry is the registry again
chains.json held 15 chains. The registry holds 36. Every one of the 21
missing was an external chain — bitcoin, solana, cardano, ethereum,
base, polkadot, xrp, and every EVM L2.

That file exists because Kotlin and Swift cannot import TypeScript, so
the list is committed as JSON for them to read. Which makes it the same
list stored twice, and the second copy went stale: mobile saw no Bitcoin
and no Solana while the web saw both, and nothing anywhere reported a
disagreement.

The generator was never the problem — it serialises CHAINS verbatim.
Nobody ran it. Its own doc comment told them to run `pnpm chains:emit`,
which is not a script in this package; the script is `emit`. A command
that does not exist is a command nobody runs successfully, and the
staleness follows from there.

Re-emitted, and the comment now names the script that exists.

Three tests make not running it visible: the ids match, the records are
byte-identical (a field added to a chain and not re-emitted is the same
failure one level down, and the platforms reading this file would
silently lack it), and the external chains are present by name — since
those are what went missing and would go missing again the same way.
Verified by mutation: truncating the file back to 15 fails all three.
2026-09-11 13:55:54 -07:00
..