Skip to content

Release v0.23.0 - #25

Merged
jdogresorg merged 141 commits into
masterfrom
release/v0.23.0
Oct 12, 2026
Merged

jdogresorg merged 141 commits into
masterfrom
release/v0.23.0

Conversation

@jdogresorg

Copy link
Copy Markdown
Contributor

What this release carries

Added

  • Added dispenser address collapse, purge grace and expiration extension undo, each behind an activation.
  • Enforced newest-first protocol time windows and the protocol time history bound.

Changed

  • Required unsigned BIGINT transaction id columns and asserted them at startup.
  • Pinned the BIGINT migration checksum rebaseline so the widened ids migration heals in place.

Fixed

  • Preserved stale mempool read metadata and kept a known reorg halt on a database ping failure.
  • Validated block hashes from the node and carried JSON-RPC error codes on HTTP 200 errors.

Testnet activation

  • MIRROR_ADMISSION_ACTIVATION.BTC:testnet on BTC:testnet at height 154234
  • MIRROR_ADMISSION_ACTIVATION.LTC:testnet on LTC:testnet at height 4903068
  • MIRROR_ADMISSION_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67936053
  • MIRROR_ADMISSION_CONSUMER_ACTIVATION.BTC:testnet on BTC:testnet at height 154291
  • MIRROR_ADMISSION_CONSUMER_ACTIVATION.LTC:testnet on LTC:testnet at height 4903291
  • MIRROR_ADMISSION_CONSUMER_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67936888
  • ANCHOR_ATTEST_BARRIER_ACTIVATION.BTC:testnet on BTC:testnet at height 154291
  • TOKEN_BRIDGE_ACTIVATION.BTC:testnet on BTC:testnet at height 154567
  • TOKEN_BRIDGE_ACTIVATION.LTC:testnet on LTC:testnet at height 4903068
  • TOKEN_BRIDGE_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67951140
  • TOKEN_POLICY_INHERITANCE_ACTIVATION.BTC:testnet on BTC:testnet at height 154567
  • TOKEN_POLICY_INHERITANCE_ACTIVATION.LTC:testnet on LTC:testnet at height 4903068
  • TOKEN_POLICY_INHERITANCE_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67951140
  • ORACLE_PRICE_AGE_HOURLY_ACTIVATION.BTC:testnet on BTC:testnet at height 154778
  • ORACLE_PRICE_AGE_HOURLY_ACTIVATION.LTC:testnet on LTC:testnet at height 4905005
  • ORACLE_PRICE_AGE_HOURLY_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956923
  • LIST_SHARE_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • LIST_SHARE_ACTIVATION.LTC:testnet on LTC:testnet at height 4905004
  • LIST_SHARE_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956922
  • LIST_SHARE_CONSUMER_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • LIST_SHARE_CONSUMER_ACTIVATION.LTC:testnet on LTC:testnet at height 4905004
  • LIST_SHARE_CONSUMER_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956922
  • LIST_UNION_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • LIST_UNION_ACTIVATION.LTC:testnet on LTC:testnet at height 4905004
  • LIST_UNION_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956922
  • LIST_TRANSFER_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • LIST_TRANSFER_ACTIVATION.LTC:testnet on LTC:testnet at height 4905004
  • LIST_TRANSFER_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956922
  • LIST_ADDRESS_REF_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • LIST_ADDRESS_REF_ACTIVATION.LTC:testnet on LTC:testnet at height 4905004
  • LIST_ADDRESS_REF_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956922
  • LIST_TICK_COIN_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • LIST_TICK_COIN_ACTIVATION.LTC:testnet on LTC:testnet at height 4905004
  • LIST_TICK_COIN_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956922
  • MARKET_LIST_SOURCE_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • MARKET_LIST_SOURCE_ACTIVATION.LTC:testnet on LTC:testnet at height 4905004
  • MARKET_LIST_SOURCE_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956922
  • LIST_CHANGE_REMATCH_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • LIST_CHANGE_REMATCH_ACTIVATION.LTC:testnet on LTC:testnet at height 4905004
  • LIST_CHANGE_REMATCH_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67956922
  • LIST_SHARE_PRODUCER_ACTIVATION.BTC:testnet on BTC:testnet at height 154777
  • ORACLE_HOURLY_WINDOW_FIRST_ROUND.testnet on oracle:testnet at height 5082
  • ANCHOR_EMPTY_FOLD_REJECT_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • ANCHOR_EMPTY_FOLD_REJECT_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • ANCHOR_EMPTY_FOLD_REJECT_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • COOLDOWN_MATURITY_ESCROW_REVERSAL_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • COOLDOWN_MATURITY_ESCROW_REVERSAL_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • COOLDOWN_MATURITY_ESCROW_REVERSAL_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • DISPENSER_REFILL_POLICY_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • DISPENSER_REFILL_POLICY_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • DISPENSER_REFILL_POLICY_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • ATTEST_RELAY_RESPONSE_DEADLINE_ACTIVATION.BTC:testnet on BTC:testnet at block time 1791804379
  • ATTEST_RELAY_RESPONSE_DEADLINE_ACTIVATION.LTC:testnet on LTC:testnet at block time 1791804379
  • ATTEST_RELAY_RESPONSE_DEADLINE_ACTIVATION.DOGE:testnet on DOGE:testnet at block time 1791804379
  • BRIDGE_ROW_FIELDS_TERMINAL_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • BRIDGE_ROW_FIELDS_TERMINAL_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • BRIDGE_ROW_FIELDS_TERMINAL_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • ADMIT_CHAIN_MARGIN_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • ATTEST_BATCH_HEAD_STATE_HASH_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • ATTEST_BATCH_HEAD_STATE_HASH_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • ATTEST_BATCH_HEAD_STATE_HASH_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • ANCHOR_PREACTIVATION_STATUS_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • ANCHOR_PREACTIVATION_STATUS_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • ANCHOR_PREACTIVATION_STATUS_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • ANCHOR_ARCHIVE_FOLD_TERM_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • ANCHOR_ARCHIVE_FOLD_TERM_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • ANCHOR_ARCHIVE_FOLD_TERM_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • CROSS_CHAIN_REMOTE_TOKEN_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • CROSS_CHAIN_REMOTE_TOKEN_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • CROSS_CHAIN_REMOTE_TOKEN_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • SEND_GATED_TOTAL_TICK_ID_ACTIVATION.BTC:testnet on BTC:testnet at block time 1791804379
  • SEND_GATED_TOTAL_TICK_ID_ACTIVATION.LTC:testnet on LTC:testnet at block time 1791804379
  • SEND_GATED_TOTAL_TICK_ID_ACTIVATION.DOGE:testnet on DOGE:testnet at block time 1791804379
  • PRICE_LANDED_STRICT_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • PRICE_LANDED_STRICT_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • PRICE_LANDED_STRICT_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • ATTEST_RELAY_FEE_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • ATTEST_RELAY_FEE_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • ATTEST_RELAY_FEE_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • BIGINT_SURFACE_STRIP_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • BIGINT_SURFACE_STRIP_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • BIGINT_SURFACE_STRIP_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • ACTION_ADMISSION_DISPATCHED_ONLY.BTC:testnet on BTC:testnet at height 156230
  • ACTION_ADMISSION_DISPATCHED_ONLY.LTC:testnet on LTC:testnet at height 4912984
  • ACTION_ADMISSION_DISPATCHED_ONLY.DOGE:testnet on DOGE:testnet at height 67989993
  • VM_LINT_BANNED_WITH_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • VM_LINT_BANNED_WITH_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • VM_LINT_BANNED_WITH_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • VM_LINT_NESTING_DEPTH_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • VM_LINT_NESTING_DEPTH_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • VM_LINT_NESTING_DEPTH_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • DISPENSER_DELAY_PROTOCOL_TIME_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • DISPENSER_DELAY_PROTOCOL_TIME_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • DISPENSER_DELAY_PROTOCOL_TIME_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • BRIDGE_POLICY_REFUSAL_RECORD_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • BRIDGE_POLICY_REFUSAL_RECORD_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • BRIDGE_POLICY_REFUSAL_RECORD_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • PRICE_WIRE_TRAILING_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • PRICE_WIRE_TRAILING_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • PRICE_WIRE_TRAILING_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • ORACLE_SNAPSHOT_AGE_SECONDS_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • ORACLE_SNAPSHOT_AGE_SECONDS_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • ORACLE_SNAPSHOT_AGE_SECONDS_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • BET_FEED_LIST_EDIT_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • BET_FEED_LIST_EDIT_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • BET_FEED_LIST_EDIT_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • CROSS_CHAIN_OFFER_LIST_EXPORT.BTC:testnet on BTC:testnet at height 156230
  • CROSS_CHAIN_OFFER_LIST_EXPORT.LTC:testnet on LTC:testnet at height 4912984
  • CROSS_CHAIN_OFFER_LIST_EXPORT.DOGE:testnet on DOGE:testnet at height 67989993
  • VM_LINT_DESTRUCTURE_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • VM_LINT_DESTRUCTURE_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • VM_LINT_DESTRUCTURE_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • GOV_TALLY_FAILOVER_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • BRIDGE_PROOF_READY_SNAPSHOT_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • BRIDGE_PROOF_READY_SNAPSHOT_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • BRIDGE_PROOF_READY_SNAPSHOT_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • LANDING_CLEAR_FRONTIER_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • LANDING_CLEAR_FRONTIER_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • LANDING_CLEAR_FRONTIER_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993
  • REORG_SNAPSHOT_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • CROSS_CHAIN_OFFER_LIST_ENFORCEMENT.BTC:testnet on BTC:testnet at height 156230
  • CROSS_CHAIN_OFFER_LIST_ENFORCEMENT.LTC:testnet on LTC:testnet at height 4912984
  • CROSS_CHAIN_OFFER_LIST_ENFORCEMENT.DOGE:testnet on DOGE:testnet at height 67989993
  • FEDERATED_HUB_ACTIVATION.BTC:testnet on BTC:testnet at height 156230
  • FEDERATED_HUB_ACTIVATION.LTC:testnet on LTC:testnet at height 4912984
  • FEDERATED_HUB_ACTIVATION.DOGE:testnet on DOGE:testnet at height 67989993

Release v0.23.0

Base: master at d204894371c884dad2febe1cbdec24bd87e2dee0
Head: release/v0.23.0 at ae761b838307cdd9578b2fa05b7b8859bdaff795

Landed refs

  • ae761b8 Release v0.23.0
  • f420f29 Merge: Classify mempool payments against the open-dispenser set
  • da334c1 Classify mempool payments against the open-dispenser set
  • b35dae6 Merge: Read DECODER_DB_* in the decoder entry points through src/config.js
  • a8ecd7a Read DECODER_DB_* in the decoder entry points through src/config.js
  • e9bd652 Set the repo git identity at session start and turn attribution off
  • 40ccc72 Merge: Enforce migration residue pin sort order
  • de37d9a Merge: Re-take the suite-title pin against the current test tree
  • fd19b9b Enforce migration residue pin sort order
  • f77b0d0 Re-take the suite-title pin against the current test tree
  • b6ad513 Merge: sync trunk
  • 2bfbac0 sync trunk
  • 53f986f Merge: Trim activation documentation below structure limit
  • 2327779 Trim activation documentation below structure limit
  • 5dd6def Split exact expiration test and trim registration comments to meet structure limits
  • b5a7f39 Clarify exact expiration validation comment
  • f132e51 Gate exact dispenser expiration validation
  • 3ff58cf Merge: docs(decoder): explain dispatched batch admission
  • 96abf14 Merge: Pin declared sibling main checkouts
  • 434b56c Keep wide expiration gate out of the activation-map rule
  • ed4a3f3 docs(decoder): explain dispatched batch admission
  • 069fc43 Sync decoder action manifest identity
  • 89b2146 Pin declared sibling main checkouts
  • ede8029 Clamp wide dispenser expirations in decoder
  • 040fca4 Fix 12 review findings in xchain-decoder
  • 87d6dd8 Merge: test: enforce mempool stale fallback in api suite
  • cb29fbb test: enforce mempool stale fallback in api suite
  • d5ba2f6 test: prove stale mempool fallback behavior
  • 278209d refactor: split mempool stale read helpers
  • bdf77d1 fix: preserve stale mempool read metadata
  • c0fe2c4 fix: review round corrections
  • 57c915c fix: review round corrections
  • dc99588 Repin the vendored action manifest hash after the BET format 4 re-vendor.
  • 047268d Re-vendor the action manifest so BET format 4 matches the canonical copy.
  • 21981e1 Merge: Split dispenser registration test declarations
  • 1544a56 Merge: Add dispenser address ID collapse activation
  • 49ed46d Split dispenser registration test declarations
  • df5e6b8 Gate dispenser registration collapse by address id
  • a5cdf69 Add dispenser address ID collapse activation
  • 1c1dcee Merge: sync trunk
  • e6da362 sync trunk
  • d94e90e Merge: Add keyed dispenser registration collapse
  • a56d5a9 Add keyed dispenser registration collapse
  • 5a078be Merge: Add dispenser address key helper
  • 30c1792 Add dispenser address key helper
  • caab0bf Merge: Declare startup registry title rename
  • 8bf53fb Declare startup registry title rename
  • de4ced0 sync trunk
  • fa4e795 sync trunk
  • 5859ea1 Merge: Preserve cancellation grace test titles
  • 6c0c6b7 Merge: Enforce newest-first protocol time windows
  • 1dfa037 Enforce newest-first protocol time windows
  • 13bdcce Split BIGINT migration guard tests
  • 2576023 Require unsigned transaction BIGINT columns
  • 7513f72 Preserve cancellation grace test titles
  • 51e3bd1 Pin BIGINT migration checksum rebaseline
  • af1f562 Split cancellation grace test suite
  • c3fba3d Gate dispenser purge on cancellation grace
  • 94f0788 sync trunk
  • 734f188 Merge: Handle staged documentation constant rollout
  • a081c8c Re-sync the coin registry from the canonical xchain-hub/src/coins
  • 4f176bd Split BIGINT migration guard tests
  • 4e2b866 sync trunk
  • 7ff9b8c Fix decoder mempool admission, reorg verification, migration guard and sync status findings
  • 22b2875 Handle staged documentation constant rollout
  • 4eae715 sync trunk
  • 22e947f Merge: Enforce protocol-time history bound
  • 9e06b16 Merge: test(decoder): verify published envelope chunk vectors
  • 7378a5c Enforce protocol-time history bound
  • f4cf047 Restore dispenser purge safety invariant
  • 3d5258c Document protocol-time caller ordering
  • 66cc1b4 Add dispenser purge grace activation map
  • edac802 test(decoder): verify published envelope chunk vectors
  • 13ac5eb Require BIGINT ID assertion during startup
  • e093c05 Repair migration assertion gate compatibility
  • a970132 test(decoder): refresh action manifest fixture
  • 6e78693 Assert transaction ID columns are BIGINT at startup
  • 58261be Merge: test(decoder): guard coin parity through sibling trust
  • 16e8154 test(decoder): guard coin parity through sibling trust
  • 3e3eb52 Review round 2026-10-06, third pass: 1 review fix in xchain-decoder
  • 297e85a Merge: Clarify AGPL attribution term
  • 5844478 Clarify AGPL attribution term
  • e406513 Review round 2026-10-06: 4 review fixes in xchain-decoder
  • f1bab88 Merge: sync trunk
  • 5f7f3ee Merge: Add the CLA Assistant step to the PR checklist in CONTRIBUTING.md
  • 8ae0447 Merge: Declare the deleteBlockByIndex title rename from 4 to 5 DELETE queries in the suite-title rename map
  • 27f12d8 Add the CLA Assistant step to the PR checklist in CONTRIBUTING.md
  • a9c0cf7 Declare the deleteBlockByIndex title rename from 4 to 5 DELETE queries in the suite-title rename map
  • aec20e3 Prove the extension undo table is reconciled by the startup schema check, so no migration is needed
  • 7ed9c08 sync trunk
  • b52e51e Bring extension undo tests under the structure limits: split two long test bodies and drop a redundant double that pushed a test file to 401 lines
  • db41649 sync trunk
  • bc5b30c Fix extension undo test doubles: single mock method, restore ordering and fifth reorg DELETE
  • e02981c Guard the bufferutils patch twin against the utxo-tracker copy (review 10159)
  • e7d3d7e Pin VALID_ACTION_NAMES membership as a consensus flag-day surface
  • bf1be41 Validate block hashes from the node, carry JSON-RPC error codes on HTTP-200 errors, keep a reorg halt sticky past its TTL and refuse lax SQL mode in clear_reorg_halt (review 10113 10115 10140 10052)
  • 6f284ae Pin executable migration residue at commit time, ported from the indexer (review 10066)
  • c183a93 Wire the dispenser expiration extension undo into extend, reorg and purge
  • a7b8db6 Add dispenser expiration extension undo queries
  • 6ab6b88 Merge: Pin payload_helpers push-size classes, alias canonicalization and probes
  • 1f78302 Pin payload_helpers push-size classes, alias canonicalization and probes
  • 680be6f Pin payload_helpers push-size classes, alias canonicalization and probes
  • 34fe761 Merge: Route decoder api environment reads through config getters
  • e2799f8 Merge: Merge decoder activation constant families into one module
  • a5f4f89 Route decoder api environment reads through config getters
  • b994029 Merge decoder activation constant families into one module
  • 7c51a7b Split decoder protocol constants into named families under constants/
  • 1988ec3 Merge: sync trunk
  • d0fa093 Merge: sync trunk
  • 86b4c0f Merge: sync trunk
  • 8c5eead sync trunk
  • 65f94ab sync trunk
  • 0cc52fe sync trunk
  • 6df112a Merge: Treat suite title additions as growth
  • 9833b4a Treat suite title additions as growth
  • 65b2669 sync trunk
  • bb016f8 Merge: Confirm CI tier timing block
  • 12e9ead Merge: Use pinned dependency stage in decoder image
  • 8ff0220 Use pinned dependency stage in decoder image
  • 12e0d7a Pin both Docker base image stages
  • e7f4206 Pin decoder base image digest
  • 6ce4394 Confirm CI tier timing block
  • cd05450 sync trunk
  • ed61521 test: cover negative default minimum
  • fe1932c sync trunk
  • 0d9c670 sync trunk
  • 1902649 sync trunk
  • 50eb564 Merge: Make migration status tests filesystem-independent
  • d6da593 Make migration status tests filesystem-independent
  • b0ed53a report RPC helper cases separately
  • 5b11963 test: use numeric zero with custom minimum
  • a75b38e split RPC helper error suites
  • 8c22158 test: use numeric custom minimum input
  • 5b85feb test RPC helper error handling
  • 9b9cf68 test: cover RPC configuration helpers
  • 39a1c84 test: cover migration query timeout helpers
  • 1da2b00 sync trunk
  • d025dab Merge: Update dispenser source path comment
  • dfe56a6 Regenerate CI tier timing block
  • b11e069 Update dispenser source path comment
  • daf4cb2 Merge master (v0.21.3 release) back into develop

Point the field-offset guard at the indexer's dispenser directory after the single-file module was retired.
Add direct coverage for timeout parsing and session restoration. Pin lock release and connection destruction when restoration fails.
Add focused unit coverage for integer parsing, endpoint normalization, and node reachability state.
Cover exact result failures and verify transport errors are scrubbed while RPC details remain available.
Match the configuration helper coverage to the documented raw input type.
Keep the test callbacks within structure limits without changing their assertions.
Match the configuration helper coverage to the documented raw input type.
Give every required input its own test result so focused verification identifies any failing behavior directly.
Stub the status directory listing instead of creating and deleting a temporary migration tree for every case. This removes synchronous filesystem latency from the five-second Mocha hook budget while preserving the CLI status assertions.
The generated timing block already matches the tier wirer after the branch sync. Record the successful regeneration and verification without changing generator-owned output.
Keep the Node version tag while locking the Docker build to the current multi-platform image index.
Add the Alpine base as a digest-pinned preliminary stage while keeping the decoder base as the final runtime stage.
Install production packages in the Alpine stage and copy the resulting dependency tree into the runtime stage so each pinned base is part of the built image.
Keep cache refresh and response shaping below structure limits. Extract named test cases while preserving stale retry coverage.
Keep the getmempool contract visible to the existing source checks. Exercise a partial refresh failure and verify the prior timestamp and complete snapshot survive before an immediate retry.
Add an independent runtime assertion to the required API surface suite so failed refreshes must remain stale and retain the last successful timestamp and snapshot.
- Dispenser EXPIRATION accepted range differs between decoder (≤2^53-1) and indexer (≤2^64-1); the decoder comment's claim that they match is false
- Action manifest labels DISPENSER_CANCEL/DISPENSER_EDIT as legacy with no indexer twin, but the indexer writes them as live action names
- Testnet: the indexer can still settle fills on a cancelled dispenser after the decoder has stopped capturing payments to it
- Decoder reorg test lists its deleted tables but nothing classifies every src/sql table; pubkeys (source of the indexer's consensus source_pubkey) is u
- Decoder cross-repo constant guards use bare fs.existsSync instead of siblingCheckout, so they can pass against a peer's uncommitted main checkout
- xchain-decoder auto-migration guard has the same quote-blind /* */ strip, so destructive clauses hidden between string literals auto-apply
- Live-column guard lets an auto MODIFY that omits CHARACTER SET quietly switch a utf8mb4 column back to the table's utf8mb3 default
- Live-schema MODIFY guard lets an auto migration silently narrow DECIMAL, DATETIME/TIMESTAMP and floating-point columns
- GET /status publishes `lag` but drops `node_height_stale`, so the node's bootstrap gate can certify a frozen-tip decoder as caught up
- getRawTransaction returns any truthy result without a hex-string shape check, unlike getBlockHash and getrawmempool
- Non-forceable resync gate fails open on a non-numeric count, while the dispenser gate beside it fails closed
- Mempool unattributed-ACTION blanking ignores dispense outputs, so it can blank an ACTION the block path would store
Add a gated u64 parser for dispenser create and edit expirations. Preserve legacy rejection below activation and cover unsafe integer, overflow, and conformance boundaries.
Allow a sibling main checkout only when its declared commit matches HEAD and both its index and worktree are clean.
Refresh the vendored action manifest from canonical documentation and update its generated identity pin.
Describe the gated dispatch-set check and why decoder-local allowlists remain unsafe across replay eras.
Rename the gate table so it is not a second activation registry and split the long describe block.
Preserve legacy Number-based create and edit behavior below an unarmed block-time activation. Above the gate, validate the original expiration token in exact decimal space before registering or extending a dispenser.
Describe the raw-token check without claiming it runs before the existing Number conversion.
Condense the activation rationale while preserving every value and export. The constants module now satisfies the 400-line readability ratchet.
# Conflicts:
#	src/XChainDecoder/dispenser_registration.js
#	src/protocol/constants.js
The pin predated added test files and titles; four retitled tests no longer match their old titles.
Reject unpinned migrations that sort before the newest pinned fixture entry, while continuing to allow newly dated migrations. Add focused regression coverage for the backdated case.
clear_reorg_halt.js and db/migrate.js now take their database settings
from src/config.js instead of reading process.env directly. The config
home reads every value live, so the .env each entry point loads before
reading is still what it gets. The config.js header no longer lists the
two entry points as exempt.
Mempool admission parsed every pending tx with no open-dispenser set, so a
payment to an open dispenser never became a dispense output there. An ACTION
whose source cannot be resolved then failed hasStorableContent and was
blanked to an empty string, while the block path, which loads the set,
stores the same tx with its ACTION text on confirm.

Each mempool cycle now loads the set once on mempoolDb through
getAllOpenDispenserAddresses with the cancelGraceFloor the block loop uses,
taking wall-clock seconds as the next block's time, and hands it to
parseTransaction. A failed load is logged and the cycle classifies against
an empty set so pruning and new arrivals keep running.

Tests cover the loaded set reaching the parse, the floor argument, and the
failed-load path; the isolation spy records the new mempoolDb read, and the
suite-title pin carries the three new titles.
Bump to 0.23.0 and record the release changelog. Arm the v0.23.0 testnet gates at BTC 156230, LTC 4912984 and DOGE 67989993, with instant 1791804379 for the time and change rows; mainnet stays unarmed. Tests that pinned the unarmed testnet state now read the armed rows, and the identity and suite-title pins are regenerated.
@jdogresorg
jdogresorg merged commit 4c2842a into master Oct 12, 2026
10 of 12 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