Mar 21, 2-3 AM (5)
Mar 21, 3-4 AM (2)
Mar 21, 4-5 AM (1)
Mar 21, 5-6 AM (2)
Mar 21, 6-7 AM (6)
Mar 21, 7-8 AM (3)
Mar 21, 8-9 AM (9)
Mar 21, 9-10 AM (7)
Mar 21, 10-11 AM (5)
Mar 21, 11-12 PM (4)
Mar 21, 12-1 PM (3)
Mar 21, 1-2 PM (8)
Mar 21, 2-3 PM (3)
Mar 21, 3-4 PM (9)
Mar 21, 4-5 PM (7)
Mar 21, 5-6 PM (12)
Mar 21, 6-7 PM (12)
Mar 21, 7-8 PM (2)
Mar 21, 8-9 PM (1)
Mar 21, 9-10 PM (5)
Mar 21, 10-11 PM (24)
Mar 21, 11-12 AM (21)
Mar 22, 12-1 AM (0)
Mar 22, 1-2 AM (6)
Mar 22, 2-3 AM (5)
Mar 22, 3-4 AM (0)
Mar 22, 4-5 AM (1)
Mar 22, 5-6 AM (6)
Mar 22, 6-7 AM (6)
Mar 22, 7-8 AM (1)
Mar 22, 8-9 AM (1)
Mar 22, 9-10 AM (2)
Mar 22, 10-11 AM (3)
Mar 22, 11-12 PM (5)
Mar 22, 12-1 PM (1)
Mar 22, 1-2 PM (1)
Mar 22, 2-3 PM (2)
Mar 22, 3-4 PM (6)
Mar 22, 4-5 PM (6)
Mar 22, 5-6 PM (17)
Mar 22, 6-7 PM (32)
Mar 22, 7-8 PM (48)
Mar 22, 8-9 PM (7)
Mar 22, 9-10 PM (1)
Mar 22, 10-11 PM (21)
Mar 22, 11-12 AM (23)
Mar 23, 12-1 AM (5)
Mar 23, 1-2 AM (4)
Mar 23, 2-3 AM (9)
Mar 23, 3-4 AM (7)
Mar 23, 4-5 AM (2)
Mar 23, 5-6 AM (4)
Mar 23, 6-7 AM (1)
Mar 23, 7-8 AM (7)
Mar 23, 8-9 AM (33)
Mar 23, 9-10 AM (36)
Mar 23, 10-11 AM (17)
Mar 23, 11-12 PM (97)
Mar 23, 12-1 PM (64)
Mar 23, 1-2 PM (53)
Mar 23, 2-3 PM (74)
Mar 23, 3-4 PM (69)
Mar 23, 4-5 PM (86)
Mar 23, 5-6 PM (65)
Mar 23, 6-7 PM (21)
Mar 23, 7-8 PM (18)
Mar 23, 8-9 PM (16)
Mar 23, 9-10 PM (19)
Mar 23, 10-11 PM (35)
Mar 23, 11-12 AM (31)
Mar 24, 12-1 AM (1)
Mar 24, 1-2 AM (3)
Mar 24, 2-3 AM (14)
Mar 24, 3-4 AM (4)
Mar 24, 4-5 AM (3)
Mar 24, 5-6 AM (4)
Mar 24, 6-7 AM (3)
Mar 24, 7-8 AM (102)
Mar 24, 8-9 AM (40)
Mar 24, 9-10 AM (30)
Mar 24, 10-11 AM (167)
Mar 24, 11-12 PM (26)
Mar 24, 12-1 PM (42)
Mar 24, 1-2 PM (129)
Mar 24, 2-3 PM (12)
Mar 24, 3-4 PM (40)
Mar 24, 4-5 PM (47)
Mar 24, 5-6 PM (110)
Mar 24, 6-7 PM (17)
Mar 24, 7-8 PM (9)
Mar 24, 8-9 PM (14)
Mar 24, 9-10 PM (16)
Mar 24, 10-11 PM (28)
Mar 24, 11-12 AM (14)
Mar 25, 12-1 AM (1)
Mar 25, 1-2 AM (2)
Mar 25, 2-3 AM (13)
Mar 25, 3-4 AM (2)
Mar 25, 4-5 AM (10)
Mar 25, 5-6 AM (5)
Mar 25, 6-7 AM (7)
Mar 25, 7-8 AM (14)
Mar 25, 8-9 AM (22)
Mar 25, 9-10 AM (48)
Mar 25, 10-11 AM (28)
Mar 25, 11-12 PM (36)
Mar 25, 12-1 PM (86)
Mar 25, 1-2 PM (29)
Mar 25, 2-3 PM (28)
Mar 25, 3-4 PM (65)
Mar 25, 4-5 PM (30)
Mar 25, 5-6 PM (16)
Mar 25, 6-7 PM (32)
Mar 25, 7-8 PM (10)
Mar 25, 8-9 PM (9)
Mar 25, 9-10 PM (6)
Mar 25, 10-11 PM (25)
Mar 25, 11-12 AM (16)
Mar 26, 12-1 AM (3)
Mar 26, 1-2 AM (9)
Mar 26, 2-3 AM (21)
Mar 26, 3-4 AM (10)
Mar 26, 4-5 AM (1)
Mar 26, 5-6 AM (14)
Mar 26, 6-7 AM (4)
Mar 26, 7-8 AM (8)
Mar 26, 8-9 AM (18)
Mar 26, 9-10 AM (33)
Mar 26, 10-11 AM (21)
Mar 26, 11-12 PM (34)
Mar 26, 12-1 PM (33)
Mar 26, 1-2 PM (77)
Mar 26, 2-3 PM (46)
Mar 26, 3-4 PM (51)
Mar 26, 4-5 PM (40)
Mar 26, 5-6 PM (19)
Mar 26, 6-7 PM (19)
Mar 26, 7-8 PM (15)
Mar 26, 8-9 PM (9)
Mar 26, 9-10 PM (17)
Mar 26, 10-11 PM (38)
Mar 26, 11-12 AM (11)
Mar 27, 12-1 AM (3)
Mar 27, 1-2 AM (1)
Mar 27, 2-3 AM (25)
Mar 27, 3-4 AM (12)
Mar 27, 4-5 AM (6)
Mar 27, 5-6 AM (3)
Mar 27, 6-7 AM (10)
Mar 27, 7-8 AM (18)
Mar 27, 8-9 AM (32)
Mar 27, 9-10 AM (26)
Mar 27, 10-11 AM (37)
Mar 27, 11-12 PM (26)
Mar 27, 12-1 PM (38)
Mar 27, 1-2 PM (30)
Mar 27, 2-3 PM (59)
Mar 27, 3-4 PM (40)
Mar 27, 4-5 PM (20)
Mar 27, 5-6 PM (29)
Mar 27, 6-7 PM (29)
Mar 27, 7-8 PM (12)
Mar 27, 8-9 PM (14)
Mar 27, 9-10 PM (13)
Mar 27, 10-11 PM (22)
Mar 27, 11-12 AM (14)
Mar 28, 12-1 AM (1)
Mar 28, 1-2 AM (1)
Mar 28, 2-3 AM (1)
3,608 commits this week
Mar 21, 2026
-
Mar 28, 2026
add metrics for tracking pg_pool
caribic: derive optional-chain demo setup from chain metadata
fix(chainselection): prefer incumbent peer on equal-tip ties
selectBestChainLocked() iterates a Go map (random order) to find the best peer. When multiple peers report equal tips, the winner depended on map iteration order — causing the "best" peer to randomly flip on every call. Each flip triggered a chainsync pipeline reset via detectConnectionSwitch(), clearing queued headers and canceling in-flight blockfetch. The node would thrash between peers every 1-2 seconds and never advance. Seed the selection with the current incumbent peer so equal-tip comparisons (ChainEqual) preserve the existing connection. A new peer must be strictly better (ChainABetter) to displace the incumbent. This matches cardano-node's "prefer incumbent" chain selection rule. Signed-off-by: wcatz <[email protected]>
:card_file_box: Update status summary [skip ci] [upptime]
:pencil: Update summary in README [skip ci] [upptime]
:card_file_box: Update status summary [skip ci] [upptime]
:pencil: Update summary in README [skip ci] [upptime]
fix(ledger): roll back chain tip to ledger tip at startup to close Mithril gap
After Mithril bootstrap, the chain tip (blob store) is ahead of the ledger tip (UTxO state) because gap blocks are stored but not processed. Previously the reconcile function logged this but took no action, letting chainsync jump to the network tip where blocks reference UTxOs from unprocessed gap blocks — causing validation failures. Roll back the primary chain to match the ledger tip at startup. This forces chainsync FindIntersect to begin from the ledger tip, so gap blocks are re-fetched and processed sequentially through the normal pipeline with full validation (including governance state). Signed-off-by: wcatz <[email protected]>
refactor: replace gin with net/http
Signed-off-by: Ales Verbic <[email protected]>
:bento: Update graphs [skip ci]
:bento: Update graphs [skip ci]
:pencil: Update summary in README [skip ci] [upptime]
:card_file_box: Update status summary [skip ci] [upptime]
:bento: Update graphs [skip ci]
chore(tests): sleep before `wait4x` to reduce errors
Avoid unnecessary rebuilding when running doctests
🟩 get-vote-receipt-api is up (401 in 90 ms) [skip ci] [upptime]
🟩 keria is up (401 in 484 ms) [skip ci] [upptime]
🟩 cast-vote-api is up (401 in 299 ms) [skip ci] [upptime]
🟩 get-votes-api is up (401 in 298 ms) [skip ci] [upptime]
🟩 blockchain-follower-api is up (200 in 290 ms) [skip ci] [upptime]