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 (35)
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 (57)
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 (17)
Jun 18, 8-9 AM (82)
Jun 18, 9-10 AM (45)
Jun 18, 10-11 AM (51)
Jun 18, 11-12 PM (23)
Jun 18, 12-1 PM (67)
Jun 18, 1-2 PM (12)
Jun 18, 2-3 PM (51)
Jun 18, 3-4 PM (44)
Jun 18, 4-5 PM (42)
3,046 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] 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.
cardano-config: derive JSON Schemas from the codecs
Add Cardano.Configuration.Schema, exposing a JSON Schema (as an aeson Value) for each configuration component, generated from the autodocodec codecs via jsonSchemaViaCodec. Because they share the codec with the parsers, the schemas cannot drift: they record required vs optional keys, descriptions, and the parse-time defaults. Tracing is excluded, as it is resolved by hermod whose schema lives in trace-dispatcher.
cardano-config: port Consensus, Network, Protocol and Testing to autodocodec
Express each component as a HasCodec instance and derive FromJSON/ToJSON via Autodocodec, replacing the hand-written parsers. Consensus reads the Genesis flags from LowLevelGenesisOptions in GenesisMode; Network covers all peer/diffusion/tx-submission/RPC fields; Protocol builds the per-era genesis NP and Byron/checkpoints from object-codec fragments, reusing the aeson instances for hashes and RequiresNetworkMagic. Drop the now-unused .:= / RelativeFile helpers from Basics and add a shared DiffTime codec.
cardano-config: port Storage to autodocodec with the predictable-snapshots model
Port the storage/LedgerDB configuration to autodocodec codecs, and adopt the snapshot model the node is converging on (f-f/prepare-11.1 combined with geo2a/predictable-snapshots): LMDB is gone (backend is V2InMemory or V2LSM), and the snapshot policy lives under a Snapshots key that is either a named preset ("Mithril") or an object of options (SnapshotInterval in slots, SlotOffset, RateLimit, MinDelay/MaxDelay with MinDelay <= MaxDelay, NumOfDiskSnapshots). Only the modern keys are accepted; the deprecated top-level and in-LedgerDB snapshot keys are not.
cardano-config: begin autodocodec port (Basics, Common, Mempool)
Introduce autodocodec as the single source of truth for parsing and (eventually) JSON Schema generation. Port the leaf types first: a shared DiffTime codec and File/NodeDatabasePaths/Mempool codecs, deriving FromJSON/ToJSON via Autodocodec. The mempool capacity override keeps its byte-count-or-NoOverride form via optionalFieldWithDefaultWith.
cardano-config: track the next node's LedgerDB configuration
The upcoming node version (f-f/prepare-11.1) removes the LMDB backend entirely and replaces the simple NumOfDiskSnapshots/SnapshotInterval pair with a richer snapshot policy. Mirror that here: the backend selector is now V2InMemory or V2LSM, and the LedgerDB section gains SlotOffset and RateLimit alongside a (now slot-based, non-zero) SnapshotInterval and NumOfDiskSnapshots, with the top-level SnapshotInterval/NumOfDiskSnapshots kept as deprecated fallbacks. Dropping LMDB also lets us remove the live-table path-resolution machinery: the LSM path is stored as parsed and defaulted by the consumer, as the node now does.
cardano-config: align configuration keys with the current node
Correct the JSON keys to match what the node actually parses: the peer-selection targets are TargetNumberOf*/SyncTargetNumberOf* (not DeadlineTargetOf*/SyncTargetOf*), the LMDB map size key is MapSize, and the mempool capacity override is MempoolCapacityBytesOverride (accepting a byte count or NoOverride). Also accept the deprecated ForkPolicy alias for ResponderCoreAffinityPolicy.