--- week: 2026-W38 weekStart: '2026-09-14' weekEnd: '2026-09-20' generatedAt: '2026-09-21' counters: prsMerged: 5 prsOpened: 1 issuesClosed: 0 issuesOpened: 0 releases: 0 reposTouched: 2 commits: 37 comments: 2 activity: - deliverable: reactive items: - type: pr title: nix flake check incorporating haskell tests url: https://github.com/cardano-scaling/hydra/pull/2874 repo: cardano-scaling/hydra author: noonio - type: pr title: Fix Deposit output calculation url: https://github.com/cardano-scaling/hydra/pull/2873 repo: cardano-scaling/hydra author: v0d1ch - type: pr title: Regenerate head script url: https://github.com/cardano-scaling/hydra/pull/2872 repo: cardano-scaling/hydra author: vrom911 - type: pr title: Model rollbacks, restarts and L2 spam with de/commits url: https://github.com/cardano-scaling/hydra/pull/2864 repo: cardano-scaling/hydra author: v0d1ch - type: pr title: Route a full selection to a full fanout url: https://github.com/cardano-scaling/hydra/pull/2858 repo: cardano-scaling/hydra author: vrom911 - type: pr-opened title: Move some tests away from hydra-cluster url: https://github.com/cardano-scaling/hydra/pull/2875 repo: cardano-scaling/hydra author: noonio commitCounts: cardano-scaling/hydra: 35 - deliverable: M6 items: [] commitCounts: cardano-scaling/hydra-updates: 2 --- ## Highlights 5 PRs merged, 1 opened and 37 commits across two repos, with no releases and no issue activity. Two of the five merges are last week's leftovers, described then; the other three are a script regen, a fund-lockout fix, and a CI test-runner change. The one PR opened this week also merged before the week closed. **Reactive.** The compiled head validator script was regenerated Monday (#2872), a two-line hash bump; the PR benchmarks found no cost or size differences, so nothing behavioural changed. We focused on a user-reported issue this week: A user depositing two UTxOs into an open head through the Mesh SDK's `incrementalCommitFunds` found neither reflected on L2 after three hours, and both gone from their L1 wallet, sitting unspendable at the deposit script (#2871). The cause sits in `coverFee`: when a deposit's own value didn't cover the min ADA of its output, `coverFee` topped the output up but left the inline datum, which records the deposited outputs, at the original value, so `observeDepositTx`'s value-versus-datum check rejected the deposit and the node never observed it. The fix (#2873) runs `observeDepositTx` against the finalized draft before submission and fails fast with a new `DepositTooLow{providedValue, minimumValue}` error naming the shortfall, and splits `decodeDepositDatum` out of the observer so `hydra-tx recover` can decode already-stuck deposits for manual recovery. Left as follow-ups: the blueprint path still tops up from node fuel rather than the output itself, and `Arbitrary HeadId` generates 16-byte values against a 28-byte policy id. Merged Tuesday. Both PRs described last week also merged: the fanout full-selection guard (#2858) on Tuesday, and the adversarial model testing suite (#2864) on Wednesday. The rest of the week went into test infrastructure. `nix flake check` now runs the Haskell test suites for hydra-node, hydra-tx, hydra-chain-observer, hydra-plutus-extras, hydra-plutus and hydra-agda (#2874, merged Friday); hydra-cluster stays excluded because its tests spin up real programs, and hydra-tui because it needs `vty`. Opened and merged the same day, 13 end-to-end tests that each started a real Cardano node and real Hydra nodes were replaced with 30 unit tests checking the same logic directly, cutting roughly 114 seconds of test time to about 1.3 seconds (#2875). Writing the replacements surfaced four things the slow tests had only exercised by accident: the per-address client filter, the pending-deposits list on the API, two read models behind the commit endpoint and network status, and, the biggest gap, all 39 cases of which internal events reach clients and in what form, untested because every prior test built its own expectations through that same code. A docs claim that the address filter applies to TxValid and TxInvalid was also corrected (it doesn't), and `CommitInfo` gained `Eq`/`Show` so a test could compare it. **KPI & Outcome Achievement (M6).** Routine only: the W37 note published.