Release v0.19.0 - xchain-e2e-test - #14
Merged
Merged
Conversation
Split the oversized suite callback into consecutive same-title behavior blocks while preserving hook coverage and test order.
Split the oversized suite callback into consecutive same-title behavior blocks while preserving hook coverage and test order.
Split the oversized suite callback into consecutive same-title behavior blocks while preserving hook coverage and test order.
Split the oversized suite callback into consecutive same-title behavior blocks while preserving hook coverage and test order.
Split the oversized suite callback into consecutive same-title behavior blocks while preserving hook coverage and test order.
Split the oversized suite callback into consecutive same-title behavior blocks while preserving hook coverage and test order.
Split the oversized suite callback into consecutive same-title behavior blocks while preserving hook coverage and test order.
Keep the transaction helper entry API stable while distributing its transaction paths into focused modules.
Rename the miner response helpers and tracker quiescence helper to plain method names. Update their internal call sites without changing connector behavior.
Relocate the bridge rail base support module into a support/ folder and rename the attestation SDK support module so both match the tracked test file naming rule; move the transaction helper parts into a lib/ folder for the same reason. Update every require path that pointed at the old locations.
Relocate the attestation split's shared setup into support/ so it carries its explanatory comments the same way every other split's support module does, and matches the tracked test file naming rule.
Split dispenser coverage across numerically ordered files and extract bounded setup helpers. Preserve all test titles, assertions, comments, and execution order. Wrap the four FIAT dispense polls this split isolated into their own functions with requireRow() so a give-up fails at the wait instead of surfacing several assertions later.
The dispenser and sdk splits landed in this round move some of their cases into a <entry>.test/NN_*.test.js part directory, which broke three unit-tier checks that assumed the watched file still held everything itself: package.json's per-suite scripts named the entry literally and never ran its new parts, fiatDispenserPairIsolation.test.js read only the entry's source for its FIAT_* pins, and seedSentinelCoverage.test.js pinned the entry's exact path as a seed site. Wire the split parts into the affected npm scripts, and make both source-pin tests treat entry+parts as the one logical suite a split declares them to be.
…ries, falling back to the flat files
xchain-indexer renamed src/attestation/providerRegistry.js to provider_registry.js and src/hub/hub-schema-version.js to hub_schema_version.js. The ROLLCALL gates suite loads the registry by its snake_case name and falls back to the camelCase one only when that does not resolve at all (any other load error still throws), and the attest-mirror venue smoke suite reads the first of the two schema-version names that exists, so both resolve against an indexer on either side of the rename.
Rename camelCase and hyphenated test/unit files to the snake_case form the code-structure gate's test_file_names rule requires; no content changes beyond a renamed file's own self-referential path comment.
Rename camelCase and hyphenated test/sdk, test/security, test/tools, test/perf and test/parity files to snake_case, and repoint run-multichain-parity.sh and priceSeedAnchor's require.resolve at the renamed multichain_parity.test.js / ctlseed.test.js paths.
Rename camelCase and hyphenated test/actions, test/attestMirror, test/contracts, test/drills and test/federation files to snake_case; no content changes beyond a renamed file's own self-referential path comment.
… scripts Rename hyphenated test/integration files to snake_case. Repoint package.json's script paths and test/integration/live-tier.json's roster comment at every file this pass renamed; the operator's held bridge commit changes package.json around venue:clear-rollcall-outsiders and test:bridge-rail, so rollcallClearOutsiders.test.js and parityBoot.js stay unrenamed there to avoid conflicting with that rebase.
seedSentinelCoverage.test.js's scan-coverage list and the two advisory suites' fs.readFileSync(path.join(__dirname, ...)) calls named the renamed nativeFeeLive.test.js and dependency-advisories.test.js by their old literal strings; test:unit failed both until repointed.
The sdk renamed its private _requireEncoder to requireEncoder; the anchor election suite drives the linked sdk and follows the rename.
…through the mirror, and deepen the split helper's fee require Drive 18 read six reds that were one harness fault: the indexer's getpendingbridgetransfers excludes finalized legs, so the settled-rail wait declared the backlog drained the moment the venue federation signed it while the destination had applied nothing. The wait now holds every hub's bridge_transfers row against the destination's bridge_settlements, and the AT6/AT7 invariant assertion is the identity in_flight 0 with the hub delta equal to the measured non-bridge credits (D65 surplus), red on a double mint, an unbacked mint, a lost credit or a wrong term. AT5 and AT7 were refused for a stale DOGE/USD price because the venue indexers price off their mirror, which only takes live rows from hub-emitted events: refreshVenuePrices now inserts fresh rounds into every hub, drops the mirror proxy sockets, and waits until each mirror holds the round before a priced action. AT4's template row now copies a finalized non-at4 row with an unsettled source leg, so the perturbations reach the settle pass instead of being dropped as duplicates of an applied leg. test/transactionHelper/lib/01_create_and_send_transaction.js required ../helpers/nativeFeeHelper from one directory too shallow after f81db26 moved the split parts into lib/, which no unit tier loads and every rail send hit.
…nstead of keeping only the second The venue indexer spawn spec carried two extraEnv keys, so the per-index overlay silently replaced the venue-wide one whenever it was null. A bridge drive's destination indexer then had no origin-chain endpoint and deferred every in leg under the proof barrier instead of saying it was misconfigured. mergeIndexerExtraEnv layers the per-index overlay over the venue-wide one and stays null when neither is set, with unit tests for each half.
…ter W4 (activation registry row 19) attestation_request_cap.test.js requires the moved src/actions/attest/attest_request_cap_gate.js and rollcall_gates.test.js reads attest_admission_activation.ATTEST_ADMISSION_ACTIVATION through src/consensus/gate_registry.js activeAt (12/12 equal to the deleted shim across four networks and three heights); db.js's comment cites the registry row.
…budget the mint wait by the relay margin The reorg lever re-mined the invalidated blocks' transactions, so the lock it meant to orphan came straight back and finalized. The lever now reads the lock's confirming height from the node, mines empty replacement blocks to a throwaway coinbase and refuses a chain that carried the lock back in. The mint wait is budgeted from the hub's relay margin plus slack instead of a constant equal to the margin, the retraction leg now asserts the retraction the spec describes, row messages survive BigInt columns, and both suite roots say their split parts belong on the same mocha line.
… the relay-margin case The sibling-load guard refuses a bundled sibling required inside a catch that skips, because a present checkout that fails to load must red the case rather than hide it; the case now skips only on resolution failure.
…re reading the D65 surplus The send helper returns on the standing indexer's grading while the surplus case reads the venue indexer, which parses the same block on its own clock, so the after-read could land a block early and report a credit that was not parsed yet. The venue now exposes one wait for its indexer to reach a height, the reorg suite's catch-up wait delegates to it, and the pure comparison has unit tests.
…ation indexer follows The out-leg case forges a record whose destination is the BTC chain, but every case injected into the DOGE venue and read the DOGE indexer, whose settle pass never selects a row destined elsewhere, so no refusal could be logged. The case table now names the destination chain per row and the injection, the tip wait, the balance and the settlement read all follow it.
Version 0.19.0 (the staged hub and sdk snapshot versions with it), the 0.19.0 changelog section and the README badges and script-table counts measured on Linux.
The lock now records the hub and sdk devDependency trees (eslint and its acorn/@eslint tree) that the image npm ci resolves through the file: links.
…ts own fee address nativeFeeHelper.resolveFeeDestination reads the generic FEE_DESTINATION env before it asks the indexer, and an xchain-node e2e container sets it to the LEG coin's address. withRail did not swap it, so every fee output injected on the second chain paid the first chain's destination. Measured on the first two-stack litecoin matrix leg (xchain-node run 35111751698): the BTC gas lock paid LTC's regtest destination, the BTC indexer saw no fee output, fell back to XCHAIN-balance mode and refused the lock with `insufficient funds (FEE)`. FEE_DESTINATION joins RAIL_ENV. createRail resolves it on the credential ladder (<CODE>_FEE_DESTINATION, then .env.<code>) and otherwise leaves it undefined, which enterRail turns into a delete for the duration of the swap, so the helpers discover that chain's destination from its own feeschedule. exitRail and captureCurrentRail carry the leg coin's value back.
…n the bitcoin leg The v0.19.0 freeze matrix bitcoin leg (run 35102834217) read 269 passing, 32 pending, 4 failing against the last green leg's 273 / 32 / 0, and all four are harness drift from the structure passes. The unstaked-signature case in attestation.test.js lost `contractIndex` from its destructure when the suite was split (ReferenceError at line 174). The delegated-reward drill's minimal db adapter mirrored the indexer's Database, but the indexer pass moved the resolver's two SQL legs into named mixins (indexer 0bb77814) that the resolver now calls on the db it is handed, so every resolution died inside the resolver as "failed to resolve stake source"; the adapter carries both methods now, SQL byte-identical to src/db/stakes/credit_source_reads.js and src/db/delegations/index.js.
…e delegated-reward drill The targeted re-run (35126895624) cleared three of the four cases and left the slash-exclusion case dying on `_resolveActiveStakeSourceId`, which the indexer structure pass renamed to resolveActiveStakeSourceId when it dropped underscore methods; the drill calls the master mixin by its current name.
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.
Bumps the package and lockfile to 0.19.0 and folds the Unreleased block into a dated 0.19.0 entry. The train carries the XBRIDGE cross-chain bridge, armed on testnet by the ladder and on mainnet at the sentinel, with the token bridge and policy code dark behind their sentinels, the rollcall and tracker fixes, the code-structure passes with the consensus identity pinned, and the activation registry.
Platform notes ride xchain-node's Release.