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 (39)
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 (42)
Jun 12, 9-10 AM (23)
Jun 12, 10-11 AM (30)
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 (4)
Jun 15, 6-7 AM (6)
Jun 15, 7-8 AM (41)
Jun 15, 8-9 AM (26)
Jun 15, 9-10 AM (11)
Jun 15, 10-11 AM (34)
Jun 15, 11-12 PM (25)
Jun 15, 12-1 PM (40)
Jun 15, 1-2 PM (26)
Jun 15, 2-3 PM (21)
Jun 15, 3-4 PM (24)
Jun 15, 4-5 PM (21)
Jun 15, 5-6 PM (13)
Jun 15, 6-7 PM (13)
Jun 15, 7-8 PM (7)
Jun 15, 8-9 PM (26)
Jun 15, 9-10 PM (20)
Jun 15, 10-11 PM (22)
Jun 15, 11-12 AM (39)
Jun 16, 12-1 AM (11)
Jun 16, 1-2 AM (5)
Jun 16, 2-3 AM (1)
Jun 16, 3-4 AM (9)
Jun 16, 4-5 AM (6)
Jun 16, 5-6 AM (1)
Jun 16, 6-7 AM (16)
Jun 16, 7-8 AM (81)
Jun 16, 8-9 AM (18)
Jun 16, 9-10 AM (28)
Jun 16, 10-11 AM (22)
Jun 16, 11-12 PM (31)
Jun 16, 12-1 PM (37)
Jun 16, 1-2 PM (49)
Jun 16, 2-3 PM (34)
Jun 16, 3-4 PM (28)
Jun 16, 4-5 PM (37)
Jun 16, 5-6 PM (17)
Jun 16, 6-7 PM (26)
Jun 16, 7-8 PM (9)
Jun 16, 8-9 PM (11)
Jun 16, 9-10 PM (4)
Jun 16, 10-11 PM (31)
Jun 16, 11-12 AM (9)
Jun 17, 12-1 AM (8)
Jun 17, 1-2 AM (8)
Jun 17, 2-3 AM (11)
Jun 17, 3-4 AM (4)
Jun 17, 4-5 AM (1)
Jun 17, 5-6 AM (6)
Jun 17, 6-7 AM (99)
Jun 17, 7-8 AM (33)
Jun 17, 8-9 AM (22)
Jun 17, 9-10 AM (56)
Jun 17, 10-11 AM (18)
Jun 17, 11-12 PM (19)
Jun 17, 12-1 PM (56)
Jun 17, 1-2 PM (28)
Jun 17, 2-3 PM (37)
Jun 17, 3-4 PM (26)
Jun 17, 4-5 PM (19)
Jun 17, 5-6 PM (16)
Jun 17, 6-7 PM (10)
Jun 17, 7-8 PM (13)
Jun 17, 8-9 PM (12)
Jun 17, 9-10 PM (37)
Jun 17, 10-11 PM (29)
Jun 17, 11-12 AM (14)
Jun 18, 12-1 AM (12)
Jun 18, 1-2 AM (8)
Jun 18, 2-3 AM (5)
Jun 18, 3-4 AM (11)
Jun 18, 4-5 AM (11)
Jun 18, 5-6 AM (11)
Jun 18, 6-7 AM (9)
Jun 18, 7-8 AM (16)
Jun 18, 8-9 AM (24)
2,924 commits this week Jun 11, 2026 - Jun 18, 2026
[UTxO-HD] Port ouroboros-consensus:cardano HFC to the mk-free API
Make the Cardano HFC mk-free: Block.hs (CardanoLedgerState + era pattern
synonyms), CanHardFork (EraTranslation diff/values restructure), QueryHF (NS
projection with an era-typed filter), and protocolInfoCardano genesis, which
now produces the per-era genesis Values via the Nary embedding. The canonical
/serialise machinery is stripped from Cardano.Ledger.

There is deliberately no TxIn/TxOut instance for (HardForkBlock xs): tables
are per-era only. With this, lib:ouroboros-consensus:cardano is green.

TODO @js: CardanoTxOut and its IndexedMemPack codecs are retained only
for the deferred snapshot-converter tool.
[UTxO-HD] Port ouroboros-consensus:cardano Shelley era; add LedgerCallShim
Port the Shelley era (Ledger, Forge, Inspect, Mempool, Query,
PeerSelection, SupportsProtocol, Serialisation, TPraos, ShelleyHFC) to the
mk-free API.

Add Ouroboros.Consensus.Shelley.Ledger.LedgerCallShim, which encapsulates the
empty-UTxO NewEpochState invariant: every stored NES carries no UTxO, and the
block/tick/tx apply wrappers take the UTxO values and the NES separately
(NewEpochStateNoUTxOs). The UTxO-touching cardano-ledger entry points are
fenced behind the shim via .hlint.yaml so they cannot be called directly;
applyTx is the single era-dispatched exception routed through the shim.
[UTxO-HD] Node + MiniProtocol consumers; ProtocolInfo genesis Values
Finish the mk-free sweep for lib:ouroboros-consensus: the Node entry
points (ProtocolInfo, Run) and the MiniProtocol consumers (ChainSync client
+ InFutureCheck, LocalStateQuery server).

Genesis Values now flow through ProtocolInfo: pInfoInitLedgerTables carries
them and injectInitialExtLedgerState returns (state, values). With this,
lib:ouroboros-consensus is fully green.
[UTxO-HD][HFC] HardForkBlock combinator mk-free
Make the HardFork combinator mk-free: the mk-free state functor and
era-translation types, mk-free extendToSlot, and the SingleEraUTxOHDBlock
split. forward is made config-free (IO pipelining deferred). Implement the
HardForkBlock BlockSupportsUTxOHD bodies plus tick/apply, and the NS type
surface in Ledger.hs, deleting the old canonical machinery.

Flip sweep across the combinator: Query, CommonProtocolParams, PeerSelection,
InitStorage, Forging, Mempool, Embed/{Unary,Nary,Binary}, Degenerate and
Serialisation. Embed/Nary returns the per-era genesis values.
[UTxO-HD] Storage: mk-free LedgerDB V2 + EraRangeReader
Make the LedgerTablesHandle contract mk-free and fold the InMemory
backend's value ops into BlockSupportsUTxOHD. Drop mk from Storage's
upstream dependencies and make the LedgerDB V2 (StateRef, LedgerSeq,
Forker, snapshots, InMemory backend) mk-free throughout.

Thread LedgerConfig through duplicateWithDiffs/forkerPush and route range
reads through a dedicated EraRangeReader, surfacing an EraRangeReaderProvider
from the V2 LedgerDB. ChainDB consumers are made mk-free, dropping the
vestigial NoThunks/Bridge and CanUpgradeLedgerTables constraints.
[UTxO-HD] Abstract table surface + mk-free ledger
Introduce the mk-free abstract table surface (BlockSupportsUTxOHD): the
ledger no longer carries a MapKind type parameter. LedgerState becomes a
plain Type, ApplyBlock is pure, and the dual ledger is made mk-free.

Consolidate the table vocabulary into Ledger.Basics, dropping StateKind and
the now-redundant Ledger/Tables.hs subtree (Tables/{Basics,Combinators,Kinds,
MapKind,Utils}). Haddocks describe the current mk-free API; dead readAll and
stale mk-era references are removed.

This is one atomic semantic change: the lib does not build until the whole
mk-free sweep lands.