Skip to content

Release v0.15.0 - xchain-contracts - #8

Merged
jdogresorg merged 9 commits into
masterfrom
release/v0.15.0
Sep 7, 2026
Merged

Release v0.15.0 - xchain-contracts#8
jdogresorg merged 9 commits into
masterfrom
release/v0.15.0

Conversation

@jdogresorg

Copy link
Copy Markdown
Contributor

Cuts xchain-contracts for the v0.15.0 release train. 9 commits from master.

Fixed

  • dutchAuction's buy() now reverts when the decayed asking price floors below one unit of the bid token's decimal grid, closing a path that handed the item to a caller who paid nothing.
  • priceBetTimed's accept() now refuses a match on a pair with no readable oracle tip, closing a path where the scan cursor started below the host's preload floor and locked both stakes permanently.
  • The cardDispenser deploy note reflects the wired balance reader.
  • Corrected a 0.11.0 release note that claimed an English auction leader's self-raise no longer reverts; it still reverts, and a top-up batched behind the rejected bid stays in the contract (see "Known limitations" in englishAuction/README.md).
  • Corrected the 0.11.0 deployer-integer note, which omitted englishAuction from the templates whose constructor integers gained canonical range validation.
  • Corrected the custody documentation across the library README and every template: a BATCH(DEPOSIT, EXECUTE) is not atomic, and a reverted EXECUTE leaves the DEPOSIT standing; "atomic" now means only the intra-EXECUTE state-and-emission scope.
  • amm's README documents the stranded-deposit footgun under "Attacks we considered", and amm.test.js pins it: a reverted swap() leaves its deposit in pool custody and the next trader is credited it.

Levelling develop with master, the ceremony step that closes a train. Commits
that reach master without coming back leave the branch all work lands on missing
what shipped, so the next diff off develop reads as though it never happened.
Levelling develop with master, the ceremony step that closes a train. Commits
that reach master without coming back leave the branch all work lands on missing
what shipped, so the next diff off develop reads as though it never happened.
…oors

One wave of the review round on the xchain-platform board.
Every change was re-derived from the code rather than applied from the
finding recommended option, and each carries a control that reproduces
the original failure.

Review findings: 6388 6488 6529 ca79ba05c460 f503a7be019a
The library asserted that BATCH(DEPOSIT, EXECUTE) settles atomically, which the
component doc and the user guide both contradict. Confirmed empirically before
any doc was touched: a new AMM test shows a reverted swap leaves its batched
DEPOSIT stranded (contract holds 1100 AAA with reserveA still 1000) and the next
trader is then priced on the inherited balance.

Corrects the front-door README and every BATCH-scope claim across ten templates
plus five test-helper comments, leaving all intra-EXECUTE uses of "atomic"
alone, since a method's state writes and its deferred emissions genuinely do
commit together. Two sites needed more than a reword: crowdsale.js rested a
safety argument on the false premise, and amm.js stated a real requirement in
words asserting a guarantee the VM does not provide.

The recommended CI drift guard was deliberately NOT built: implementing its
predicate over the corrected tree returns 22 hits, 21 of them the corrective
sentence the same proposal prescribes, so its only stable green state is
deleting the warning.

Review round 7 cluster 6d1196778298 (findings #6817, #6818). Also carries review
round 6's contracts work.
Review-round fixes.

The card dispenser and both auction templates accepted a positive-looking
quantity at deploy and emitted it verbatim at settle, while the indexer
re-quantises to the token's decimals: a fractional unit on a zero-decimal token
delivers nothing and the payment is still taken. The quantity is now validated
against the token's decimal precision at deploy and at emission.

The timed price bet anchored a matched bet to a round cursor whose validity
against the indexer's history window was never maintained, so acceptance could
anchor to an already-evicted tip and settlement could not advance the cursor
before eviction. One invariant, enforced at both seams.

Suite: 433 passing, 0 failing (run on Linux; the isolated VM binding does not
load on macOS from the shared install).
…ted-vm build failure

The VM pins process.versions.modules to 127, so results taken on another major
are not the fleet engine. isolated-vm resolves a prebuilt binding per ABI now,
so the old "cannot build on 24" reasoning no longer holds.
@jdogresorg jdogresorg changed the title Release v0.15.0 Release v0.15.0 - xchain-contracts Sep 7, 2026
@jdogresorg
jdogresorg merged commit f04c514 into master Sep 7, 2026
2 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