Repository navigation
Release v0.24.0 - #70
Merged
Merged
Conversation
Guard carrier self-update and manifest target resolution before mutation. Add a loud environment override and focused boundary coverage.
The single describe spanned 116 lines, above the 60 line function limit. Group the cases into self-update, manifest refusal and override blocks and hoist the shared sinon restore.
- Stake mint plan ignores mints.start_block/stop_block, which the explorer serves and the indexer enforces - Per-address mint cap is checked against this run's shortfall, not cap minus what the address has already minted - planMints treats MAX_MINT 0 as 'no open mint', but the indexer reads 0 as 'no per-transaction cap' - MariaDB version drift between repositories - Recreating the DB container over a persisted XCHAIN_NODE_DB_DATA_DIR saves an unapplied root password over the working one, locking the operator out - Discovery lets a running container matched only by image take the registry row from the container matched by name - CLI stop/start/restart report success when the docker operation failed; stop fails with no output at all - Tracker/gate health contract is pinned only by hand-copied literals, with no live parity check across the seam - xchain-node and xchain-utxo-tracker compare bootstrap.json identity with different case rules - Hub install in preCheck ignores the tag a no-ref `update` already resolved and calls releases/latest a second time - Refusal blast radius drops schema-satisfied manual migrations that an unscoped indexer migrate run still executes - Bootstrap health gate header says any REORG_HALT row refuses a source, but the query only refuses a halt that no newer REORG_HALT_CLEARED supersedes - Fractional XCHAIN balance gives a float-noise MINT AMOUNT the indexer rejects as over-precise - Unstake keeps its own copies of readTip and isUndeactivated instead of using free_key's
Declare a SYNC_PASSTHROUGH_ENV view and copy its value into the shared service defaults, so a recreate of xchain-sync keeps the operator's setting.
Move the host value copy into configureSharedAfterHubKey, guarded by the sync module name, so only the xchain-sync server container receives it. Tests now cover the sync module and assert hub, explorer and db do not get it.
The function spanned 63 lines, over the 60 line limit. The INDEX_MAP_PARITY_CHECK sync-only passthrough now lives in configureSyncPassthrough, leaving the function at 55 lines with unchanged behaviour.
Drive the parity passthrough test through ConfigService.getDefaultConfig so removing the sync-specific wiring fails the focused acceptance. Keep the environment view documentation aligned with the current configuration stage.
Update compatible lockfile resolutions for fast-uri, hono, and ip-address to patched releases.
Resolve message signing through maintained compatible forks backed by noble curve primitives. Remove the legacy elliptic dependency chain while preserving SDK signing behavior.
The rehearsal read the derived default database name directly. Route it through configuredDatabaseName so an operator-set INDEXER_DB_NAME is the database compared against. Adds a unit test for the resolution.
Read the height of the archived directory right after the compress (and before the fallback-path restart), and prefer it over the live status readings when present. Falls back to the existing behavior when the store reports nothing usable.
Compact the rehearsal source database helper and drop blank lines between adjacent top-level functions so src/cli/commands.js holds exactly 400 lines.
Condense two comments so tracker_archive.js is at most 400 lines, and split the oversized describe blocks in the two height test files so no function spans more than 60 lines.
…al DB name Under a non-default NODE_PREFIX with an external database, a decoder or indexer whose DB name is still the unprefixed default would read and write the default stack's data. Refuse before anything is torn down.
Compact the legacy DB name collision check into one function and tighten a few multi-line constructs so the file holds 400 lines. Behaviour is unchanged.
The host-port conflict check fell back to a real docker ps when the docker_service stub omitted it, so the suites failed on any host with running containers.
getModuleDatabaseName and the decoder/indexer DB user names now carry the sanitized NODE_PREFIX when it is not the default; default names are unchanged. The prefix scope test snapshots and restores the src require cache and NODE_PREFIX.
Fold the prefixed module DB user call onto the existing defaults line and shorten the nodePrefixSegment comment to three lines.
The guard checked the derived default database name, so an operator who set INDEXER_DB_NAME or DECODER_DB_NAME had the wrong database inspected. Resolve the name through configuredDatabaseName, falling back to the default with a warning when the config cannot be read.
Hand XC_OFFER_LIST_REGTEST_ACTIVATION to the hub and EXACT_INTEGER_WIRE_FIELDS_REGTEST_TIME to a regtest indexer only, and declare both in the env views. Adds a passthrough test.
…ull requests Contributors now branch off develop and open pull requests against it, as the docs and PR template say. A new pull_request_target check fails any pull request into master that is not this repository's own develop, release/* or hotfix/* branch, and CI now runs on pull requests into develop.
Each throwaway keyring starts a gpg-agent bound to its homedir. Run gpgconf --kill gpg-agent against that same home before removing it so the agent and its socket do not outlive the run.
…gh configured names Derived decoder and indexer database and user names now carry a segment that is injective in the raw NODE_PREFIX (digest when folding is lossy or the prefix is long) and is capped so the indexer name plus _HubMirror stays within 64 characters. Database reset resolves targets through configuredDatabaseName, and the migration precondition guard warns when a non-default prefix stack is on the unprefixed default name.
Export resolveResetTargets and resolveCheckedDatabaseName so the suite can drive them directly. Add tests that the legacy-collision refusal in buildAndUp fires first for decoder and indexer, that reset targets and the precondition precheck use the configured name, and that every raw getModuleDatabaseName caller routes through configuredDatabaseName.
…amed steps Brings the prefix-scoped database name change inside the code-structure baseline: require() at the top of module_database_name.js, and the prefixed-load hooks and nested suites as named functions so no test function runs past 60 lines.
A service can be alive and pass its healthcheck while not serving the chain: an indexer reporting ready false on /status, an indexer holding a hub barrier past its ceiling (which the stall reducer still calls a healthy defer), or a decoder reporting ready false on /live. ps now reads those fields, appends NOT READY to the row, records not_ready with its reasons, and prints a note naming them. An older image without the fields, or a route that cannot be read, keeps the plain running row.
…t, and keep the signed reveal when only its broadcast fails
Fixes the defects, doc drift and test gaps this repo carried on the review board and the test-gap board, 37 files.
Synced from xchain-hub/src/coins by bin/sync-coins.sh: the BTC and DOGE mainnet genesis ledgerHash and dumpHash move after BASE, DASH, HBAR, HOOD, HYPE and NEAR left the genesis manifests. No testnet or regtest value moves. The vendored-file identity pin is re-taken for the new coin file bytes.
Treat permission-denied lock and reclaim marker reads as held so stale reclamation cannot remove files whose ownership cannot be verified. Document the lock directory override and cover both permission errors.
Add direct unit coverage for filtering, network defaults, service defaults, and credential sidecars.
Add isolated coverage for argument resolution, coin defaults, database credentials, and shared defaults through the split module exports.
Place the unreadable-lock case in a dedicated test group so each callback remains within the repository readability limit.
Keep the acquisition behavior summary within the repository comment style limit.
Group related cases behind named registration functions so each test callback remains compact.
Keep each behavior-focused describe callback within the repository readability limit.
Keep the required direct module suites outside the authored directory size count.
Keep the required direct module entry points while excluding generated suites from readability directory counts.
The test named v0.23.0, which resolved without a network read only while the bundled manifest was 0.23.0; the v0.24.0 manifest made it fetch against an empty stub.
Release v0.24.0 manifest
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.
What this release carries
Added
Changed
Fixed
Security
Testnet activation
ORDER_MATCH_PRICE_CROSS_ACTIVATIONonBTC:testnetat height156908ORDER_MATCH_PRICE_CROSS_ACTIVATIONonLTC:testnetat height4927400ORDER_MATCH_PRICE_CROSS_ACTIVATIONonDOGE:testnetat height68005165REMOTE_TOKEN_ADMISSION_ACTIVATIONonBTC:testnetat height156908REMOTE_TOKEN_ADMISSION_ACTIVATIONonLTC:testnetat height4927400REMOTE_TOKEN_ADMISSION_ACTIVATIONonDOGE:testnetat height68005165GAS_CEILING_EXHAUSTED_ACTIVATIONonBTC:testnetat height156908GAS_CEILING_EXHAUSTED_ACTIVATIONonLTC:testnetat height4927400GAS_CEILING_EXHAUSTED_ACTIVATIONonDOGE:testnetat height68005165RESOURCE_FAULT_SIGNAL_ACTIVATIONonBTC:testnetat height156908RESOURCE_FAULT_SIGNAL_ACTIVATIONonLTC:testnetat height4927400RESOURCE_FAULT_SIGNAL_ACTIVATIONonDOGE:testnetat height68005165HOST_ERROR_STACK_STRIP_ACTIVATIONonBTC:testnetat height156908HOST_ERROR_STACK_STRIP_ACTIVATIONonLTC:testnetat height4927400HOST_ERROR_STACK_STRIP_ACTIVATIONonDOGE:testnetat height68005165JSON_STRINGIFY_REENTRY_ACTIVATIONonBTC:testnetat height156908JSON_STRINGIFY_REENTRY_ACTIVATIONonLTC:testnetat height4927400JSON_STRINGIFY_REENTRY_ACTIVATIONonDOGE:testnetat height68005165NATIVE_STACK_TERMINAL_ACTIVATIONonBTC:testnetat height156908NATIVE_STACK_TERMINAL_ACTIVATIONonLTC:testnetat height4927400NATIVE_STACK_TERMINAL_ACTIVATIONonDOGE:testnetat height68005165VOTE_SETTLEMENT_EXACT_ACTIVATIONonBTC:testnetat height156908VOTE_SETTLEMENT_EXACT_ACTIVATIONonLTC:testnetat height4927400VOTE_SETTLEMENT_EXACT_ACTIVATIONonDOGE:testnetat height68005165SETTLEMENT_BOUNDS_ACTIVATIONonBTC:testnetat height156908SETTLEMENT_BOUNDS_ACTIVATIONonLTC:testnetat height4927400SETTLEMENT_BOUNDS_ACTIVATIONonDOGE:testnetat height68005165PASS_PROGRESS_RETIREMENT_ACTIVATIONonBTC:testnetat height156908PASS_PROGRESS_RETIREMENT_ACTIVATIONonLTC:testnetat height4927400PASS_PROGRESS_RETIREMENT_ACTIVATIONonDOGE:testnetat height68005165SLASH_HISTORICAL_SET_ACTIVATIONonBTC:testnetat height156908SLASH_HISTORICAL_SET_ACTIVATIONonLTC:testnetat height4927400SLASH_HISTORICAL_SET_ACTIVATIONonDOGE:testnetat height68005165ANCHOR_REWARD_COPY_SELECTION_ACTIVATIONonBTC:testnetat height156908ANCHOR_REWARD_COPY_SELECTION_ACTIVATIONonLTC:testnetat height4927400ANCHOR_REWARD_COPY_SELECTION_ACTIVATIONonDOGE:testnetat height68005165TOKEN_SUPPLY_REPRESENTATION_ACTIVATIONonBTC:testnetat height156908TOKEN_SUPPLY_REPRESENTATION_ACTIVATIONonLTC:testnetat height4927400TOKEN_SUPPLY_REPRESENTATION_ACTIVATIONonDOGE:testnetat height68005165DISPENSER_FIAT_PRICING_ACTIVATIONonBTC:testnetat height156908DISPENSER_FIAT_PRICING_ACTIVATIONonLTC:testnetat height4927400DISPENSER_FIAT_PRICING_ACTIVATIONonDOGE:testnetat height68005165BRIDGE_POLICY_APPLY_ORDER_ACTIVATIONonBTC:testnetat height156908BRIDGE_POLICY_APPLY_ORDER_ACTIVATIONonLTC:testnetat height4927400BRIDGE_POLICY_APPLY_ORDER_ACTIVATIONonDOGE:testnetat height68005165VM_EMISSION_AMOUNT_FORMAT_ACTIVATIONonBTC:testnetat height156908VM_EMISSION_AMOUNT_FORMAT_ACTIVATIONonLTC:testnetat height4927400VM_EMISSION_AMOUNT_FORMAT_ACTIVATIONonDOGE:testnetat height68005165EXECUTE_FEE_CAP_ACTIVATIONonBTC:testnetat height156908EXECUTE_FEE_CAP_ACTIVATIONonLTC:testnetat height4927400EXECUTE_FEE_CAP_ACTIVATIONonDOGE:testnetat height68005165VOTE_V3_TICK_EXISTENCE_ACTIVATIONonBTC:testnetat height156908VOTE_V3_TICK_EXISTENCE_ACTIVATIONonLTC:testnetat height4927400VOTE_V3_TICK_EXISTENCE_ACTIVATIONonDOGE:testnetat height68005165MATCH_ORIGIN_OPEN_ACTIVATIONonBTC:testnetat height156908MATCH_ORIGIN_OPEN_ACTIVATIONonLTC:testnetat height4927400MATCH_ORIGIN_OPEN_ACTIVATIONonDOGE:testnetat height68005165VM_LINT_SYNTAX_DEPTH_ACTIVATIONonBTC:testnetat height156908VM_LINT_SYNTAX_DEPTH_ACTIVATIONonLTC:testnetat height4927400VM_LINT_SYNTAX_DEPTH_ACTIVATIONonDOGE:testnetat height68005165NESTED_EXECUTE_GAS_SUM_ACTIVATIONonBTC:testnetat height156908NESTED_EXECUTE_GAS_SUM_ACTIVATIONonLTC:testnetat height4927400NESTED_EXECUTE_GAS_SUM_ACTIVATIONonDOGE:testnetat height68005165EMISSION_DEPTH_EXECUTE_ONLYonBTC:testnetat block time1792303200EMISSION_DEPTH_EXECUTE_ONLYonLTC:testnetat block time1792303200EMISSION_DEPTH_EXECUTE_ONLYonDOGE:testnetat block time1792303200ARCHIVE_REPLAY_WRAPPER_WATERMARKonBTC:testnetat block time1792303200ARCHIVE_REPLAY_WRAPPER_WATERMARKonLTC:testnetat block time1792303200ARCHIVE_REPLAY_WRAPPER_WATERMARKonDOGE:testnetat block time1792303200LEGACY_ANCHOR_REWARD_PINonBTC:testnetat block time1792303200LEGACY_ANCHOR_REWARD_PINonLTC:testnetat block time1792303200LEGACY_ANCHOR_REWARD_PINonDOGE:testnetat block time1792303200GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGSonBTC:testnetat block time1792303200GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGSonLTC:testnetat block time1792303200GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGSonDOGE:testnetat block time1792303200HOST_CALL_BOUNDSonBTC:testnetat block time1792303200HOST_CALL_BOUNDSonLTC:testnetat block time1792303200HOST_CALL_BOUNDSonDOGE:testnetat block time1792303200PER_ELEMENT_METERonBTC:testnetat block time1792303200PER_ELEMENT_METERonLTC:testnetat block time1792303200PER_ELEMENT_METERonDOGE:testnetat block time1792303200CALLBACK_ARGS_EXACTonBTC:testnetat block time1792303200CALLBACK_ARGS_EXACTonLTC:testnetat block time1792303200CALLBACK_ARGS_EXACTonDOGE:testnetat block time1792303200GAS_CEILING_EXHAUSTED_ACTIVATIONonBTC:testnetat height156908GAS_CEILING_EXHAUSTED_ACTIVATIONonLTC:testnetat height4927400GAS_CEILING_EXHAUSTED_ACTIVATIONonDOGE:testnetat height68005165LINT_SYNTAX_DEPTH_ACTIVATIONonBTC:testnetat height156908LINT_SYNTAX_DEPTH_ACTIVATIONonLTC:testnetat height4927400LINT_SYNTAX_DEPTH_ACTIVATIONonDOGE:testnetat height68005165RESOURCE_FAULT_SIGNAL_ACTIVATIONonBTC:testnetat height156908RESOURCE_FAULT_SIGNAL_ACTIVATIONonLTC:testnetat height4927400RESOURCE_FAULT_SIGNAL_ACTIVATIONonDOGE:testnetat height68005165HOST_ERROR_STACK_STRIP_ACTIVATIONonBTC:testnetat height156908HOST_ERROR_STACK_STRIP_ACTIVATIONonLTC:testnetat height4927400HOST_ERROR_STACK_STRIP_ACTIVATIONonDOGE:testnetat height68005165JSON_STRINGIFY_REENTRY_ACTIVATIONonBTC:testnetat height156908JSON_STRINGIFY_REENTRY_ACTIVATIONonLTC:testnetat height4927400JSON_STRINGIFY_REENTRY_ACTIVATIONonDOGE:testnetat height68005165NATIVE_STACK_TERMINAL_ACTIVATIONonBTC:testnetat height156908NATIVE_STACK_TERMINAL_ACTIVATIONonLTC:testnetat height4927400NATIVE_STACK_TERMINAL_ACTIVATIONonDOGE:testnetat height68005165Release v0.24.0
Base:
masterat8592f7a1ce5f773d936e726e121d549b3041c86aHead:
release/v0.24.0atb63479371f925179446ebb64324210f06133143aLanded refs