Mar 17, 7-8 PM (30)
Mar 17, 8-9 PM (39)
Mar 17, 9-10 PM (30)
Mar 17, 10-11 PM (37)
Mar 17, 11-12 AM (21)
Mar 18, 12-1 AM (1)
Mar 18, 1-2 AM (11)
Mar 18, 2-3 AM (9)
Mar 18, 3-4 AM (0)
Mar 18, 4-5 AM (6)
Mar 18, 5-6 AM (5)
Mar 18, 6-7 AM (3)
Mar 18, 7-8 AM (12)
Mar 18, 8-9 AM (20)
Mar 18, 9-10 AM (80)
Mar 18, 10-11 AM (87)
Mar 18, 11-12 PM (64)
Mar 18, 12-1 PM (72)
Mar 18, 1-2 PM (49)
Mar 18, 2-3 PM (130)
Mar 18, 3-4 PM (44)
Mar 18, 4-5 PM (26)
Mar 18, 5-6 PM (33)
Mar 18, 6-7 PM (43)
Mar 18, 7-8 PM (39)
Mar 18, 8-9 PM (23)
Mar 18, 9-10 PM (32)
Mar 18, 10-11 PM (40)
Mar 18, 11-12 AM (31)
Mar 19, 12-1 AM (30)
Mar 19, 1-2 AM (13)
Mar 19, 2-3 AM (6)
Mar 19, 3-4 AM (4)
Mar 19, 4-5 AM (4)
Mar 19, 5-6 AM (1)
Mar 19, 6-7 AM (29)
Mar 19, 7-8 AM (58)
Mar 19, 8-9 AM (118)
Mar 19, 9-10 AM (73)
Mar 19, 10-11 AM (199)
Mar 19, 11-12 PM (54)
Mar 19, 12-1 PM (61)
Mar 19, 1-2 PM (48)
Mar 19, 2-3 PM (76)
Mar 19, 3-4 PM (138)
Mar 19, 4-5 PM (29)
Mar 19, 5-6 PM (19)
Mar 19, 6-7 PM (31)
Mar 19, 7-8 PM (19)
Mar 19, 8-9 PM (36)
Mar 19, 9-10 PM (13)
Mar 19, 10-11 PM (41)
Mar 19, 11-12 AM (18)
Mar 20, 12-1 AM (4)
Mar 20, 1-2 AM (4)
Mar 20, 2-3 AM (8)
Mar 20, 3-4 AM (9)
Mar 20, 4-5 AM (10)
Mar 20, 5-6 AM (4)
Mar 20, 6-7 AM (51)
Mar 20, 7-8 AM (27)
Mar 20, 8-9 AM (29)
Mar 20, 9-10 AM (38)
Mar 20, 10-11 AM (33)
Mar 20, 11-12 PM (22)
Mar 20, 12-1 PM (33)
Mar 20, 1-2 PM (91)
Mar 20, 2-3 PM (19)
Mar 20, 3-4 PM (52)
Mar 20, 4-5 PM (24)
Mar 20, 5-6 PM (20)
Mar 20, 6-7 PM (14)
Mar 20, 7-8 PM (15)
Mar 20, 8-9 PM (15)
Mar 20, 9-10 PM (16)
Mar 20, 10-11 PM (22)
Mar 20, 11-12 AM (18)
Mar 21, 12-1 AM (8)
Mar 21, 1-2 AM (2)
Mar 21, 2-3 AM (5)
Mar 21, 3-4 AM (2)
Mar 21, 4-5 AM (1)
Mar 21, 5-6 AM (2)
Mar 21, 6-7 AM (6)
Mar 21, 7-8 AM (3)
Mar 21, 8-9 AM (9)
Mar 21, 9-10 AM (7)
Mar 21, 10-11 AM (5)
Mar 21, 11-12 PM (4)
Mar 21, 12-1 PM (3)
Mar 21, 1-2 PM (8)
Mar 21, 2-3 PM (3)
Mar 21, 3-4 PM (9)
Mar 21, 4-5 PM (7)
Mar 21, 5-6 PM (12)
Mar 21, 6-7 PM (12)
Mar 21, 7-8 PM (2)
Mar 21, 8-9 PM (1)
Mar 21, 9-10 PM (5)
Mar 21, 10-11 PM (24)
Mar 21, 11-12 AM (21)
Mar 22, 12-1 AM (0)
Mar 22, 1-2 AM (6)
Mar 22, 2-3 AM (5)
Mar 22, 3-4 AM (0)
Mar 22, 4-5 AM (1)
Mar 22, 5-6 AM (6)
Mar 22, 6-7 AM (6)
Mar 22, 7-8 AM (1)
Mar 22, 8-9 AM (1)
Mar 22, 9-10 AM (2)
Mar 22, 10-11 AM (3)
Mar 22, 11-12 PM (5)
Mar 22, 12-1 PM (1)
Mar 22, 1-2 PM (1)
Mar 22, 2-3 PM (2)
Mar 22, 3-4 PM (6)
Mar 22, 4-5 PM (6)
Mar 22, 5-6 PM (17)
Mar 22, 6-7 PM (32)
Mar 22, 7-8 PM (48)
Mar 22, 8-9 PM (7)
Mar 22, 9-10 PM (1)
Mar 22, 10-11 PM (21)
Mar 22, 11-12 AM (23)
Mar 23, 12-1 AM (5)
Mar 23, 1-2 AM (4)
Mar 23, 2-3 AM (9)
Mar 23, 3-4 AM (7)
Mar 23, 4-5 AM (2)
Mar 23, 5-6 AM (4)
Mar 23, 6-7 AM (1)
Mar 23, 7-8 AM (7)
Mar 23, 8-9 AM (33)
Mar 23, 9-10 AM (36)
Mar 23, 10-11 AM (17)
Mar 23, 11-12 PM (97)
Mar 23, 12-1 PM (62)
Mar 23, 1-2 PM (53)
Mar 23, 2-3 PM (73)
Mar 23, 3-4 PM (67)
Mar 23, 4-5 PM (86)
Mar 23, 5-6 PM (65)
Mar 23, 6-7 PM (21)
Mar 23, 7-8 PM (18)
Mar 23, 8-9 PM (16)
Mar 23, 9-10 PM (16)
Mar 23, 10-11 PM (35)
Mar 23, 11-12 AM (31)
Mar 24, 12-1 AM (1)
Mar 24, 1-2 AM (3)
Mar 24, 2-3 AM (14)
Mar 24, 3-4 AM (4)
Mar 24, 4-5 AM (3)
Mar 24, 5-6 AM (4)
Mar 24, 6-7 AM (3)
Mar 24, 7-8 AM (102)
Mar 24, 8-9 AM (40)
Mar 24, 9-10 AM (30)
Mar 24, 10-11 AM (167)
Mar 24, 11-12 PM (26)
Mar 24, 12-1 PM (42)
Mar 24, 1-2 PM (129)
Mar 24, 2-3 PM (12)
Mar 24, 3-4 PM (40)
Mar 24, 4-5 PM (46)
Mar 24, 5-6 PM (99)
Mar 24, 6-7 PM (8)
Mar 24, 7-8 PM (0)
4,610 commits this week Mar 17, 2026 - Mar 24, 2026
Reify and port genesis tests into new `TestSuite` data structure
The new `ConformanceTest` record contains fields for all data formerly used
to run a test via `forAllGenesisTest` helper, plus other fields that pertain
to its evaluation as a test property on a`TestTree`.
A value of this type is defined for each point-schedule/genesis test.

All such `ConformanceTest`s are arranged in a `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 harness
(see https://github.com/tweag/cardano-conformance-testing-of-consensus).
This data structure is designed to optimize single test lookups,
while retaining the necessary structure to be compiled back to a `TestTree`,
so that the introduced changes preserve the semantics of the
`ouroboros-consensus-diffusion:test:consensus-test` test suite.

To accomplish this, a new 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 such key
type by e.g. introducing a new data constructor. These `key` types are aggregated
into higher level key types to reify the nested grouping of the original
tasty `TestTree`s. It is by combining `mkTestSuite` and `group` that a higher
level `TestSuite` can be defined. The `SmallKey key` constraint is needed for
their exhaustive construction, via `newTestSuite` and `mkTestSuite`; as
implemented, a `TestSuite` is a total map.

Co-authored-by: Sandy Maguire <[email protected]>
Remove `NoThunks` instances for predicate failures and `ContextError` types
`NoThunks` instances are used for memory leak detection during development,
but predicate failures should never be retained in the ledger state - they
are only used for validation results. Removing these instances reduces
code maintenance burden and instance derivation overhead.

This change removes `NoThunks` instances from:

- All predicate failure types across Shelley, Allegra, Alonzo, Babbage,
  Conway, and Dijkstra eras
- All `ContextError` types (`AlonzoContextError`, `BabbageContextError`,
  `ConwayContextError`, `DijkstraContextError`)
- The `NoThunks (ContextError era)` constraint from the `EraPlutusContext` class
- The `NoThunks` deriving instance for `CollectError`