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 (81)
May 19, 1-2 PM (71)
May 19, 2-3 PM (41)
May 19, 3-4 PM (51)
May 19, 4-5 PM (15)
May 19, 5-6 PM (20)
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 (37)
May 20, 6-7 AM (47)
May 20, 7-8 AM (53)
May 20, 8-9 AM (50)
May 20, 9-10 AM (16)
May 20, 10-11 AM (41)
May 20, 11-12 PM (28)
May 20, 12-1 PM (50)
May 20, 1-2 PM (92)
May 20, 2-3 PM (20)
May 20, 3-4 PM (326)
May 20, 4-5 PM (23)
May 20, 5-6 PM (23)
May 20, 6-7 PM (17)
May 20, 7-8 PM (23)
May 20, 8-9 PM (15)
May 20, 9-10 PM (5)
May 20, 10-11 PM (34)
May 20, 11-12 AM (16)
May 21, 12-1 AM (14)
May 21, 1-2 AM (8)
May 21, 2-3 AM (10)
May 21, 3-4 AM (7)
May 21, 4-5 AM (4)
May 21, 5-6 AM (26)
May 21, 6-7 AM (14)
May 21, 7-8 AM (22)
May 21, 8-9 AM (31)
May 21, 9-10 AM (42)
May 21, 10-11 AM (28)
May 21, 11-12 PM (0)
4,114 commits this week May 14, 2026 - May 21, 2026
Plutus Release 1.65.0.0 (#1372)
* Added plutus-core-1.65.0.0

From https://github.com/IntersectMBO/plutus at b2db512618df08bd696e8d9c4229effcede01169

* Added plutus-ledger-api-1.65.0.0

From https://github.com/IntersectMBO/plutus at b2db512618df08bd696e8d9c4229effcede01169

* Added plutus-metatheory-1.65.0.0

From https://github.com/IntersectMBO/plutus at b2db512618df08bd696e8d9c4229effcede01169

* Added plutus-tx-1.65.0.0

From https://github.com/IntersectMBO/plutus at b2db512618df08bd696e8d9c4229effcede01169

* Added plutus-tx-plugin-1.65.0.0

From https://github.com/IntersectMBO/plutus at b2db512618df08bd696e8d9c4229effcede01169

---------

Co-authored-by: Yura Lazarev <[email protected]>
Export `inclusiveLowerBound` / `inclusiveUpperBound` from `Interval` modules (#7783)
Add `inclusiveLowerBound` and `inclusiveUpperBound` to the export lists
of `PlutusLedgerApi.V1.Interval` and `PlutusLedgerApi.V1.Data.Interval`,
together with the re-exports from `PlutusLedgerApi.V1`/`V2`/`V3` and
the `PlutusLedgerApi.Data.V1`/`V2`/`V3` counterparts.

These helpers normalise `LowerBound`/`UpperBound` values into an
equivalent inclusive `Extended a`. They are already used internally by
the `Eq`/`Ord` instances and `isEmpty`; making them public lets
validator authors reuse the same closure handling instead of
re-implementing it locally.

Closes #7737.
net-rs, shared-consensus: chain-tree EB indicators and tx counts
Surface per-block Leios involvement in the net-ui chain-tree view:
a gold ★ on the top-left when the block's header has certified_eb
(carries an EB vote certificate for the previous RB), a gold + on
the top-right when it has announced_eb (introduces a new endorser
block), and a tx-count line under the hash showing the Praos body
count plus the announced EB's manifest size when applicable.

ChainNode gains tx_count, announced_eb_hash, and certified_eb fields;
ChainTreeEntry exposes the bool projection plus eb_tx_count resolved
at snapshot time via an injected closure (so shared-consensus stays
format-agnostic and the Leios manifest lookup happens in net-node's
Consensus facade against LeiosState::eb_tx_hashes).

Adds BlockBody::praos_tx_count in net-core to walk the Cardano CDDL
block body and read the tx_bodies array length without decoding the
bodies. The wrapper in net-node computes this once at receive /
self-produce time and threads it through to chain_tree.insert.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
net-node: emit tx_bodies and tx_witnesses as CBOR arrays per Cardano CDDL
The fake block builder was encoding tx_bodies as `{idx => bytes}` and
tx_witnesses as an empty map, but the Cardano CDDL specifies both as
arrays (`[* transaction_body]` / `[* transaction_witness_set]`). The
map shape probably came from confusing tx_bodies with auxiliary_data_set,
which is the only field that's actually keyed by tx_index. The
mismatch wasn't externally observable until something tried to parse
tx_bodies as an array and silently got `None`.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>