deploy: 50b5637c40761f507f128febbec4b8fad0d68785
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 (44)
May 13, 2-3 PM (57)
May 13, 3-4 PM (42)
May 13, 4-5 PM (33)
May 13, 5-6 PM (30)
May 13, 6-7 PM (51)
May 13, 7-8 PM (33)
May 13, 8-9 PM (9)
May 13, 9-10 PM (24)
May 13, 10-11 PM (30)
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 (18)
May 14, 7-8 AM (47)
May 14, 8-9 AM (53)
May 14, 9-10 AM (35)
May 14, 10-11 AM (20)
May 14, 11-12 PM (114)
May 14, 12-1 PM (54)
May 14, 1-2 PM (151)
May 14, 2-3 PM (32)
May 14, 3-4 PM (17)
May 14, 4-5 PM (14)
May 14, 5-6 PM (38)
May 14, 6-7 PM (12)
May 14, 7-8 PM (22)
May 14, 8-9 PM (37)
May 14, 9-10 PM (35)
May 14, 10-11 PM (27)
May 14, 11-12 AM (14)
May 15, 12-1 AM (18)
May 15, 1-2 AM (15)
May 15, 2-3 AM (5)
May 15, 3-4 AM (3)
May 15, 4-5 AM (13)
May 15, 5-6 AM (14)
May 15, 6-7 AM (10)
May 15, 7-8 AM (31)
May 15, 8-9 AM (23)
May 15, 9-10 AM (52)
May 15, 10-11 AM (71)
May 15, 11-12 PM (70)
May 15, 12-1 PM (73)
May 15, 1-2 PM (73)
May 15, 2-3 PM (66)
May 15, 3-4 PM (26)
May 15, 4-5 PM (13)
May 15, 5-6 PM (30)
May 15, 6-7 PM (29)
May 15, 7-8 PM (25)
May 15, 8-9 PM (8)
May 15, 9-10 PM (34)
May 15, 10-11 PM (34)
May 15, 11-12 AM (25)
May 16, 12-1 AM (2)
May 16, 1-2 AM (2)
May 16, 2-3 AM (3)
May 16, 3-4 AM (3)
May 16, 4-5 AM (0)
May 16, 5-6 AM (6)
May 16, 6-7 AM (2)
May 16, 7-8 AM (10)
May 16, 8-9 AM (1)
May 16, 9-10 AM (2)
May 16, 10-11 AM (1)
May 16, 11-12 PM (13)
May 16, 12-1 PM (11)
May 16, 1-2 PM (8)
May 16, 2-3 PM (15)
May 16, 3-4 PM (10)
May 16, 4-5 PM (2)
May 16, 5-6 PM (2)
May 16, 6-7 PM (2)
May 16, 7-8 PM (10)
May 16, 8-9 PM (6)
May 16, 9-10 PM (9)
May 16, 10-11 PM (29)
May 16, 11-12 AM (42)
May 17, 12-1 AM (9)
May 17, 1-2 AM (1)
May 17, 2-3 AM (0)
May 17, 3-4 AM (1)
May 17, 4-5 AM (0)
May 17, 5-6 AM (3)
May 17, 6-7 AM (2)
May 17, 7-8 AM (1)
May 17, 8-9 AM (1)
May 17, 9-10 AM (1)
May 17, 10-11 AM (6)
May 17, 11-12 PM (6)
May 17, 12-1 PM (4)
May 17, 1-2 PM (5)
May 17, 2-3 PM (9)
May 17, 3-4 PM (4)
May 17, 4-5 PM (8)
May 17, 5-6 PM (14)
May 17, 6-7 PM (10)
May 17, 7-8 PM (2)
May 17, 8-9 PM (4)
May 17, 9-10 PM (2)
May 17, 10-11 PM (20)
May 17, 11-12 AM (13)
May 18, 12-1 AM (10)
May 18, 1-2 AM (4)
May 18, 2-3 AM (5)
May 18, 3-4 AM (9)
May 18, 4-5 AM (14)
May 18, 5-6 AM (2)
May 18, 6-7 AM (37)
May 18, 7-8 AM (28)
May 18, 8-9 AM (35)
May 18, 9-10 AM (41)
May 18, 10-11 AM (43)
May 18, 11-12 PM (29)
May 18, 12-1 PM (136)
May 18, 1-2 PM (34)
May 18, 2-3 PM (89)
May 18, 3-4 PM (33)
May 18, 4-5 PM (45)
May 18, 5-6 PM (21)
May 18, 6-7 PM (16)
May 18, 7-8 PM (13)
May 18, 8-9 PM (23)
May 18, 9-10 PM (4)
May 18, 10-11 PM (25)
May 18, 11-12 AM (12)
May 19, 12-1 AM (7)
May 19, 1-2 AM (2)
May 19, 2-3 AM (9)
May 19, 3-4 AM (5)
May 19, 4-5 AM (10)
May 19, 5-6 AM (3)
May 19, 6-7 AM (53)
May 19, 7-8 AM (23)
May 19, 8-9 AM (46)
May 19, 9-10 AM (66)
May 19, 10-11 AM (30)
May 19, 11-12 PM (48)
May 19, 12-1 PM (79)
May 19, 1-2 PM (70)
May 19, 2-3 PM (41)
May 19, 3-4 PM (51)
May 19, 4-5 PM (15)
May 19, 5-6 PM (17)
May 19, 6-7 PM (18)
May 19, 7-8 PM (9)
May 19, 8-9 PM (21)
May 19, 9-10 PM (10)
May 19, 10-11 PM (28)
May 19, 11-12 AM (13)
May 20, 12-1 AM (21)
May 20, 1-2 AM (9)
May 20, 2-3 AM (4)
May 20, 3-4 AM (5)
May 20, 4-5 AM (9)
May 20, 5-6 AM (34)
May 20, 6-7 AM (46)
May 20, 7-8 AM (41)
May 20, 8-9 AM (42)
May 20, 9-10 AM (0)
3,949 commits this week
May 13, 2026
-
May 20, 2026
fix validation workflow manual dispatch to work on old PRs (#1197)
Refactor gov/proposals/v0 namespace definition to include the proposal order
Update cardano-cls repository tag
Leios demo: ImmDBServer schedule-driven Leios + schedule generator
Adapt the ImmDBServer tool to drive a Leios demo from a pre-recorded schedule: replay EBs / cert-blocks at slot timestamps and serve them over the LeiosNotify / LeiosFetch mini-protocols introduced in the diffusion chunk. The actual schedule generator lives at 'ouroboros-consensus/app/leios-schedule-gen.hs' (committed with the diffusion chunk for cabal layout reasons). - 'immdb-server' grows --leios-db / --leios-schedule / --initial-slot / --initial-time / --address. - 'Cardano.Tools.ImmDBServer.Diffusion' adds the LeiosSchedule type and a scheduler thread that ticks through schedule entries. - 'Cardano.Tools.ImmDBServer.MiniProtocols' grows LeiosNotify / LeiosFetch responders, send/recv tracers, and a slot-delay aware chainSyncServer. Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios resolving + chain inclusion
Plumb a 'ResolveLeiosBlock' typeclass through the block-application
pipeline so a Dijkstra-era block carrying 'SJust LeiosCert' has its
(empty) tx list spliced in from the EB closure in the LeiosDb before
validation. Plumbing only — no chain-selection rule change.
- 'Storage.LedgerDB.Forker' defines 'ResolveLeiosBlock' as a typeclass
with a no-op default, and the 'applyBlock' hook calls
'resolveLeiosBlock leiosDb hdrSt b' before
'tickThen{Apply,Reapply}'. The forker reads the 'ExtLedgerState' to
extract 'headerState' for the splice (used to look up the previous
EB announcement on the chain-dep state).
- 'Storage.LedgerDB.V2' threads 'LeiosDbConnection' alongside the
existing args so the new 'applyBlock' signature reaches the V2
pipeline.
- Explicit no-op instances for every block type that doesn't carry
Leios: 'ByronBlock', 'DualBlock', 'ShelleyBlock proto era',
'HardForkBlock xs' (OVERLAPPABLE), 'TestBlockWith ptype', the
storage-test 'TestBlock', the mock 'SimpleBlock''.
- Real-work instance: 'ShelleyBlock (Praos c) DijkstraEra' splices the
EB closure from the previously-announced point (looked up via
'praosStateLeiosAnnouncement' + 'praosStateLastSlot' on the Praos
chain-dep state).
- 'Ouroboros.Consensus.Cardano.Block' routes per-era dispatch to the
appropriate instance.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios voting: LeiosVoteState + leiosVoting thread + threadnet test
Add the voting capability on top of the diffusion layer: an EB becomes eligible for certification once enough peers have voted 'yes' on it (via the 'MsgLeiosVotes' message on the LeiosNotify protocol from the previous chunk). Voting state - 'LeiosVoteState' (new module) — aggregated vote state across all peers, with 'addVote' / 'subscribeVotes' write/read API. - 'NodeKernel.getLeiosVoteState' field plus the 'NodeKernelArgs.leiosVotingKey' / 'NodeKernel.leiosVoting' background thread that subscribes to local 'AcquiredEbTxs' notifications and emits one vote per acquired EB. LeiosNotify wiring - The 'MsgLeiosVotes' server case now calls 'addVote' on each incoming vote (replacing the chunk-2 no-op stub). - The notify server multiplexes EB offers with a 'processVote' loop that drains 'subscribeVotes leiosVoteState' and publishes 'MsgLeiosVotes' to peers. Tests - 'Test.LeiosVoteState' (foundation-level unit tests). - 'Test.ThreadNet.Leios' — end-to-end threadnet driver that asserts cert blocks happen, no vacuous runs, gap > 'minCertificationGap', all nodes converge, and the post-resolve replay matches the live ledger. cabal - Exposes 'LeiosVoteState'; wires 'Test.LeiosVoteState' / 'Test.ThreadNet.Leios' into the test suites. Co-Authored-By: Claude Opus 4.7 <[email protected]>
ResolveLeiosBlock: narrow to chain-dep state
The only non-default instance (Dijkstra-era ShelleyBlock) consumes only the Praos chain-dep state from its HeaderState argument, the tip is never used. Taking the full HeaderState forced the HFC dispatch in Cardano.Block to fabricate a HeaderState with 'headerStateTip = Origin' purely to satisfy the record. The original leios-prototype branch worked around the same smell with a partial toConwayHeaderState projection and an 'error "Must be in Conway"' arm. Narrowing the class to only taking the chain-dep state collapses the HFC instance to a single combined case on (chainDepState, block), using the existing ChainDepStateDijkstra pattern synonym. Also, the Dijkstra-era Shelley instance drops the redundant 'headerStateChainDep' projection on its argument.
Leios diffusion: LeiosNotify + LeiosFetch mini-protocols + Reception
Wire LeiosNotify and LeiosFetch mini-protocols into the node-to-node
diffusion layer, plus the consensus-side adaptation to the network
fork's BearerBytes + arrival-time 'Reception' API.
Mini-protocols (live in consensus, not network)
- LeiosDemoOnlyTestFetch — request/response for EB bodies and the
accompanying tx closures.
- LeiosDemoOnlyTestNotify — server pushes 'MsgLeiosBlockOffer' /
'MsgLeiosBlockTxsOffer' as EBs arrive, plus 'MsgLeiosVotes' which
this chunk handles as a no-op stub (the voting chunk replaces it).
- New 'NodeKernel' fields: 'getLeiosDB', 'getLeiosPeersVars',
'getLeiosOutstanding', 'getLeiosReady'. The 'leiosFetchLogic'
thread (0.5s loop) reads peers' offerings, runs the fetch-decision
iteration and dispatches fetches.
Network wiring
- 'Ouroboros.Consensus.Network.NodeToNode' grows codecs + handlers
for both protocols and threads the LeiosDbConnection through to the
inbound side.
- 'Ouroboros.Consensus.Node' opens the in-memory LeiosDb and passes
the handle + connection to the kernel / NTN / ChainDB layers.
BearerBytes + Reception migration
- All codec entry points drop the 'dataSize :: bytes -> Word'
argument (now a 'BearerBytes' constraint).
- 'recv' returns 'Maybe (Reception a)' carrying per-chunk arrival
times; the threadnet harness wraps reads via 'MkReception
IntMap.empty', the PeerSimulator strips via 'fmap received'.
- 'TraceSendRecv' grows arrival-time on the receive side
('TraceRecvMsg :: Maybe Time -> AnyMessage ps -> ...').
Threadnet harness
- 'MinimalChainDbArgs.mcdbLeiosDbVar' backs the in-memory LeiosDb
with a TVar so the test infrastructure can inspect it.
cabal
- Exposes 'LeiosDemoOnlyTestFetch' / 'LeiosDemoOnlyTestNotify' and
adds network-mux, pretty-simple, typed-protocols:cborg deps.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
Add TopLevelExecSpecRule class; refactor Imp.Core
Add Imp.Dijkstra module
Add Dijkstra SpecTranslate modules
Add ExecSpecRule and Orphan instances
Scale down tests to make test suites run faster
Add subtransactions custom generator
leios: Prettify Shelley applyTick
GITBOOK-273: budget for product research
Transient constraints for windows cross-compilation
Update LSM-trees packages
- blockio-uring -> 0.2.0.0 - blockio -> 0.2.0.0 - lsm-trees -> 1.1.0.0 - QuickCheck -> 2.18.0.0 - quickcheck-state-machine -> 0.10.4 - fs-sim -> 0.5.0.1
feat: add TRPC test command and update unit test workflow
- Added a new test command for TRPC in package.json to facilitate targeted testing of TRPC-related components. - Updated the unit test workflow to correct the test path pattern for transaction builder tests, ensuring accurate test execution. - Removed unused cborUtils.ts file to clean up the test directory and improve maintainability. - Simplified infrastructure tests by removing unnecessary cbor-x decoding tests.
Enable PR number validation in CI
leios: Prettify Shelley applyBlock