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 (17)
Jun 18, 8-9 AM (74)
Jun 18, 9-10 AM (32)
Jun 18, 10-11 AM (25)
Jun 18, 11-12 PM (1)
2,891 commits this week Jun 11, 2026 - Jun 18, 2026
Move spec back to hydra repo (#2733)
<!-- Describe your change here -->

---

<!-- Consider each and tick it off one way or the other -->
* [x] CHANGELOG updated or not needed
* [x] Documentation updated or not needed
* [x] Haddocks updated or not needed
* [x] No new TODOs introduced or explained herafter

---------

Signed-off-by: Sasha Bogicevic <[email protected]>
Co-authored-by: Noon <[email protected]>
builder: harden darwin-codesign-flush per review
Address review feedback on the signingUtils flush patch:

- Drop `|| true` on the flush so a flush failure aborts the build rather
  than being silently swallowed (signing an unflushed binary risks the very
  invalid signature this works around).
- Assert the sed injection actually took effect (grep -qF) so the build fails
  loudly if upstream sign() drifts, instead of silently reintroducing the bug.

Also move the explanatory comments out of the installPhase shell string so
they are nix comments rather than baked into the generated script.
[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] 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] 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.
[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] 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] 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.