Skip to content

Release v0.15.0 - xchain-decoder - #14

Open
jdogresorg wants to merge 11 commits into
masterfrom
release/v0.15.0
Open

Release v0.15.0 - xchain-decoder#14
jdogresorg wants to merge 11 commits into
masterfrom
release/v0.15.0

Conversation

@jdogresorg

Copy link
Copy Markdown
Contributor

Cuts xchain-decoder for the v0.15.0 release train. 11 commits from master.

Changed

  • The vendored coin registry is resynced from the hub.
  • mariadb moved off the cleartext-credential advisory range with the floor pinned in the dependency gate.

Levelling develop with master, the ceremony step that closes a train. The README
currency pass landed on master without coming back, so the branch all work lands
on was missing it and the next diff off develop would read as though it never
happened.
Matches the version the node installer now pins. The integration tier
passes unchanged against it; the fixtures already set the non-standard
relay options this tier depends on, and none of them changed in 31.
… comments

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: 6391 6532 6543
…isted

The gate could not see a failed halt-marker write, and the failure was logged as
though it had persisted, so a halt believed recorded might not be. The write is
now read back and honoured, with marker_write=attempting|unavailable replacing
the typeof-derived marker_persisted, a REORG_HALT_MARKER outcome record and an
operator-action line.

Review round 7 finding #6855. Also carries review round 6's decoder work.
Review-round fixes.

The halt-marker contract was stated as an absolute in two places and implemented
as best-effort in three, so a restart could clear a halt the operator set. The
guard now refuses on an unreadable marker rather than treating it as absent.

Suite: 1482 passing, 0 failing.
…cannot pin the socket

_post cleared its abort timer when the response HEADERS arrived and never released
res.body, so a collector that answers 200 and then stalls held the socket open with
nothing bounding it. Measured against a stalling collector, the socket was still
open at three seconds and the batch was counted as shipped.

That is worse than a leak, because the timeout was configured and did nothing: at a
400ms ship timeout the timer cleared at 22ms, so the stall outlived its only bound
and the shipper reported success.

The body is now cancelled inside the same then, within the abort timer's window,
rather than after finally has cleared it. The stream is cancelled and never read,
and a cancel on an already-errored body is swallowed.

Every existing test injected a transport and bypassed the real fetch path, which is
why this survived. The new case drives _post itself.

Vendored copy, written by the hub sync script and never hand-edited. Parity is
gated in the hub.
…grace period

A payment arriving during the cancellation grace period was dropped by expiry,
even though the window exists precisely so a payment in flight when a cancel
lands is still honoured.

Gated, because it changes whether a payment settles and therefore moves credits.
Mainnet ships UNARMED on the house sentinel and naming the activation instant is
a separate operator act; testnet and regtest run from genesis, so both sides of
the gate are exercised and historical replay stays byte-identical.
@jdogresorg jdogresorg changed the title Release v0.15.0 Release v0.15.0 - xchain-decoder Sep 7, 2026
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