Jun 08, 4-5 PM (12)
Jun 08, 5-6 PM (23)
Jun 08, 6-7 PM (14)
Jun 08, 7-8 PM (3)
Jun 08, 8-9 PM (6)
Jun 08, 9-10 PM (19)
Jun 08, 10-11 PM (29)
Jun 08, 11-12 AM (8)
Jun 09, 12-1 AM (5)
Jun 09, 1-2 AM (3)
Jun 09, 2-3 AM (1)
Jun 09, 3-4 AM (3)
Jun 09, 4-5 AM (26)
Jun 09, 5-6 AM (5)
Jun 09, 6-7 AM (23)
Jun 09, 7-8 AM (51)
Jun 09, 8-9 AM (35)
Jun 09, 9-10 AM (45)
Jun 09, 10-11 AM (51)
Jun 09, 11-12 PM (46)
Jun 09, 12-1 PM (86)
Jun 09, 1-2 PM (84)
Jun 09, 2-3 PM (36)
Jun 09, 3-4 PM (38)
Jun 09, 4-5 PM (16)
Jun 09, 5-6 PM (18)
Jun 09, 6-7 PM (18)
Jun 09, 7-8 PM (19)
Jun 09, 8-9 PM (16)
Jun 09, 9-10 PM (16)
Jun 09, 10-11 PM (28)
Jun 09, 11-12 AM (10)
Jun 10, 12-1 AM (11)
Jun 10, 1-2 AM (16)
Jun 10, 2-3 AM (11)
Jun 10, 3-4 AM (19)
Jun 10, 4-5 AM (5)
Jun 10, 5-6 AM (2)
Jun 10, 6-7 AM (46)
Jun 10, 7-8 AM (82)
Jun 10, 8-9 AM (18)
Jun 10, 9-10 AM (59)
Jun 10, 10-11 AM (46)
Jun 10, 11-12 PM (134)
Jun 10, 12-1 PM (49)
Jun 10, 1-2 PM (33)
Jun 10, 2-3 PM (32)
Jun 10, 3-4 PM (28)
Jun 10, 4-5 PM (36)
Jun 10, 5-6 PM (12)
Jun 10, 6-7 PM (12)
Jun 10, 7-8 PM (38)
Jun 10, 8-9 PM (11)
Jun 10, 9-10 PM (10)
Jun 10, 10-11 PM (20)
Jun 10, 11-12 AM (7)
Jun 11, 12-1 AM (10)
Jun 11, 1-2 AM (2)
Jun 11, 2-3 AM (0)
Jun 11, 3-4 AM (2)
Jun 11, 4-5 AM (8)
Jun 11, 5-6 AM (12)
Jun 11, 6-7 AM (34)
Jun 11, 7-8 AM (106)
Jun 11, 8-9 AM (37)
Jun 11, 9-10 AM (20)
Jun 11, 10-11 AM (105)
Jun 11, 11-12 PM (25)
Jun 11, 12-1 PM (38)
Jun 11, 1-2 PM (38)
Jun 11, 2-3 PM (15)
Jun 11, 3-4 PM (20)
Jun 11, 4-5 PM (5)
Jun 11, 5-6 PM (7)
Jun 11, 6-7 PM (26)
Jun 11, 7-8 PM (90)
Jun 11, 8-9 PM (11)
Jun 11, 9-10 PM (5)
Jun 11, 10-11 PM (25)
Jun 11, 11-12 AM (5)
Jun 12, 12-1 AM (8)
Jun 12, 1-2 AM (2)
Jun 12, 2-3 AM (2)
Jun 12, 3-4 AM (4)
Jun 12, 4-5 AM (7)
Jun 12, 5-6 AM (15)
Jun 12, 6-7 AM (46)
Jun 12, 7-8 AM (19)
Jun 12, 8-9 AM (28)
Jun 12, 9-10 AM (22)
Jun 12, 10-11 AM (29)
Jun 12, 11-12 PM (42)
Jun 12, 12-1 PM (24)
Jun 12, 1-2 PM (26)
Jun 12, 2-3 PM (22)
Jun 12, 3-4 PM (38)
Jun 12, 4-5 PM (23)
Jun 12, 5-6 PM (19)
Jun 12, 6-7 PM (26)
Jun 12, 7-8 PM (12)
Jun 12, 8-9 PM (17)
Jun 12, 9-10 PM (5)
Jun 12, 10-11 PM (30)
Jun 12, 11-12 AM (6)
Jun 13, 12-1 AM (6)
Jun 13, 1-2 AM (2)
Jun 13, 2-3 AM (0)
Jun 13, 3-4 AM (3)
Jun 13, 4-5 AM (0)
Jun 13, 5-6 AM (3)
Jun 13, 6-7 AM (7)
Jun 13, 7-8 AM (5)
Jun 13, 8-9 AM (6)
Jun 13, 9-10 AM (14)
Jun 13, 10-11 AM (12)
Jun 13, 11-12 PM (2)
Jun 13, 12-1 PM (23)
Jun 13, 1-2 PM (21)
Jun 13, 2-3 PM (8)
Jun 13, 3-4 PM (1)
Jun 13, 4-5 PM (4)
Jun 13, 5-6 PM (4)
Jun 13, 6-7 PM (3)
Jun 13, 7-8 PM (3)
Jun 13, 8-9 PM (7)
Jun 13, 9-10 PM (16)
Jun 13, 10-11 PM (19)
Jun 13, 11-12 AM (24)
Jun 14, 12-1 AM (18)
Jun 14, 1-2 AM (0)
Jun 14, 2-3 AM (0)
Jun 14, 3-4 AM (0)
Jun 14, 4-5 AM (2)
Jun 14, 5-6 AM (0)
Jun 14, 6-7 AM (2)
Jun 14, 7-8 AM (3)
Jun 14, 8-9 AM (0)
Jun 14, 9-10 AM (1)
Jun 14, 10-11 AM (2)
Jun 14, 11-12 PM (10)
Jun 14, 12-1 PM (8)
Jun 14, 1-2 PM (4)
Jun 14, 2-3 PM (8)
Jun 14, 3-4 PM (2)
Jun 14, 4-5 PM (1)
Jun 14, 5-6 PM (1)
Jun 14, 6-7 PM (0)
Jun 14, 7-8 PM (11)
Jun 14, 8-9 PM (1)
Jun 14, 9-10 PM (13)
Jun 14, 10-11 PM (29)
Jun 14, 11-12 AM (23)
Jun 15, 12-1 AM (8)
Jun 15, 1-2 AM (10)
Jun 15, 2-3 AM (4)
Jun 15, 3-4 AM (4)
Jun 15, 4-5 AM (1)
Jun 15, 5-6 AM (3)
Jun 15, 6-7 AM (3)
Jun 15, 7-8 AM (41)
Jun 15, 8-9 AM (24)
Jun 15, 9-10 AM (11)
Jun 15, 10-11 AM (34)
Jun 15, 11-12 PM (24)
Jun 15, 12-1 PM (40)
Jun 15, 1-2 PM (25)
Jun 15, 2-3 PM (18)
Jun 15, 3-4 PM (13)
Jun 15, 4-5 PM (0)
3,239 commits this week Jun 08, 2026 - Jun 15, 2026
Garbage-collect staged CertRBs and consolidate staging logic
A GC tick periodically re-checks each staged entry against the live
ChainSync candidates and evicts entries whose CertRB no live peer
has on its chain anymore — the closure is then unreachable. Parked
BlockFetch client threads register a per-call StrictTMVar with the
staging area; drain fills it with StagedReleased once the closure
arrives, GC fills it with StagedEvicted on giving up, so the client
returns either SuccesfullyAddedBlock or FailedToAddBlock instead of
parking forever.

Folds the rest of the staging machinery into LeiosStagingArea so it
sits in one place: the ChainDbView wrapper, the parent-announcement
lookup, peersThatKnowBlock, and the drain / GC threads all live here
now and are spawned by newLeiosStagingArea on the supplied registry.
The handle's surface shrinks to stagedSnapshot (for the fetch loop)
and wrappedChainDbView (for BlockFetch). NodeKernel passes the
tracer, registry, ChainDB and ChainSyncClientHandleCollection and
plumbs the wrapped view through.
docs: reorder v2 sidebar, split examples, add quickstart install tabs
Acting on review feedback for the published v2 docs:

- Sidebar order: fix the dataflow ordering (Sources -> Filters -> Sinks, was
  Filters -> Sources -> Sinks), cluster the standalone intro pages at the top
  (Introduction -> How it works -> Quick Start) instead of wedging Quick Start
  between groups, and move Reference below the config section. Added intentional
  intra-group order for Installation and Usage (watch -> dump -> daemon ->
  library).
- Rename the "Advanced Features" group to "Configuration" and position it right
  after the component groups — these pages are all optional daemon.toml config
  blocks. Kept it separate from Usage (CLI entry points) rather than merging.
- Split Examples into "Runnable examples" (the repo projects) and a new
  "Recipes" page (the inline copy-paste daemon.toml snippets).
- Quickstart step 1 now offers the full install-method tabs (Shell / PowerShell
  / Homebrew / npm), matching the Binary Releases page.

Verified with a full local astro build of txpipe/docs: 196 pages built, the
Tabs-in-Steps install block renders, and the new Recipes page builds.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Update 2026-06-15T16:09:48Z
added:
* github:input-output-hk/mithril/6f51b1261472feb1b92a564863a6968f6149f38d#mithril-client-cli
* github:input-output-hk/mithril/6f51b1261472feb1b92a564863a6968f6149f38d#mithril-signer
removed:
* github:input-output-hk/mithril/aab34211273e57a3da79a394cc2c604e8f277bc4#mithril-client-cli
* github:input-output-hk/mithril/aab34211273e57a3da79a394cc2c604e8f277bc4#mithril-signer
fix: derive immutable chunk size from network security parameter
chunk_for_slot hardcoded 21600 slots per chunk, which only holds for
mainnet and preprod (k = 2160). Preview chunks span 4320 slots (k = 432),
so create-snapshots compared incompatible chunk numbers, wrongly concluded
the local cardano-db covered the target slots and skipped the Mithril
download, then failed to store the ledger snapshot.
Drop currentChain from staging gate parent lookup
The CertRB staging gate consulted both getCurrentChain and the
ChainSync candidate fragments to locate the parent header's
headerLeiosAnnouncement. A BlockFetch-delivered block is by
construction fulfilling some candidate, so the parent must live in
one of the live candidate fragments; the locally selected chain is
incidental. Dropping it keeps the gate's decision aligned with the
candidate it's serving (issue #890 follow-up bullet 1).
Fix network-mux:test:test OOM at GHCRTS=-M900M
- Pin contra-tracer to Russoul/contra-tracer@5ad4ac8 which adds
  INLINE contramap and strict second argument / result, on top of
  the existing INLINE runTracerA and strict (***) fixes.

- Revert the heap limit from 1500M back to 900M and instead set
  TASTY_NUM_THREADS=1 on all platforms. The OOM is caused by Tasty
  running all tests concurrently (one thread per CPU via
  setNumCapabilities), stacking their peak residencies. Each
  individual test fits well within 900 MB; the fix is sequential
  execution, not a larger limit.
Garbage-collect staged CertRBs and wake parked threads
Periodically recompute the live-peer set for each staged entry from
current ChainSync candidate fragments; when no live peer's candidate
contains the staged CertRB, the EB closure is unreachable and the
entry is evicted. Eviction wakes the parked BlockFetch client thread
via a per-call StrictTMVar with StagedEvicted so it can surface a
FailedToAddBlock verdict instead of leaking the thread (PR #2058
open point 4). Drain switches to the same TMVar mechanism, signalling
StagedReleased on closure arrival.
Drop currentChain from staging gate parent lookup
The CertRB staging gate consulted both getCurrentChain and the
ChainSync candidate fragments to locate the parent header's
headerLeiosAnnouncement. A BlockFetch-delivered block is by
construction fulfilling some candidate, so the parent must live in
one of the live candidate fragments; the locally selected chain is
incidental. Dropping it keeps the gate's decision aligned with the
candidate it's serving (issue #890 follow-up bullet 1).