Release v0.20.1 - #47
Merged
Merged
Conversation
…escribing the burial gate as armed from genesis
…pin run carries into its mocha children
… the BTC instant The v0.20.0 family was sized 2026-09-16 20:41Z from last-99-block cadences. LTC testnet then ran at about 82 s per block against the 146.6 s that sizing assumed, pulling its producer boundary to 3.2 h out while BTC's stayed 53.0 h out, and DOGE's drifted 7.5 h early. Two legs of one cross-chain match would have crossed the flag day about two days apart, which is what the same-wall-clock-instant rule exists to prevent. Re-measured 2026-09-17 22:45Z over a trailing window as long as the lead being sized: TBTC 152,891 at 576.7 s per block, TLTC 4,889,190 at 82.5 s, TDOGE 67,904,912 at 27.7 s. BTC is unchanged, still keyed to epoch close 153,216 plus 6 buried; LTC and DOGE are converted onto that same instant, and each consumer is its own producer plus six hours at its own measured cadence rather than a block count carried over from the first sizing. Arms the TRAIN_ACTIVATION 0.20.0 row at testnet 153,116, 106 blocks and about 17 h below the BTC producer. resolveRuleSet reads only the local map, so with no row every block above the boundary keeps resolving under 0.19.0, and a manifest naming 0.20.0 halts a fleet in which no build implements it. Records the cadence-window rule the re-cut used and makes the re-size rule per chain instead of BTC-keyed, so an LTC or DOGE drift past the six-hour ordering margin forces a re-cut the way an overrun BTC height already does.
Replace three unconditional placeholders with canonical vectors for activation boundaries and fail-closed inputs. Cover snapshot burial at its current genesis arm, including empty values, unknown networks, and the zero clamp.
The API split moved three computed env reads onto named reads, so the blind spot shrank from seven sites to four and the ratchet follows it down. Measure this table at each sibling's origin ref: the stale 7 came from a working checkout that origin had already moved past, which reddened every venue run while a local run stayed green.
The armed LTC:testnet producer/consumer heights (4891504/4891766) are already behind the live TLTC tip. Ruling dq4 (a), 2026-09-18: LTC:testnet mirror admission ships null on this train and arms on a later train. Sets both heights to null in the canon (protocol/constants.js) and in this repo's shared_rows_2.js twin, with the same replacement comment used across all six carriers.
…margin from freeze Ruling 2026-09-19: margin is 24 hours measured from the freeze, converted per coin at that coin's own measured cadence, not five days. Measured live: TBTC tip 153110, least-squares bound cadence 781.078553 s/block over a 114-block trailing window (about 25.2h span). TDOGE tip 67911061, trailing two-endpoint cadence 25.469118 s/block over a 3400-block window (about 24.1h span). Both sources are explorer.xchain.io, proven live (advancing tip, tip_age_seconds fresh). train_activation.TRAIN_ACTIVATION['0.20.0'].testnet: 153116 -> 153221 (tip + 111 blocks, 24h). mirror_admission_activation.MIRROR_ADMISSION_ACTIVATION: BTC:testnet 153222 -> 153300 (train + 79 blocks, 17h) DOGE:testnet 67911796 -> 67916857 (tip + 5796 blocks, 41h) mirror_admission_activation.MIRROR_ADMISSION_CONSUMER_ACTIVATION: BTC:testnet 153266 -> 153328 (producer + 28 blocks, 6h) DOGE:testnet 67912575 -> 67917706 (producer + 849 blocks, 6h) anchor_reward_activation.ANCHOR_ATTEST_BARRIER_ACTIVATION.testnet: 153266 -> 153328 (rides the same instant as the BTC consumer) LTC:testnet stays null under dq4 (a) and is untouched by this reslide; that carrier state was already landed on develop by a separate lane. This is the canonical copy (xchain-documentation). Five follow-on briefs propagate the identical shared-block edit to xchain-indexer, xchain-hub, xchain-sync, xchain-explorer and xchain-sdk, plus a sixth brief that proves the six-way byte-twin sha256 once all six carriers land.
Adds AMOUNT_REPRESENTABILITY_ACTIVATION, DISPENSER_FRESHNESS_SHAPE_ACTIVATION, PRICE_ZERO_VALIDITY_ACTIVATION and PRICE_BATCHING_FLOOR_ACTIVATION to protocol/constants.js and exports them, so a gate that has no mainnet date is still discoverable from the canon. generate-flag-days.js now reads protocol/constants.js as a second source and renders every published *_ACTIVATION name into protocol/flag-days.md, and test/flag-day-literals.test.js pins the four new maps value-identical to the indexer activation registry. No activation-height value changes: the v0.20.1 re-slid BTC, DOGE and LTC heights are untouched.
…e sync computed-read baseline to 8
pull_request now targets develop as well as master, since xchain-documentation is the one repo whose contributor flow opens PRs against develop. The xchain-indexer sibling checkout is now skipped on a fork pull request so the rest of the suite still runs there with siblings absent, instead of the job failing outright. Operator ruling 2026-09-12, option a.
…n action above the indexed tip The explorer answers a lookup above its indexer's committed action index with a 404 carrying this code, indexed_through and a Retry-After header, and the registry coverage test requires every emitted code to have a row here.
Document the current miner block-size limitation and direct contract testing to Litecoin or Dogecoin testnets.
Validator pages agree on whether cross_chain needs a coin node, the decoder's valid action list includes XBRIDGE, action counts match the SDK's 32, the release train roster matches the thirteen-component trains, and the VM pages describe isolated-vm's prebuilt bindings. The action-count claims test pins the new figures.
…ide claims against the shipped code Covers the node stop and drain pairing, the six consensus lint gates and the two undocumented advisory rules, the banned-Math matcher forms, the stake-snapshot proof error codes and their registry coverage, FILE.GATE_TICKER caret handling, the vote binding-callback preamble, controller-binding rules for bridged tokens and BET feeds, the guard-gas scope, the royalty timestamp, regtest miner poll cadence, health exemption and heartbeat default, and user-guide claims about list locks, escrow payout legs and XBRIDGE.
… licensing carve-out, correct stale protocol claims Adds the hash and size file-entry rows with a bidirectional schema coverage gate, documents the second envelope carrier flag height, the contracts MIT carve-out and the rollcall gate count, fixes the envelope chunking vector length, the SECURITY.md key reference, the action-manifest flag pointers and the clear-reorg-halt guidance, and gates the reference-impl registry entry.
…orrect its conformance premise The three reference-impl consensus headers cite their real paths under reference-impl/consensus and name xchain-indexer as the canonical copy, byte- identical to the other five repos' twins.
Close the API 30 handset as a verification venue and retain it only for biometric unlock and real-camera QR coverage.
…ervice emits
operations.md's GET /utxos/:address example showed "amount": 1, a bare
number. address_queries.js derives it via satoshiToDecimalString(value),
an 8-decimal-place string ("1.00000000"), served verbatim by the public
get_utxos RPC.
…g the service emits
…margin Ruling 2026-09-23: the live testnet tips have passed every height the 2026-09-19 reslide armed, so re-slide to 40 hours of margin to the nearest armed height at the fastest defensible cadence, keeping the prior spacing (producer 17 h above train, each consumer 6 h above its producer, the DOGE producer at the same instant as the BTC producer). Measured live at 2026-09-23T15:55Z: TBTC tip 153698, least-squares bound cadence 383.04 s/block. TDOGE tip 67924122, median cadence 11 s/block. train_activation.TRAIN_ACTIVATION['0.20.0'].testnet: 153221 -> 154074 (tip + 376 blocks, 40h). mirror_admission_activation.MIRROR_ADMISSION_ACTIVATION: BTC:testnet 153300 -> 154234 (train + 160 blocks, 17h) DOGE:testnet 67916857 -> 67942777 (tip + 18655 blocks, 57h) mirror_admission_activation.MIRROR_ADMISSION_CONSUMER_ACTIVATION: BTC:testnet 153328 -> 154291 (producer + 57 blocks, 6h) DOGE:testnet 67917706 -> 67944741 (producer + 1964 blocks, 6h) anchor_reward_activation.ANCHOR_ATTEST_BARRIER_ACTIVATION.testnet: 153328 -> 154291 (rides the same instant as the BTC consumer) LTC:testnet stays null under dq4 (a) and is untouched by this reslide. This is the canonical copy (xchain-documentation); the identical shared-block edit lands on the same branch name in xchain-indexer, xchain-hub, xchain-sync, xchain-explorer and xchain-sdk, byte-identical across all six carriers.
operations/releases.md still stated the original v0.20.0 testnet activation heights (train 153116, mirror admission 153222/153266, DOGE 67911796/67912575), which the fleet never reached before two in-flight v0.20.1 reslides moved them. Split the section so it keeps the heights v0.20.0 actually shipped at cut and adds the heights v0.20.1 currently arms, read from protocol/reference-impl/consensus/gate_registry/shared_rows_2.js and shared_rows_5.js: train 154074, BTC producer/consumer 154234/154291, DOGE producer/consumer 67942777/67944741, ANCHOR_ATTEST_BARRIER_ACTIVATION 154291, and LTC:testnet null under dq4 (a).
The bulk-sync directory was renamed to bulk_sync in the source tree; update the architecture citation to match.
Replace the opaque dq4 (a) decision shorthand with a public explanation for leaving LTC:testnet mirror admission disabled on this train. Comment and prose text only; no activation values changed, and the reference-impl gate rows stay byte-identical to the other five carriers.
Operator ruling D11 (a) 2026-09-23: producer moves from 67942777 to 67936053 and consumer from 67944741 to 67936888, the same-instant rule computed off the 84h trailing block-time mean. BTC:testnet heights are unchanged; their comments now also carry the 84h trailing mean cadence bound. Updates operations/releases.md, protocol/constants.js and the reference-impl gate rows, which stay byte-identical to the other five carriers.
This was referenced Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.20.1
Coordinated platform release across the 13-repo v0.20.1 train.
masterrelease/v0.20.1What changes
153221to154074, with BTC producer/consumer activation at154234/154291, DOGE producer/consumer activation at67942777/67944741, andANCHOR_ATTEST_BARRIER_ACTIVATIONat154291.LTC:testnetmirror admission asnullunder dq4 (a).Sibling release PRs
Filled in by open-release-prs.sh --execute once every PR above has a number: