docs(llm): the v1.5 -> v1.14 D-Chain bump is a re-genesis, not an upgrade

The two lineages derive different genesis blocks. A fleet that keeps its v1.5
store keeps working, but any node whose store is wiped — or any validator added
later — adopts the v1.14 genesis, disagrees at height 0, and is stranded there
forever with isBootstrapped:false and no error naming the cause.

Found by wiping one devnet validator's D store after the roll: it came back on
genesis mpxP6xF3... while the fleet carried Muetn.... Wiping D on all five
converged them, and a subsequent wipe of one node then re-derived every block to
the fleet's exact root.

A matching height is not enough to verify this — every node reports height 0
either way. Compare lastAccepted.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
2026-08-07 21:02:25 -07:00
co-authored by Hanzo Dev
parent e2c5f8dd70
commit 93543e35b2
+23
View File
@@ -2246,6 +2246,29 @@ A D-Chain on **dex < v1.14** has no `atomic.go` and no `drive.go` at all: it
cannot import a C->D intent or export a D->C fill under any configuration. That
is a structurally absent seam, not a misconfiguration.
### D-Chain genesis changed between dex v1.5.x and v1.14.x
**A fleet carrying a v1.5 D-Chain store cannot be joined by a v1.14 node.** The two
lineages derive different genesis blocks, so they disagree at height 0 and no
amount of syncing fixes it:
```
dex v1.5.15 genesis MuetnVSbs1UnPUDTH5q4kgbKcfRx97Djmz... root f8e013a4...
dex v1.14.x genesis mpxP6xF3ahpjdwP6YgjtagSWQCZSR6pziE... root 92ae9d5c...
```
Nodes that keep their old store carry the v1.5 genesis and keep working; a node
whose store is wiped (or any newly added validator) adopts the v1.14 genesis and
is stranded at height 0 forever, `isBootstrapped:false`, with no error that names
the cause.
So the v1.5 -> v1.14 bump is a **D-Chain re-genesis**, not an upgrade. Roll it as
one: wipe `/data/chainData/network-<id>/<D-chain-id>` on every validator as part
of the rollout, one node at a time. Do it while D is at height 0 and there is
nothing to lose. Verify afterwards that all validators report the *same*
`lastAccepted` — a matching height is not enough, since every node reports
height 0 either way.
### Getting liquidity onto D
A seam order is IOC — it never rests — so a cross-chain swap can only trade