May 09, 8-9 PM (1)
May 09, 9-10 PM (8)
May 09, 10-11 PM (33)
May 09, 11-12 AM (16)
May 10, 12-1 AM (15)
May 10, 1-2 AM (0)
May 10, 2-3 AM (0)
May 10, 3-4 AM (5)
May 10, 4-5 AM (0)
May 10, 5-6 AM (4)
May 10, 6-7 AM (0)
May 10, 7-8 AM (17)
May 10, 8-9 AM (8)
May 10, 9-10 AM (1)
May 10, 10-11 AM (26)
May 10, 11-12 PM (4)
May 10, 12-1 PM (49)
May 10, 1-2 PM (18)
May 10, 2-3 PM (8)
May 10, 3-4 PM (15)
May 10, 4-5 PM (26)
May 10, 5-6 PM (11)
May 10, 6-7 PM (7)
May 10, 7-8 PM (23)
May 10, 8-9 PM (12)
May 10, 9-10 PM (10)
May 10, 10-11 PM (29)
May 10, 11-12 AM (19)
May 11, 12-1 AM (12)
May 11, 1-2 AM (5)
May 11, 2-3 AM (5)
May 11, 3-4 AM (7)
May 11, 4-5 AM (3)
May 11, 5-6 AM (12)
May 11, 6-7 AM (28)
May 11, 7-8 AM (60)
May 11, 8-9 AM (34)
May 11, 9-10 AM (77)
May 11, 10-11 AM (58)
May 11, 11-12 PM (78)
May 11, 12-1 PM (84)
May 11, 1-2 PM (102)
May 11, 2-3 PM (41)
May 11, 3-4 PM (27)
May 11, 4-5 PM (24)
May 11, 5-6 PM (26)
May 11, 6-7 PM (42)
May 11, 7-8 PM (53)
May 11, 8-9 PM (57)
May 11, 9-10 PM (22)
May 11, 10-11 PM (49)
May 11, 11-12 AM (19)
May 12, 12-1 AM (2)
May 12, 1-2 AM (2)
May 12, 2-3 AM (3)
May 12, 3-4 AM (4)
May 12, 4-5 AM (8)
May 12, 5-6 AM (11)
May 12, 6-7 AM (17)
May 12, 7-8 AM (25)
May 12, 8-9 AM (26)
May 12, 9-10 AM (35)
May 12, 10-11 AM (82)
May 12, 11-12 PM (98)
May 12, 12-1 PM (38)
May 12, 1-2 PM (69)
May 12, 2-3 PM (54)
May 12, 3-4 PM (41)
May 12, 4-5 PM (57)
May 12, 5-6 PM (40)
May 12, 6-7 PM (24)
May 12, 7-8 PM (24)
May 12, 8-9 PM (18)
May 12, 9-10 PM (8)
May 12, 10-11 PM (40)
May 12, 11-12 AM (19)
May 13, 12-1 AM (10)
May 13, 1-2 AM (2)
May 13, 2-3 AM (4)
May 13, 3-4 AM (2)
May 13, 4-5 AM (5)
May 13, 5-6 AM (29)
May 13, 6-7 AM (52)
May 13, 7-8 AM (43)
May 13, 8-9 AM (44)
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 (31)
May 13, 8-9 PM (9)
May 13, 9-10 PM (24)
May 13, 10-11 PM (29)
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 (37)
May 14, 6-7 PM (12)
May 14, 7-8 PM (22)
May 14, 8-9 PM (36)
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 (69)
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 (12)
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 (9)
May 16, 4-5 PM (2)
May 16, 5-6 PM (2)
May 16, 6-7 PM (1)
May 16, 7-8 PM (4)
May 16, 8-9 PM (0)
4,370 commits this week May 09, 2026 - May 16, 2026
L1: Add Maybe LeiosCert on DijkstraBody (Dijkstra-only)
Introduce 'Maybe LeiosCert' (mirrored after the existing 'Maybe PerasCert')
as an optional field on the Dijkstra-era 'BlockBody'. Other eras are
unaffected — this is the entire Leios-related ledger change per the
rebase plan's decision #3 (no 'Body'/'BodyInline'/'BodyCertificate' sum,
no early-era touch).

The change spans four pieces, all kept together so the type, codec,
hashing, and lens story land coherent:

- 'LeiosCert' / 'PerasCert' placeholders encode as @encodeListLen 0@
  rather than @encCBOR ()@ — the latter is 'encodeNull' (0xf6), which
  collides with the null-tag of 'encodeNullStrictMaybe' and made
  'SJust LeiosCert' indistinguishable from 'SNothing' on the wire.
  Adds a regression test in 'BaseTypesSpec' covering both certs.
- 'DijkstraBlockBody' carries pre-encoded bytes for body / wits /
  aux-data / is-valid / Leios cert / Peras cert, six slots total
  (numSegComponents = 6). The Leios and Peras cert slots always emit
  a CBOR token (null when absent) so the on-wire layout is fixed.
- Lens setters ('txSeqBlockBodyL', 'leiosCertBlockBodyL',
  'perasCertBlockBodyL') rebuild via the bidirectional
  'DijkstraBlockBody' pattern. The previous setters only updated the
  structural field and silently kept the stale pre-encoded bytes, so
  e.g. setting txs left 'dbbTxsBodyBytes' as the empty list and the
  block on the wire had no transactions even though the in-memory
  rep was correct. Mirrors the Alonzo idiom
  @lens abbTxs (\_ s -> AlonzoBlockBody s)@.
- 'Arbitrary' and 'TreeDiff' instances for the body extended to
  generate / show the new cert slot.

Co-Authored-By: Claude <[email protected]>
Disable experimental packages on the prototype branch
The Leios prototype rebase doesn't need 'cardano-ledger-canonical-state',
'cardano-ledger-conformance', 'cardano-ledger-test', 'plutus-preprocessor',
'ledger-state', or 'cardano-ledger-repl-environment'. They depend on
'cardano-cls', whose source-repository-package isn't trivially compatible
with this base — comment them out so the rebase builds cleanly while we
focus on Leios scope.

Co-Authored-By: Claude <[email protected]>
Leios: add Maybe LeiosCert on DijkstraBody (Dijkstra-only)
Re-authored on top of c175b1b317 (the cardano-ledger commit compatible
with consensus main's CHaP index-state 2026-04-13) to match the older
fat-constructor DijkstraBlockBody shape (pre-memoization refactor).
Equivalent to b6b2feb006 on leios-prototype-remake, which targeted the
post-memoization shape (DijkstraBlockBodyRaw + lensMemoRawType).

Adds:
* `dbbLeiosCert :: StrictMaybe LeiosCert` field and matching
  `dbbLeiosCertBytes :: Maybe BSL.ByteString` byte-cache, mirroring the
  PerasCert pattern in this older shape.
* `LeiosCert` placeholder newtype over ByteString with derived
  EncCBOR/DecCBOR/NoThunks/NFData (the real type lands with the Leios
  voting machinery).
* `leiosCertBlockBodyL` lens method on `DijkstraEraBlockBody`.
* Pattern synonym extended with a third `StrictMaybe LeiosCert` arg;
  body threads the bytes through `hashDijkstraSegWits` (now takes the
  Leios bytes arg too).
* `EncCBORGroup` appends the optional Leios cert bytes after the
  optional Peras cert bytes.
* `DecCBOR` handles three list-length cases: 4 (neither), 5 (Peras
  only, legacy), 6 (Peras + Leios). A Leios-only encoding is not
  expressible without ambiguity at len 5 \-- intentional: Dijkstra-era
  blocks aren't on the wire yet.
* `NoThunks` `AllowThunksIn` list extended with `dbbLeiosCertBytes`.
* Testlib: `Arbitrary LeiosCert` (and `DijkstraBlockBody <*> arbitrary
  <*> arbitrary <*> arbitrary`); `ToExpr LeiosCert` and updated
  `ToExpr (DijkstraBlockBody era)` constraint set.

Only the Dijkstra era is Leios-enabled \-- earlier eras are untouched.

Verified: `cabal build cardano-ledger-dijkstra:lib:cardano-ledger-dijkstra`
and `cabal build cardano-ledger-dijkstra:lib:testlib` both clean.

Co-Authored-By: Claude Opus 4.7 <[email protected]>