Apr 13, 7-8 AM (39)
Apr 13, 8-9 AM (43)
Apr 13, 9-10 AM (51)
Apr 13, 10-11 AM (75)
Apr 13, 11-12 PM (35)
Apr 13, 12-1 PM (55)
Apr 13, 1-2 PM (80)
Apr 13, 2-3 PM (42)
Apr 13, 3-4 PM (20)
Apr 13, 4-5 PM (31)
Apr 13, 5-6 PM (25)
Apr 13, 6-7 PM (18)
Apr 13, 7-8 PM (13)
Apr 13, 8-9 PM (15)
Apr 13, 9-10 PM (22)
Apr 13, 10-11 PM (29)
Apr 13, 11-12 AM (13)
Apr 14, 12-1 AM (6)
Apr 14, 1-2 AM (8)
Apr 14, 2-3 AM (15)
Apr 14, 3-4 AM (4)
Apr 14, 4-5 AM (4)
Apr 14, 5-6 AM (63)
Apr 14, 6-7 AM (50)
Apr 14, 7-8 AM (101)
Apr 14, 8-9 AM (33)
Apr 14, 9-10 AM (21)
Apr 14, 10-11 AM (34)
Apr 14, 11-12 PM (42)
Apr 14, 12-1 PM (72)
Apr 14, 1-2 PM (96)
Apr 14, 2-3 PM (44)
Apr 14, 3-4 PM (35)
Apr 14, 4-5 PM (9)
Apr 14, 5-6 PM (20)
Apr 14, 6-7 PM (22)
Apr 14, 7-8 PM (14)
Apr 14, 8-9 PM (10)
Apr 14, 9-10 PM (11)
Apr 14, 10-11 PM (24)
Apr 14, 11-12 AM (24)
Apr 15, 12-1 AM (3)
Apr 15, 1-2 AM (9)
Apr 15, 2-3 AM (8)
Apr 15, 3-4 AM (1)
Apr 15, 4-5 AM (1)
Apr 15, 5-6 AM (32)
Apr 15, 6-7 AM (7)
Apr 15, 7-8 AM (25)
Apr 15, 8-9 AM (49)
Apr 15, 9-10 AM (40)
Apr 15, 10-11 AM (127)
Apr 15, 11-12 PM (53)
Apr 15, 12-1 PM (60)
Apr 15, 1-2 PM (43)
Apr 15, 2-3 PM (45)
Apr 15, 3-4 PM (29)
Apr 15, 4-5 PM (44)
Apr 15, 5-6 PM (21)
Apr 15, 6-7 PM (33)
Apr 15, 7-8 PM (15)
Apr 15, 8-9 PM (17)
Apr 15, 9-10 PM (5)
Apr 15, 10-11 PM (20)
Apr 15, 11-12 AM (16)
Apr 16, 12-1 AM (12)
Apr 16, 1-2 AM (6)
Apr 16, 2-3 AM (7)
Apr 16, 3-4 AM (3)
Apr 16, 4-5 AM (4)
Apr 16, 5-6 AM (8)
Apr 16, 6-7 AM (33)
Apr 16, 7-8 AM (32)
Apr 16, 8-9 AM (31)
Apr 16, 9-10 AM (27)
Apr 16, 10-11 AM (50)
Apr 16, 11-12 PM (56)
Apr 16, 12-1 PM (58)
Apr 16, 1-2 PM (30)
Apr 16, 2-3 PM (40)
Apr 16, 3-4 PM (46)
Apr 16, 4-5 PM (47)
Apr 16, 5-6 PM (56)
Apr 16, 6-7 PM (17)
Apr 16, 7-8 PM (68)
Apr 16, 8-9 PM (38)
Apr 16, 9-10 PM (11)
Apr 16, 10-11 PM (23)
Apr 16, 11-12 AM (23)
Apr 17, 12-1 AM (12)
Apr 17, 1-2 AM (8)
Apr 17, 2-3 AM (3)
Apr 17, 3-4 AM (4)
Apr 17, 4-5 AM (3)
Apr 17, 5-6 AM (9)
Apr 17, 6-7 AM (26)
Apr 17, 7-8 AM (96)
Apr 17, 8-9 AM (70)
Apr 17, 9-10 AM (53)
Apr 17, 10-11 AM (41)
Apr 17, 11-12 PM (58)
Apr 17, 12-1 PM (64)
Apr 17, 1-2 PM (39)
Apr 17, 2-3 PM (44)
Apr 17, 3-4 PM (36)
Apr 17, 4-5 PM (13)
Apr 17, 5-6 PM (9)
Apr 17, 6-7 PM (25)
Apr 17, 7-8 PM (15)
Apr 17, 8-9 PM (3)
Apr 17, 9-10 PM (16)
Apr 17, 10-11 PM (24)
Apr 17, 11-12 AM (16)
Apr 18, 12-1 AM (2)
Apr 18, 1-2 AM (2)
Apr 18, 2-3 AM (6)
Apr 18, 3-4 AM (1)
Apr 18, 4-5 AM (2)
Apr 18, 5-6 AM (2)
Apr 18, 6-7 AM (1)
Apr 18, 7-8 AM (2)
Apr 18, 8-9 AM (4)
Apr 18, 9-10 AM (4)
Apr 18, 10-11 AM (1)
Apr 18, 11-12 PM (6)
Apr 18, 12-1 PM (7)
Apr 18, 1-2 PM (8)
Apr 18, 2-3 PM (9)
Apr 18, 3-4 PM (0)
Apr 18, 4-5 PM (2)
Apr 18, 5-6 PM (6)
Apr 18, 6-7 PM (2)
Apr 18, 7-8 PM (2)
Apr 18, 8-9 PM (4)
Apr 18, 9-10 PM (9)
Apr 18, 10-11 PM (21)
Apr 18, 11-12 AM (23)
Apr 19, 12-1 AM (1)
Apr 19, 1-2 AM (4)
Apr 19, 2-3 AM (1)
Apr 19, 3-4 AM (0)
Apr 19, 4-5 AM (0)
Apr 19, 5-6 AM (2)
Apr 19, 6-7 AM (0)
Apr 19, 7-8 AM (2)
Apr 19, 8-9 AM (1)
Apr 19, 9-10 AM (1)
Apr 19, 10-11 AM (4)
Apr 19, 11-12 PM (7)
Apr 19, 12-1 PM (6)
Apr 19, 1-2 PM (8)
Apr 19, 2-3 PM (22)
Apr 19, 3-4 PM (7)
Apr 19, 4-5 PM (4)
Apr 19, 5-6 PM (3)
Apr 19, 6-7 PM (8)
Apr 19, 7-8 PM (3)
Apr 19, 8-9 PM (8)
Apr 19, 9-10 PM (6)
Apr 19, 10-11 PM (25)
Apr 19, 11-12 AM (23)
Apr 20, 12-1 AM (4)
Apr 20, 1-2 AM (5)
Apr 20, 2-3 AM (2)
Apr 20, 3-4 AM (7)
Apr 20, 4-5 AM (1)
Apr 20, 5-6 AM (6)
Apr 20, 6-7 AM (7)
Apr 20, 7-8 AM (12)
3,770 commits this week Apr 13, 2026 - Apr 20, 2026
Document Antithesis report triage for AI agents
Publishes the current state of programmatic access to Antithesis test
reports: no REST API or MCP server, reports arrive as signed HTML URLs
via email, and the official path for AI-agent triage is the
antithesis-triage skill plus snouty/agent-browser/jq.

Adds docs/triage.md with the full story and how it ties into the moog
workflow we use to request and decrypt report URLs.
Add tx-generator and Ogmios to testnet
Adds a transaction generator (Python, continuously submits splits/consumes
to grow the UTxO set) via relay1, and Ogmios as an N2C client via relay2.

- tx-generator component with Dockerfile and Python script
- n2c-harness to convert SIGTERM to SIGINT for GHC-based N2C clients
- configurator preserves UTxO keys to /utxo-keys for tx-generator funding
- relay1 gets a named state volume so tx-generator can read its node socket
- relay2 gets a named state volume so Ogmios can read its node socket
- configurator image bumped to tx-gen-v1 which bundles Nix store for deps

Kupo is intentionally excluded — it failed Antithesis in bisection while
tx-gen and Ogmios passed individually.
Blockfrost exceptions (#2580)
fix #2579 #2562 


- Add `retryOnBlockfrostError` helper with exponential backoff (1s→60s
cap, max 10 retries) for our own `APIBlockfrostError` variants
(`DecodeError`, `MissingNextBlockHash`, `MissingBlockNo`, etc.)
- Wrap `catchUpToLatest` in the retry helper so transient errors during
chain catch-up don't crash the node
- Make `DecodeError` retryable (was previously fatal) since partial HTTP
responses can cause transient CBOR decode failures
- Blockfrost API errors (timeouts, rate limits, 5xx) will be handled by
the upstream client library (see
[blockfrost-haskell#88](https://github.com/blockfrost/blockfrost-haskell/pull/88))


~NOTE: Do not merge until
https://github.com/blockfrost/blockfrost-haskell/pull/88 is merged and
the BF version is updated in hydra-node.~ ( Edit: @noonio - it's merged
now and I've updated the versions. )

<!-- Consider each and tick it off one way or the other -->
* [x] CHANGELOG updated or not needed
* [x] Documentation updated or not needed
* [x] Haddocks updated or not needed
* [x] No new TODOs introduced or explained herafter
Implement generic interface for voting committee schemes
This commit implements a generic interface that can be used to
instantiate multiple voting committee schemes using multiple crypto
backends for vote and certificate signing and validation.

The main CryptoSupportsVotingCommittee type class allows implementations
to define abstract votes and certificate types, check when a node should
vote, and forge and verify certificates and votes.

In addition, it provides a wrapper that allows us to keep track of two
simultaneous voting committees, the one corresponding to the current
epoch, and the one from the previous one. This is needed to validate
votes and certificates arriving slightly late at the beginning of a new
epoch.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>