Release v0.20.1 - #49
Merged
Merged
Conversation
…push, release and hotfix refs unchanged
Move migration scanning and ledger reads behind the service facade. Preserve migration guard behavior while reducing oversized file and function counts.
Use the migration scan reader when callers omit injected dependencies. Add a regression test that exercises the production default path.
Render a private HUB_CONFIG_URL independently of the indexer feed endpoint. Preserve the private hub key for config polls while allowing per-stack credential overrides.
Move migration precondition registrations into focused suite parts while preserving shared hooks. Keep title pin coverage and async execution order unchanged.
Extract module-scope helpers for shared, per-coin, validator, and bitcoin checks. Preserve hook count, test order, fixtures, assertions, and synchronous execution.
Extract path precedence, capability detection, and refusal test registration into synchronous module-scope helpers. Preserve test callback text, title order, and await behavior while lowering the oversized-function count.
Move CLI and operation environment reads behind live config accessors while preserving names, defaults, coercion, and timing. Keep the decoupled structure gate at the existing signer-only baseline without widening exemptions.
MT3 needs one dispatched run that covers bitcoin, litecoin and dogecoin against a named ref. The schedule trigger already covers all three coins but never takes a ref, and a dispatch could name a ref but only one coin. Add coin: all to the workflow_dispatch choice input and extend the matrix expression so all expands to the same three-coin array the schedule uses, while every existing single-coin choice and the scheduled behaviour are unchanged.
…case path xchain-decoder renamed src/clear-reorg-halt.js to src/clear_reorg_halt.js; the clear-reorg-halt command runs that file inside the decoder container by path. Re-applied at the current location of the function and its test, module_operations/module_controls.js, after the module_operations split moved both off the file this fix originally touched.
The two regtest cases pushed the coin-wallets describe past the 60-line readability limit, which the code-structure gate refuses on push. Same assertions, own block.
…nd container port
…e sweep Generated block: do not hand-edit it. Change the tier config and re-run the tier wirer, which owns both this file and the hook so the two cannot drift. The pre-push venue gate ran the whole GitHub transcript on every push, coverage re-runs and perf scenarios included. That is the right set to grade a release with and the wrong set to pay for on every push, especially while three venues serve every repo on the platform: a long gate does not just cost its own minutes, it forms a queue behind itself for every other session pushing that hour. A push now grades the fast tier. The tiers named in the generated block move to the scheduled full sweep, which already runs against every repo every three hours and before any release or deploy, so nothing stops being graded. The verdict line is rewritten with it, which is the part that matters: a fast run can no longer print "all tiers green (same set GitHub CI runs)". It prints which tiers were deferred and states plainly that they were NOT graded there, so a fast green can never be mistaken for a full one. The dispatcher's verdict cache is keyed on repo + sha + cmd, so a fast green cannot stand in for a full one either.
… stop stopContainerByName now carries the container's exit code out, and a non-zero exit other than a kill warns and names the service's own drain timer, so an overrun drain that exits 1 no longer reads as clean. The killed-branch text explains that raising the per-service stop override alone does not lengthen the drain, and operations.md documents the pairing.
…nd an unused registry read
…op budget The node forwards SHUTDOWN_TIMEOUT_MS as its stop budget minus 20 s unless the module config sets it, so the drain always fits inside the stop; defaults keep 100000, and a container not yet recreated gets a warning.
Give the real-shell freshness probe a scoped timeout for cold macOS proxyquire loads while keeping the test file within its structure budget.
The regtest grace list predates the bridge-family barriers, so an armed regtest indexer kept their 120 s frozen grace. A bitcoin-only venue never finalizes a transfer and never paid for it; the litecoin and dogecoin legs get their gas over the bridge, so after the first transfer every block past the newest effective_time was deferred eight times, about 2m10s, before it parsed. On nightly run 35829816064 every e2e step on those legs took about 130 s against about 10 s on bitcoin, and both legs hit the 360-minute job budget. HUB_SYNC_BRIDGE_GRACE_S and HUB_SYNC_POLICY_GRACE_S now join the other six in the regtest passthrough and default to 0 there; the indexer still ignores both off regtest. The nightly pins them to 2 s beside the anchor-attest grace.
The MT3 matrix ran each coin's full action suite on one runner: 3h14m on bitcoin (run 35605562229), and the two-stack litecoin and dogecoin legs hit the 360-minute ceiling. A plan job now splits test/actions into five weight-balanced groups (scripts/e2e_shard_plan.js, weights measured off that run), each e2e-shard (<coin>, <n>) job boots its own stack and runs only its groups through e2etest's existing testName argument, and shard 1 also runs security and performance. The per-coin aggregate keeps the old job name e2e (<coin>) and artifact e2e-logs-<coin>, so preflight.js and judge-matrix.js read the run unchanged. It fails its coin unless every planned shard uploaded, exited 0, ran tests and failed none (scripts/e2e_shard_merge.js), then writes one bannered action log with the summed summary last and keeps the raw shard logs as .log.txt.
This was referenced Sep 23, 2026
release: pin the v0.20.1 manifest to the signed sibling tags
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
Sibling release PRs
Filled in by open-release-prs.sh --execute once every PR above has a number: