Apr 27, 3-4 PM (42)
Apr 27, 4-5 PM (36)
Apr 27, 5-6 PM (26)
Apr 27, 6-7 PM (13)
Apr 27, 7-8 PM (26)
Apr 27, 8-9 PM (13)
Apr 27, 9-10 PM (16)
Apr 27, 10-11 PM (42)
Apr 27, 11-12 AM (28)
Apr 28, 12-1 AM (17)
Apr 28, 1-2 AM (8)
Apr 28, 2-3 AM (4)
Apr 28, 3-4 AM (5)
Apr 28, 4-5 AM (5)
Apr 28, 5-6 AM (8)
Apr 28, 6-7 AM (8)
Apr 28, 7-8 AM (37)
Apr 28, 8-9 AM (54)
Apr 28, 9-10 AM (59)
Apr 28, 10-11 AM (53)
Apr 28, 11-12 PM (56)
Apr 28, 12-1 PM (49)
Apr 28, 1-2 PM (54)
Apr 28, 2-3 PM (69)
Apr 28, 3-4 PM (31)
Apr 28, 4-5 PM (14)
Apr 28, 5-6 PM (47)
Apr 28, 6-7 PM (9)
Apr 28, 7-8 PM (9)
Apr 28, 8-9 PM (14)
Apr 28, 9-10 PM (20)
Apr 28, 10-11 PM (34)
Apr 28, 11-12 AM (29)
Apr 29, 12-1 AM (13)
Apr 29, 1-2 AM (1)
Apr 29, 2-3 AM (1)
Apr 29, 3-4 AM (6)
Apr 29, 4-5 AM (1)
Apr 29, 5-6 AM (4)
Apr 29, 6-7 AM (12)
Apr 29, 7-8 AM (45)
Apr 29, 8-9 AM (75)
Apr 29, 9-10 AM (49)
Apr 29, 10-11 AM (28)
Apr 29, 11-12 PM (51)
Apr 29, 12-1 PM (39)
Apr 29, 1-2 PM (21)
Apr 29, 2-3 PM (67)
Apr 29, 3-4 PM (25)
Apr 29, 4-5 PM (36)
Apr 29, 5-6 PM (16)
Apr 29, 6-7 PM (10)
Apr 29, 7-8 PM (14)
Apr 29, 8-9 PM (13)
Apr 29, 9-10 PM (17)
Apr 29, 10-11 PM (25)
Apr 29, 11-12 AM (29)
Apr 30, 12-1 AM (6)
Apr 30, 1-2 AM (8)
Apr 30, 2-3 AM (1)
Apr 30, 3-4 AM (6)
Apr 30, 4-5 AM (2)
Apr 30, 5-6 AM (8)
Apr 30, 6-7 AM (15)
Apr 30, 7-8 AM (17)
Apr 30, 8-9 AM (100)
Apr 30, 9-10 AM (19)
Apr 30, 10-11 AM (50)
Apr 30, 11-12 PM (120)
Apr 30, 12-1 PM (69)
Apr 30, 1-2 PM (45)
Apr 30, 2-3 PM (117)
Apr 30, 3-4 PM (29)
Apr 30, 4-5 PM (34)
Apr 30, 5-6 PM (9)
Apr 30, 6-7 PM (20)
Apr 30, 7-8 PM (23)
Apr 30, 8-9 PM (28)
Apr 30, 9-10 PM (13)
Apr 30, 10-11 PM (25)
Apr 30, 11-12 AM (15)
May 01, 12-1 AM (18)
May 01, 1-2 AM (15)
May 01, 2-3 AM (6)
May 01, 3-4 AM (7)
May 01, 4-5 AM (3)
May 01, 5-6 AM (5)
May 01, 6-7 AM (8)
May 01, 7-8 AM (13)
May 01, 8-9 AM (24)
May 01, 9-10 AM (16)
May 01, 10-11 AM (16)
May 01, 11-12 PM (17)
May 01, 12-1 PM (39)
May 01, 1-2 PM (32)
May 01, 2-3 PM (19)
May 01, 3-4 PM (16)
May 01, 4-5 PM (25)
May 01, 5-6 PM (11)
May 01, 6-7 PM (20)
May 01, 7-8 PM (22)
May 01, 8-9 PM (65)
May 01, 9-10 PM (15)
May 01, 10-11 PM (40)
May 01, 11-12 AM (61)
May 02, 12-1 AM (6)
May 02, 1-2 AM (11)
May 02, 2-3 AM (5)
May 02, 3-4 AM (8)
May 02, 4-5 AM (6)
May 02, 5-6 AM (2)
May 02, 6-7 AM (2)
May 02, 7-8 AM (14)
May 02, 8-9 AM (7)
May 02, 9-10 AM (8)
May 02, 10-11 AM (11)
May 02, 11-12 PM (7)
May 02, 12-1 PM (7)
May 02, 1-2 PM (3)
May 02, 2-3 PM (14)
May 02, 3-4 PM (9)
May 02, 4-5 PM (27)
May 02, 5-6 PM (9)
May 02, 6-7 PM (29)
May 02, 7-8 PM (11)
May 02, 8-9 PM (14)
May 02, 9-10 PM (1)
May 02, 10-11 PM (20)
May 02, 11-12 AM (18)
May 03, 12-1 AM (8)
May 03, 1-2 AM (1)
May 03, 2-3 AM (4)
May 03, 3-4 AM (7)
May 03, 4-5 AM (1)
May 03, 5-6 AM (4)
May 03, 6-7 AM (32)
May 03, 7-8 AM (5)
May 03, 8-9 AM (1)
May 03, 9-10 AM (3)
May 03, 10-11 AM (10)
May 03, 11-12 PM (11)
May 03, 12-1 PM (16)
May 03, 1-2 PM (11)
May 03, 2-3 PM (2)
May 03, 3-4 PM (2)
May 03, 4-5 PM (5)
May 03, 5-6 PM (0)
May 03, 6-7 PM (5)
May 03, 7-8 PM (6)
May 03, 8-9 PM (8)
May 03, 9-10 PM (15)
May 03, 10-11 PM (23)
May 03, 11-12 AM (16)
May 04, 12-1 AM (4)
May 04, 1-2 AM (4)
May 04, 2-3 AM (10)
May 04, 3-4 AM (9)
May 04, 4-5 AM (5)
May 04, 5-6 AM (6)
May 04, 6-7 AM (5)
May 04, 7-8 AM (28)
May 04, 8-9 AM (24)
May 04, 9-10 AM (43)
May 04, 10-11 AM (34)
May 04, 11-12 PM (55)
May 04, 12-1 PM (34)
May 04, 1-2 PM (46)
May 04, 2-3 PM (27)
May 04, 3-4 PM (1)
3,584 commits this week Apr 27, 2026 - May 04, 2026
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]>
chore(testnet): align cardano_node_adversary pins to origin/main master
Pulls in master's current shared-image versions:
- sidecar:1ff6913       (post legacy-probe delete, #119)
- tracer-sidecar:5271661 (fork-tree probe build)
- configurator + log-tailer + tracer + cardano-node digests already match
- tx-generator from master is intentionally not added — adversary
  testnet runs nodes only

The adversary container itself stays pinned to its own SHA
(adversary:b75cfe3) since master has no adversary equivalent.

Layer 3 of #123 (perturbation metric emit from finally_tips_agree.sh)
is dropped: that script was deleted on main by #119, the cluster-wide
"did the cluster fork" oracle now lives in tracer-sidecar's fork-tree
probe. Re-implementing the perturbation metric on top of that surface
is a follow-up.
feat(adversary): emit Antithesis SDK assertions to prove the attacker fired
Adds Adversary.SDK with Reachable / Sometimes assertion emitters that
write to \$ANTITHESIS_OUTPUT_DIR/sdk.jsonl (default /tmp/sdk.jsonl).
Wires two assertions into app/Main.hs:

  - reachable("adversary_chain_sync_started", {target_host, point, limit})
    fires once per invocation before connectToNode. Antithesis report
    will show, segmented by target_host, "the adversary fired against
    pN at least once". A host that never gets attacked is visible as
    a missing Reachable hit.

  - sometimes(true|false, "adversary_chain_sync_completed",
              {target_host, tip|reason})
    fires once per invocation on completion. true on clean exit,
    false on connect/protocol failure. Sometimes-true vs Sometimes-
    false buckets quantify how often the adversary actually completed
    a full --limit sync vs being cut short by chaos.

Layer 1 of three for issue #123.
chore(deps): bump postcss in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.8 to 8.5.13
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.8...8.5.13)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[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]>
Bump cardano-node 10.6.4 → 10.7.1, cardano-node-pre 10.7.1 → 11.0.0
10.7.1 was released 2026-04-15 as the latest stable, supplanting 10.6.4.
11.0.0 (commit 1f5588d9, 2026-05-03) is tagged but its GitHub release
is still draft; pin to the tag for early CI exposure to the next major.

Notes for downstream:
  - 10.7.1 needs a chain replay (TablesCodecVersion1 changes on-disk
    encoding); LSM Tree backend replaces LMDB on OnDisk.
  - cardano-api: submitTxToNodeLocal now returns TxSubmitResult.
  - The new linux build deps (liburing/snappy-c/protobuf) are already
    handled by the prior overlay fix.
fix(client): avoid error if unpack thread closed before the sender thread
Archives unpacker that can know when a uncompression finished by locking
at the bytes, finishing immediatly.
In that case a race condition can occurs if the sender thread, that
reads the bytes from the remote location, do a last loop who will read 0
bytes, then `sender.send_async(..)` returns an "sending on a closed
channel" error.
Update 2026-05-04T15:03:13Z
added:
* github:F1bonacc1/process-compose/d8e7d509601ea342a3778632cfd92a33dc5dcf37#packages.x86_64-linux.process-compose
* github:input-output-hk/mithril/bee0f14bbb4d6697044ee81a507996bcba374c06#mithril-client-cli
* github:input-output-hk/mithril/bee0f14bbb4d6697044ee81a507996bcba374c06#mithril-signer
removed:
* github:F1bonacc1/process-compose/c3439878c9ac501b947eb3783f422d48a6b94975#packages.x86_64-linux.process-compose
* github:input-output-hk/mithril/7783c68a9efacea8aa75e46801b0b9b3eaf3e911#mithril-client-cli
* github:input-output-hk/mithril/7783c68a9efacea8aa75e46801b0b9b3eaf3e911#mithril-signer