Week 37 · 2026
Sep 7 – Sep 13, 2026 · gathered Sep 14, 2026
- 4
- PRs merged
- 3
- PRs opened
- 0
- Closed
- 0
- Opened
- 0
- Releases
- 2
- Repos
- 36
- Commits
- 9
- Comments
Highlights
4 PRs merged, 3 opened and 36 commits across two repos. A consolidation week after the 2.4.0/2.4.1 pair: the merged work is dependency and test housekeeping, while the substance sits in the three PRs opened, two of which have since merged. Performance also closed out as a workstream (see M6).
Reactive. The etcd network component moved up a version on both sides
(#2857). The bundled etcd goes from 3.5.25 to 3.6.6, and the gRPC client
stack from grapesy 1.0.1 to 1.2.0 and http2 5.3.9 to 5.4.4. The point of
the client bump is #2167, where putMessage blocked indefinitely after five
to ten thousand large messages: the underlying http2 connection stall is
still reproducible upstream when puts share a connection with the watch
stream, but on the new stack it surfaces as a reconnectable
ServerDisconnected error rather than blocking silently and forever. The
dedicated, recycled, timeout-guarded broadcast connections added earlier for
that issue remain the operative fix, re-verified here with repeated 8000 by
100KiB broadcast soaks. Operators upgrading should note that etcd supports
rolling upgrades from 3.5.20 onward, but that the etcd data directory upgrade
is one way. The same PR corrected the docs: hydra-node embeds etcd and uses
it by default, so the tutorial's download step is gone and a separate install
is only needed with --use-system-etcd (#2126). The nightly Blockfrost test
also got a one-line fix (#2868): it waited on a bounded waitMatch for a
tick past the contestation deadline, and that bound is shorter than the
contestation period, so it now sleeps through the period first.
Both PRs left over from last week merged on the Monday this week opened, and
were described then: the libs/ extraction (#2854) and the partial fanout
chunk-size search (#2849).
Of the three opened, the fanout wedge is the one to note (#2858, for #2855).
A PartialFanout naming the whole remaining set behaved differently
depending on where it arrived: from a freshly closed head it was rerouted to
a full fanout, but from FanoutProgress with nothing yet distributed the
equivalent handler had no such guard and sent it out as a non-final step.
That empties the head while the on-chain datum still says Closed, which
leaves it both unfinalizable (the next step would have to be a zero-output
final fanout, which the validator rejects) and unrevertable (the revert
requires the distributed set to be empty, and it no longer is), so the
tokens can never be burned. The fix moves the decision out of the client
handlers into nextFanoutStep, which now returns the step to take, so every
producer of a fanout step goes through the same choice and the guard cannot
be missed at one entry point again. That also covers a path no client input
reaches: a node that persisted a whole-remainder selection rebuilds it
verbatim on replay, where a rollback re-post would have fired the same
wedging step. Merged Monday.
Alongside it, adversarial model testing (#2864) adds random deposits and
decommits under layer 2 transaction spam, divergent-fork rollbacks, per-node
network delivery latency faithful to etcd's total order, and node restart
and fail-recovery, all under liveness assertions. It found and fixed a real
wedge of its own: a ReqSn arriving before a party had observed the deposit
hard-errored and stalled the head, and is now parked with a TTL. It also
fixed several fidelity bugs in the mock chain that the new tests exposed,
namely non-atomic chain steps, queue ordering and silently dropped
transactions. Merged Tuesday. Still open: two tests for minting inside a head
with known and unknown minting policies, which also check that an error
thrown during transaction construction does not bring the node down (#2860).
KPI & Outcome Achievement (M6). More than the usual bookkeeping this
week. The W36 note published, and Performance (M2) is now marked done:
decreased memory usage (M2.2) is recorded as delivered on 2026-08-17 by the
CBOR database and binary API pair (#2767, #2762), joining the 10x TPS work
(M2.1, delivered 2026-07-23) to close the workstream, both ahead of their
deadlines. Three milestone dates also moved earlier: metrics exposed and
queryable (M3.1) from 2026-11-25 to 2026-11-10, and the hydra-recipes repo
(M3.2) and continued compatibility with cardano-node releases (M5.3) both
from 2026-12-15 to 2026-11-30.
Activity
Merged PRs, issues, and releases grouped by deliverable — the evidence behind the narrative above.
Other / Reactive
- MergedFix Nightly BF testcardano-scaling/hydra · @v0d1ch
- MergedBump etcd version to improve errors; no more etcd in tutorialcardano-scaling/hydra · @noonio
- MergedExperiment in moving some code out into libscardano-scaling/hydra · @noonio
- MergedSpeed up finding the partial fanout chunk sizecardano-scaling/hydra · @vrom911
- PR openedModel rollbacks, restarts and L2 spam with de/commitscardano-scaling/hydra · @v0d1ch
- PR openedMint inside a Head testscardano-scaling/hydra · @v0d1ch
- PR openedRoute a full selection to a full fanoutcardano-scaling/hydra · @vrom911
30 commits · cardano-scaling/hydra
M6 KPI & Outcome Achievement
Not started6 commits · cardano-scaling/hydra-updates