Skip to content

Release v0.20.1 - #14

Merged
jdogresorg merged 22 commits into
masterfrom
release/v0.20.1
Sep 24, 2026
Merged

jdogresorg merged 22 commits into
masterfrom
release/v0.20.1

Conversation

@jdogresorg

@jdogresorg jdogresorg commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Release v0.20.1

Coordinated platform release across the 13-repo v0.20.1 train.

  • Base: master
  • Head: release/v0.20.1

What changes

  • Reads RPC error bodies from legacy daemons, preserves the fee pin across wallet reloads, and models per-daemon error shapes in tests.
  • Guards non-numeric RPC timeouts, exempts health checks from API-key enforcement, and defaults the idle heartbeat off.
  • Moves the controller into the API feature directory and splits block, mining-control, body, and key-guard handlers into bounded seams.
  • Pins relocated module paths, suite titles, wall times, and the AT1 identity used by CI.

Sibling release PRs

Filled in by open-release-prs.sh --execute once every PR above has a number:

…endencies stubbed instead of a hand-built double
…ns the controller split left invisible to coverage
Extract authentication, health policy, RPC method construction, and startup wiring into focused modules. Preserve the API facade, ordering, exports, and asynchronous behavior.
Retarget controller and middleware assertions to the extracted API modules. Add direct authentication and startup coverage so the repository coverage gate stays above its function floor.
…eals

The auto-mine loop is mempool-driven only, and IDLE_MINE_INTERVAL_MS was off
by default. After a rail restart that leaves the wallet already funded
(prepareWallet mines nothing) and the mempool empty, height never advances
again until an unrelated transaction lands, so a downstream tracker/encoder
reads stalled indefinitely with no lever short of a manual generate_blocks
call. Default the heartbeat on at startup.js (60s) when the operator leaves
IDLE_MINE_INTERVAL_MS unset; an explicit value, including "0", is still
honored as-is.
…o the 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-run 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 coverage ratchet moves 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.
…emons

sendtoaddress returns a bare txid and settxfee is refused the way Bitcoin Core
31 refuses it, so e2e exercises the real branches instead of the tolerated
fallbacks. Adds fee-pinning e2e coverage and a logger unit test.
…imeout, exempt health from the API key

The startup default matched neither the class default nor the docs, a
non-numeric NODE_RPC_TIMEOUT reached axios as NaN, and the README now lists
the health exemption the Dockerfile healthcheck needs. Removes an
unreferenced module.
…in across wallet reloads, widen the test doubles

The connector reads error bodies from HTTP 500/404 legacy responses so the
wallet-missing recovery works on LTC and DOGE, the settxfee ceiling is
re-pinned after a wallet reload, and the mocks gain wallet-context routes and
the block-control methods.
CONTRIBUTING.md's PR checklist previously said GitHub CI's job and
bin/ci-full.sh do not cover smoke/fuzz/chaos/regression T1 and told
contributors to run them as a separate step. Restate the pre-PR gate
as npm run ci (or bin/ci-full.sh) collecting those hermetic tiers
into the same local run, since they need no external services and
were previously undocumented in any gate.
@jdogresorg
jdogresorg merged commit 8e81839 into master Sep 24, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant