Mar 31, 7-8 AM (43)
Mar 31, 8-9 AM (47)
Mar 31, 9-10 AM (30)
Mar 31, 10-11 AM (37)
Mar 31, 11-12 PM (29)
Mar 31, 12-1 PM (38)
Mar 31, 1-2 PM (34)
Mar 31, 2-3 PM (52)
Mar 31, 3-4 PM (42)
Mar 31, 4-5 PM (48)
Mar 31, 5-6 PM (42)
Mar 31, 6-7 PM (36)
Mar 31, 7-8 PM (16)
Mar 31, 8-9 PM (13)
Mar 31, 9-10 PM (9)
Mar 31, 10-11 PM (24)
Mar 31, 11-12 AM (15)
Apr 01, 12-1 AM (1)
Apr 01, 1-2 AM (2)
Apr 01, 2-3 AM (8)
Apr 01, 3-4 AM (5)
Apr 01, 4-5 AM (8)
Apr 01, 5-6 AM (10)
Apr 01, 6-7 AM (3)
Apr 01, 7-8 AM (81)
Apr 01, 8-9 AM (41)
Apr 01, 9-10 AM (28)
Apr 01, 10-11 AM (29)
Apr 01, 11-12 PM (34)
Apr 01, 12-1 PM (29)
Apr 01, 1-2 PM (29)
Apr 01, 2-3 PM (41)
Apr 01, 3-4 PM (31)
Apr 01, 4-5 PM (9)
Apr 01, 5-6 PM (11)
Apr 01, 6-7 PM (31)
Apr 01, 7-8 PM (19)
Apr 01, 8-9 PM (9)
Apr 01, 9-10 PM (36)
Apr 01, 10-11 PM (34)
Apr 01, 11-12 AM (14)
Apr 02, 12-1 AM (24)
Apr 02, 1-2 AM (5)
Apr 02, 2-3 AM (10)
Apr 02, 3-4 AM (6)
Apr 02, 4-5 AM (1)
Apr 02, 5-6 AM (7)
Apr 02, 6-7 AM (45)
Apr 02, 7-8 AM (13)
Apr 02, 8-9 AM (44)
Apr 02, 9-10 AM (37)
Apr 02, 10-11 AM (35)
Apr 02, 11-12 PM (38)
Apr 02, 12-1 PM (46)
Apr 02, 1-2 PM (56)
Apr 02, 2-3 PM (45)
Apr 02, 3-4 PM (46)
Apr 02, 4-5 PM (38)
Apr 02, 5-6 PM (34)
Apr 02, 6-7 PM (25)
Apr 02, 7-8 PM (23)
Apr 02, 8-9 PM (31)
Apr 02, 9-10 PM (17)
Apr 02, 10-11 PM (27)
Apr 02, 11-12 AM (47)
Apr 03, 12-1 AM (8)
Apr 03, 1-2 AM (9)
Apr 03, 2-3 AM (13)
Apr 03, 3-4 AM (0)
Apr 03, 4-5 AM (2)
Apr 03, 5-6 AM (6)
Apr 03, 6-7 AM (6)
Apr 03, 7-8 AM (50)
Apr 03, 8-9 AM (35)
Apr 03, 9-10 AM (6)
Apr 03, 10-11 AM (10)
Apr 03, 11-12 PM (14)
Apr 03, 12-1 PM (50)
Apr 03, 1-2 PM (38)
Apr 03, 2-3 PM (60)
Apr 03, 3-4 PM (15)
Apr 03, 4-5 PM (10)
Apr 03, 5-6 PM (5)
Apr 03, 6-7 PM (14)
Apr 03, 7-8 PM (20)
Apr 03, 8-9 PM (6)
Apr 03, 9-10 PM (15)
Apr 03, 10-11 PM (20)
Apr 03, 11-12 AM (17)
Apr 04, 12-1 AM (6)
Apr 04, 1-2 AM (1)
Apr 04, 2-3 AM (4)
Apr 04, 3-4 AM (1)
Apr 04, 4-5 AM (1)
Apr 04, 5-6 AM (5)
Apr 04, 6-7 AM (10)
Apr 04, 7-8 AM (3)
Apr 04, 8-9 AM (3)
Apr 04, 9-10 AM (5)
Apr 04, 10-11 AM (35)
Apr 04, 11-12 PM (9)
Apr 04, 12-1 PM (24)
Apr 04, 1-2 PM (11)
Apr 04, 2-3 PM (8)
Apr 04, 3-4 PM (12)
Apr 04, 4-5 PM (3)
Apr 04, 5-6 PM (9)
Apr 04, 6-7 PM (2)
Apr 04, 7-8 PM (3)
Apr 04, 8-9 PM (5)
Apr 04, 9-10 PM (17)
Apr 04, 10-11 PM (21)
Apr 04, 11-12 AM (23)
Apr 05, 12-1 AM (2)
Apr 05, 1-2 AM (0)
Apr 05, 2-3 AM (2)
Apr 05, 3-4 AM (1)
Apr 05, 4-5 AM (1)
Apr 05, 5-6 AM (9)
Apr 05, 6-7 AM (13)
Apr 05, 7-8 AM (4)
Apr 05, 8-9 AM (1)
Apr 05, 9-10 AM (0)
Apr 05, 10-11 AM (7)
Apr 05, 11-12 PM (7)
Apr 05, 12-1 PM (5)
Apr 05, 1-2 PM (2)
Apr 05, 2-3 PM (3)
Apr 05, 3-4 PM (3)
Apr 05, 4-5 PM (18)
Apr 05, 5-6 PM (3)
Apr 05, 6-7 PM (2)
Apr 05, 7-8 PM (2)
Apr 05, 8-9 PM (0)
Apr 05, 9-10 PM (5)
Apr 05, 10-11 PM (19)
Apr 05, 11-12 AM (18)
Apr 06, 12-1 AM (4)
Apr 06, 1-2 AM (6)
Apr 06, 2-3 AM (12)
Apr 06, 3-4 AM (11)
Apr 06, 4-5 AM (5)
Apr 06, 5-6 AM (7)
Apr 06, 6-7 AM (4)
Apr 06, 7-8 AM (8)
Apr 06, 8-9 AM (24)
Apr 06, 9-10 AM (15)
Apr 06, 10-11 AM (9)
Apr 06, 11-12 PM (2)
Apr 06, 12-1 PM (36)
Apr 06, 1-2 PM (42)
Apr 06, 2-3 PM (22)
Apr 06, 3-4 PM (8)
Apr 06, 4-5 PM (31)
Apr 06, 5-6 PM (18)
Apr 06, 6-7 PM (3)
Apr 06, 7-8 PM (10)
Apr 06, 8-9 PM (6)
Apr 06, 9-10 PM (9)
Apr 06, 10-11 PM (29)
Apr 06, 11-12 AM (16)
Apr 07, 12-1 AM (8)
Apr 07, 1-2 AM (8)
Apr 07, 2-3 AM (3)
Apr 07, 3-4 AM (4)
Apr 07, 4-5 AM (1)
Apr 07, 5-6 AM (16)
Apr 07, 6-7 AM (5)
Apr 07, 7-8 AM (3)
2,936 commits this week Mar 31, 2026 - Apr 07, 2026
[CTC 2] Port genesis tests into new `TestSuite` data structure (#1915)
The new `ConformanceTest` record contains fields for all data formerly
used to run a test via `forAllGenesisTest` helper, plus other fields
that adjust its evaluation as a test property on a`TestTree`. It is
worth noting that a `GenesisTest` is more general than what its name
suggests; it is the type representing the "Node-vs-Environment" or point
schedule tests.

All such `ConformanceTest`s are arranged in `TestSuite`s, a data
structure introduced with the goal of eventually exporting them as part
of a new sublibrary for the [Conformance Testing of
Consensus](https://github.com/tweag/cardano-conformance-testing-of-consensus)
(CTC) harness. This data structure is designed to optimize single test
lookups, while retaining the necessary structure to be compiled back to
a `TestTree`, in such a way that the introduced changes preserve the
semantics of the `ouroboros-consensus:test:consensus-diffusion-test`
test suite. Those, `TestSuite`s lay out an interface between the
internal property test execution and the up-coming CTC harness.

To accomplish this, a new `TestKey` data type is introduced in each
module as a `key` for the locally defined `TestSuite`, such that each
test in the module corresponds to a unique value (nullary constructor)
of this type. This means that including a new test in a `TestSuite`
requires the extension of `TestKey` by e.g. introducing a new data
constructor. These `TestKey` types are aggregated into higher level key
types (sums of other test key unary constructors) to reify the nested
grouping of the original tasty `TestTree`s by combining them using
`mkTestSuite`.

The new `SmallKey` constraint is morally equivalent to
`Universe.Class.Finite` from the `universe-base` package, but includes a
set of measures to prevent *large* finite types from instantiating it.
The reason for this is that its `allKeys` method is used for the
exhaustive construction of `TestSuite`s via `newTestSuite` and
`mkTestSuite`; as implemented, a `TestSuite` is a total map.
Add PerasCertMaxRounds to PerasParams
This commit adds a new PerasCertMaxRounds to the PerasParams record.

This parameter is used to decide if a Peras certificate is still valid
when considering it for inclusion in a block body.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Implement Peras certificate inclusion rules
This commit implements the Peras certficate inclusion rules using the
boolean predicate DSL used for the Peras voting rules. This logic is
used to decide whether a certificate (the latest one seen) needs to be
added to a block body, typically to orchestrate the beginning and end
of a cooldown period.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>