May 07, 9-10 AM (29)
May 07, 10-11 AM (55)
May 07, 11-12 PM (40)
May 07, 12-1 PM (59)
May 07, 1-2 PM (48)
May 07, 2-3 PM (48)
May 07, 3-4 PM (44)
May 07, 4-5 PM (58)
May 07, 5-6 PM (11)
May 07, 6-7 PM (25)
May 07, 7-8 PM (30)
May 07, 8-9 PM (12)
May 07, 9-10 PM (18)
May 07, 10-11 PM (65)
May 07, 11-12 AM (21)
May 08, 12-1 AM (6)
May 08, 1-2 AM (20)
May 08, 2-3 AM (19)
May 08, 3-4 AM (9)
May 08, 4-5 AM (3)
May 08, 5-6 AM (21)
May 08, 6-7 AM (20)
May 08, 7-8 AM (53)
May 08, 8-9 AM (34)
May 08, 9-10 AM (12)
May 08, 10-11 AM (32)
May 08, 11-12 PM (40)
May 08, 12-1 PM (30)
May 08, 1-2 PM (46)
May 08, 2-3 PM (46)
May 08, 3-4 PM (26)
May 08, 4-5 PM (23)
May 08, 5-6 PM (29)
May 08, 6-7 PM (15)
May 08, 7-8 PM (10)
May 08, 8-9 PM (15)
May 08, 9-10 PM (16)
May 08, 10-11 PM (23)
May 08, 11-12 AM (12)
May 09, 12-1 AM (4)
May 09, 1-2 AM (1)
May 09, 2-3 AM (0)
May 09, 3-4 AM (6)
May 09, 4-5 AM (6)
May 09, 5-6 AM (2)
May 09, 6-7 AM (6)
May 09, 7-8 AM (4)
May 09, 8-9 AM (4)
May 09, 9-10 AM (3)
May 09, 10-11 AM (9)
May 09, 11-12 PM (6)
May 09, 12-1 PM (21)
May 09, 1-2 PM (24)
May 09, 2-3 PM (12)
May 09, 3-4 PM (14)
May 09, 4-5 PM (7)
May 09, 5-6 PM (0)
May 09, 6-7 PM (2)
May 09, 7-8 PM (3)
May 09, 8-9 PM (1)
May 09, 9-10 PM (8)
May 09, 10-11 PM (33)
May 09, 11-12 AM (16)
May 10, 12-1 AM (15)
May 10, 1-2 AM (0)
May 10, 2-3 AM (0)
May 10, 3-4 AM (5)
May 10, 4-5 AM (0)
May 10, 5-6 AM (4)
May 10, 6-7 AM (0)
May 10, 7-8 AM (17)
May 10, 8-9 AM (8)
May 10, 9-10 AM (1)
May 10, 10-11 AM (26)
May 10, 11-12 PM (4)
May 10, 12-1 PM (49)
May 10, 1-2 PM (18)
May 10, 2-3 PM (8)
May 10, 3-4 PM (15)
May 10, 4-5 PM (26)
May 10, 5-6 PM (11)
May 10, 6-7 PM (7)
May 10, 7-8 PM (23)
May 10, 8-9 PM (12)
May 10, 9-10 PM (10)
May 10, 10-11 PM (29)
May 10, 11-12 AM (19)
May 11, 12-1 AM (12)
May 11, 1-2 AM (5)
May 11, 2-3 AM (5)
May 11, 3-4 AM (7)
May 11, 4-5 AM (3)
May 11, 5-6 AM (12)
May 11, 6-7 AM (28)
May 11, 7-8 AM (60)
May 11, 8-9 AM (34)
May 11, 9-10 AM (77)
May 11, 10-11 AM (55)
May 11, 11-12 PM (78)
May 11, 12-1 PM (84)
May 11, 1-2 PM (102)
May 11, 2-3 PM (41)
May 11, 3-4 PM (27)
May 11, 4-5 PM (24)
May 11, 5-6 PM (26)
May 11, 6-7 PM (42)
May 11, 7-8 PM (53)
May 11, 8-9 PM (57)
May 11, 9-10 PM (22)
May 11, 10-11 PM (49)
May 11, 11-12 AM (19)
May 12, 12-1 AM (2)
May 12, 1-2 AM (2)
May 12, 2-3 AM (3)
May 12, 3-4 AM (4)
May 12, 4-5 AM (8)
May 12, 5-6 AM (11)
May 12, 6-7 AM (17)
May 12, 7-8 AM (25)
May 12, 8-9 AM (25)
May 12, 9-10 AM (35)
May 12, 10-11 AM (82)
May 12, 11-12 PM (98)
May 12, 12-1 PM (38)
May 12, 1-2 PM (69)
May 12, 2-3 PM (54)
May 12, 3-4 PM (41)
May 12, 4-5 PM (56)
May 12, 5-6 PM (29)
May 12, 6-7 PM (24)
May 12, 7-8 PM (24)
May 12, 8-9 PM (18)
May 12, 9-10 PM (8)
May 12, 10-11 PM (40)
May 12, 11-12 AM (19)
May 13, 12-1 AM (10)
May 13, 1-2 AM (2)
May 13, 2-3 AM (4)
May 13, 3-4 AM (2)
May 13, 4-5 AM (5)
May 13, 5-6 AM (29)
May 13, 6-7 AM (51)
May 13, 7-8 AM (42)
May 13, 8-9 AM (44)
May 13, 9-10 AM (21)
May 13, 10-11 AM (22)
May 13, 11-12 PM (47)
May 13, 12-1 PM (25)
May 13, 1-2 PM (42)
May 13, 2-3 PM (45)
May 13, 3-4 PM (42)
May 13, 4-5 PM (33)
May 13, 5-6 PM (29)
May 13, 6-7 PM (49)
May 13, 7-8 PM (31)
May 13, 8-9 PM (9)
May 13, 9-10 PM (24)
May 13, 10-11 PM (29)
May 13, 11-12 AM (11)
May 14, 12-1 AM (18)
May 14, 1-2 AM (3)
May 14, 2-3 AM (4)
May 14, 3-4 AM (21)
May 14, 4-5 AM (11)
May 14, 5-6 AM (18)
May 14, 6-7 AM (17)
May 14, 7-8 AM (45)
May 14, 8-9 AM (34)
May 14, 9-10 AM (0)
4,087 commits this week May 07, 2026 - May 14, 2026
Remove newLocalUTxO from StateChanged events and use Seq for localTxs
  UTxO fields are no longer stored on TransactionAppliedToLocalUTxO,
  SnapshotRequested and DecommitRecorded events — aggregate recomputes
  them via pure applyTxTo arithmetic, reducing per-event size to the tx
  itself. localTxs is changed from [tx] to Seq tx to avoid O(n) appends
  on every incoming transaction.

Signed-off-by: Sasha Bogicevic <[email protected]>
Remove redundant newLocalUTxO from StateChanged events
  newLocalUTxO was carried on TransactionAppliedToLocalUTxO,
  SnapshotRequested, and DecommitRecorded but is fully derivable from the
  event's tx (or snapshot fields) plus current state. Aggregate now
  recomputes it via a new IsTx method `applyTxTo` (pure UTxO arithmetic,
  no ledger validation).

  Removes O(N²) on-disk growth on Growing-UTxO workloads. JSON format is
  forward/backward compatible — old event stores still parse.

  Measured (bench-e2e --utxo-size Growing -n 2000):
  - hydra.db:         1.6 GB → 526 MB  (-67%)
  - hydra-node-0.log: 2.1 GB → 1.1 GB  (-48%)
  - avg confirm:      92.9 ms → 84.1 ms (-9%)

Signed-off-by: Sasha Bogicevic <[email protected]>
Sweep dead code and O(n²) anti-patterns in HeadLogic
  Three cleanups spotted while reviewing the newLocalUTxO removal:

  - waitApplyTx and waitOnApplicableDecommit no longer pass the validated
    UTxO to their continuations (the callers stopped using it after the
    newLocalUTxO removal). Validation still happens; only the unused
    continuation arg is dropped.

  - pruneTransactions: rewrite from foldl' with `txs <> [tx]` (O(n^2))
    to guarded recursion with `tx : go u' rest` (O(n)). Threading the
    running UTxO through `go` is still required for validity checks
    on dependent txs.

  - TransactionReceived aggregate: replace `allTxs <> fromList [(k,v)]`
    with `Map.insert k v allTxs`. Same big-O class but eliminates the
    intermediate singleton-Map allocation per ReqTx.

  No behavioural change. Constant-factor wins on the per-ReqTx hot path.

Signed-off-by: Sasha Bogicevic <[email protected]>
fix(mediation): add return_route to keylist-update so the response is observable
The previous flow assumed Send.run would resolve to the mediator's
keylist-update-response. In practice it always resolved to undefined:
DIDCommConnection.send returned the registered handler's result rather
than the parsed message, and the SDK never asked the mediator for an
inline reply. Per coordinate-mediation 2.0 the mediator only answers
synchronously when the request carries `return_route: "all"`, and
Mercury auto-attaches that header for the piuris in ReturnRouteProtocols
(packages/wasm/didcomm/src/Wrapper.ts) -- but keylist-update was never
on that list. So every keylist-update went out without return_route, the
mediator dispatched the response asynchronously, and the client never
observed it.

Add keylist-update to ReturnRouteProtocols, make DIDCommConnection.send
return the inline response, and rewrite updateKeyListWithDID to send the
message, race the call against a 60 s timeout, assert the response is a
Message with the expected piuri and a thid matching the outgoing id, and
validate the body via MediationKeysUpdateResponse (throws on any
non-success / non-no_change result).

Tests cover success, no_change, client_error, server_error, malformed
body, timeout, wrong piuri, wrong thid and a missing response. A guard
on ReturnRouteProtocols prevents the same kind of regression that
originally introduced this bug (PR #85).

Closes #391

Signed-off-by: Seydi Charyyev <[email protected]>
flake.lock: roll iserv-proxy back to 8cdc446 (drop aarch64-android stubs)
Reverts the two stub commits 0b8d6f6 / 3d649af in stable-haskell/iserv-proxy
(`flake.lock` was bumped to them in haskell.nix commits 3303ea332 /
11c3abf88).  Those commits added local definitions of bionic-absent
symbols (`__cxa_guard_acquire`, `__cxa_guard_release`, `__fadvise64`,
`__getpriority`, `__ldtoa`, `__sflush`, `__vfprintf`,
`async_safe_fatal_no_abort`, `async_safe_format_buffer`) to
`cbits/symbols.aarch64-android.c` to satisfy ld.lld during a link
where they were undefined.  In the current build configuration (NDK
27, current cabal flags, ghc 9.14.1) those symbols already resolve
cleanly without the stubs — and the stubs were displacing the real
bionic / libc++ implementations at runtime, causing the qemu
segfault on aarch64-android iserv-proxy-interpreter that we'd been
tracking as a separate "qemu builder" issue.

Verified `tests.js-template-haskell.build` on
`ghc9141.aarch64-android-prebuilt` passes with the override
`--override-input iserv-proxy github:stable-haskell/iserv-proxy/8cdc446f`
on linux-0 with `--builders ''`: iserv-proxy-interpreter links and
runs under qemu-aarch64 with no segfault.