Apr 28, 4-5 PM (14)
Apr 28, 5-6 PM (47)
Apr 28, 6-7 PM (9)
Apr 28, 7-8 PM (9)
Apr 28, 8-9 PM (14)
Apr 28, 9-10 PM (20)
Apr 28, 10-11 PM (34)
Apr 28, 11-12 AM (29)
Apr 29, 12-1 AM (13)
Apr 29, 1-2 AM (1)
Apr 29, 2-3 AM (1)
Apr 29, 3-4 AM (6)
Apr 29, 4-5 AM (1)
Apr 29, 5-6 AM (4)
Apr 29, 6-7 AM (12)
Apr 29, 7-8 AM (45)
Apr 29, 8-9 AM (75)
Apr 29, 9-10 AM (49)
Apr 29, 10-11 AM (28)
Apr 29, 11-12 PM (51)
Apr 29, 12-1 PM (39)
Apr 29, 1-2 PM (21)
Apr 29, 2-3 PM (67)
Apr 29, 3-4 PM (25)
Apr 29, 4-5 PM (36)
Apr 29, 5-6 PM (16)
Apr 29, 6-7 PM (10)
Apr 29, 7-8 PM (14)
Apr 29, 8-9 PM (13)
Apr 29, 9-10 PM (17)
Apr 29, 10-11 PM (25)
Apr 29, 11-12 AM (29)
Apr 30, 12-1 AM (6)
Apr 30, 1-2 AM (8)
Apr 30, 2-3 AM (1)
Apr 30, 3-4 AM (6)
Apr 30, 4-5 AM (2)
Apr 30, 5-6 AM (8)
Apr 30, 6-7 AM (15)
Apr 30, 7-8 AM (17)
Apr 30, 8-9 AM (100)
Apr 30, 9-10 AM (19)
Apr 30, 10-11 AM (50)
Apr 30, 11-12 PM (120)
Apr 30, 12-1 PM (69)
Apr 30, 1-2 PM (45)
Apr 30, 2-3 PM (117)
Apr 30, 3-4 PM (29)
Apr 30, 4-5 PM (34)
Apr 30, 5-6 PM (9)
Apr 30, 6-7 PM (20)
Apr 30, 7-8 PM (23)
Apr 30, 8-9 PM (28)
Apr 30, 9-10 PM (13)
Apr 30, 10-11 PM (25)
Apr 30, 11-12 AM (15)
May 01, 12-1 AM (18)
May 01, 1-2 AM (15)
May 01, 2-3 AM (6)
May 01, 3-4 AM (7)
May 01, 4-5 AM (3)
May 01, 5-6 AM (5)
May 01, 6-7 AM (8)
May 01, 7-8 AM (15)
May 01, 8-9 AM (24)
May 01, 9-10 AM (17)
May 01, 10-11 AM (16)
May 01, 11-12 PM (17)
May 01, 12-1 PM (39)
May 01, 1-2 PM (32)
May 01, 2-3 PM (19)
May 01, 3-4 PM (16)
May 01, 4-5 PM (25)
May 01, 5-6 PM (11)
May 01, 6-7 PM (20)
May 01, 7-8 PM (22)
May 01, 8-9 PM (65)
May 01, 9-10 PM (15)
May 01, 10-11 PM (40)
May 01, 11-12 AM (61)
May 02, 12-1 AM (6)
May 02, 1-2 AM (11)
May 02, 2-3 AM (5)
May 02, 3-4 AM (8)
May 02, 4-5 AM (6)
May 02, 5-6 AM (2)
May 02, 6-7 AM (2)
May 02, 7-8 AM (14)
May 02, 8-9 AM (7)
May 02, 9-10 AM (8)
May 02, 10-11 AM (11)
May 02, 11-12 PM (7)
May 02, 12-1 PM (7)
May 02, 1-2 PM (3)
May 02, 2-3 PM (14)
May 02, 3-4 PM (9)
May 02, 4-5 PM (27)
May 02, 5-6 PM (9)
May 02, 6-7 PM (29)
May 02, 7-8 PM (11)
May 02, 8-9 PM (15)
May 02, 9-10 PM (1)
May 02, 10-11 PM (20)
May 02, 11-12 AM (18)
May 03, 12-1 AM (8)
May 03, 1-2 AM (1)
May 03, 2-3 AM (4)
May 03, 3-4 AM (7)
May 03, 4-5 AM (1)
May 03, 5-6 AM (4)
May 03, 6-7 AM (32)
May 03, 7-8 AM (5)
May 03, 8-9 AM (1)
May 03, 9-10 AM (3)
May 03, 10-11 AM (10)
May 03, 11-12 PM (11)
May 03, 12-1 PM (16)
May 03, 1-2 PM (11)
May 03, 2-3 PM (2)
May 03, 3-4 PM (2)
May 03, 4-5 PM (5)
May 03, 5-6 PM (0)
May 03, 6-7 PM (5)
May 03, 7-8 PM (6)
May 03, 8-9 PM (8)
May 03, 9-10 PM (15)
May 03, 10-11 PM (23)
May 03, 11-12 AM (17)
May 04, 12-1 AM (4)
May 04, 1-2 AM (4)
May 04, 2-3 AM (10)
May 04, 3-4 AM (9)
May 04, 4-5 AM (5)
May 04, 5-6 AM (6)
May 04, 6-7 AM (6)
May 04, 7-8 AM (28)
May 04, 8-9 AM (24)
May 04, 9-10 AM (43)
May 04, 10-11 AM (36)
May 04, 11-12 PM (61)
May 04, 12-1 PM (34)
May 04, 1-2 PM (47)
May 04, 2-3 PM (64)
May 04, 3-4 PM (33)
May 04, 4-5 PM (64)
May 04, 5-6 PM (49)
May 04, 6-7 PM (13)
May 04, 7-8 PM (31)
May 04, 8-9 PM (45)
May 04, 9-10 PM (9)
May 04, 10-11 PM (54)
May 04, 11-12 AM (24)
May 05, 12-1 AM (4)
May 05, 1-2 AM (5)
May 05, 2-3 AM (5)
May 05, 3-4 AM (11)
May 05, 4-5 AM (11)
May 05, 5-6 AM (50)
May 05, 6-7 AM (16)
May 05, 7-8 AM (36)
May 05, 8-9 AM (81)
May 05, 9-10 AM (68)
May 05, 10-11 AM (34)
May 05, 11-12 PM (71)
May 05, 12-1 PM (115)
May 05, 1-2 PM (118)
May 05, 2-3 PM (62)
May 05, 3-4 PM (90)
May 05, 4-5 PM (16)
4,001 commits this week Apr 28, 2026 - May 05, 2026
Add `Test.Cardano.Ledger.Core.Binary.Golden.goldenExampleEraTxCborSpec` in cardano-ledger-core:testlib and generate the golden example transactions for each era.
`goldenExampleEraTxCborSpec` allows us to generate a `Spec` for
generating a `golden/tx.cbor` golden file out of some `Tx` provided as a
parameter.

Then, for each era's test-suite, we call this function to generate the
golden file using the example transaction we have defined for each era.

We also extended `EraTest` so that we don't need to manually call
`getDataFileName` in order to get the fullpath for each era's cabal
project.

We also create new `Binary.Golden` modules for Mary and Babbage (previously
they reused Allegra's and Alonzo's respectively, which used the wrong era's
example transactions).

Additionally, fix `exampleDijkstraBasedTopTx` to not add PlutusV4 scripts
to `scriptTxWitsL`: PlutusV4 is not included in Dijkstra's
`transaction_witness_set` CDDL, so those scripts were
silently dropped during serialization, causing a roundtrip failure.
Make ZeroTreasuryWithdrawals a permanent check in gov state transation rule
In `conwayGovTransition`, we remove the condition on
`hardforkConwayBootstrapPhase` for checking `ZeroTreasuryWithdrawals`.

We then replayed the preview, preprod and mainnet public chains with
this change which guarentees there were no empty treasury withdrawals
pre-Conway era.
Add `Test.Cardano.Ledger.Core.Binary.Golden.goldenExampleEraTxCborSpec` in cardano-ledger-core:testlib and generate the golden example transactions for each era.
`goldenExampleEraTxCborSpec` allows us to generate a `Spec` for
generating a `golden/tx.cbor` golden file out of some `Tx` provided as a
parameter.

Then, for each era's test-suite, we call this function to generate the
golden file using the example transaction we have defined for each era.

We also extended `EraTest` so that we don't need to manually call
`getDataFileName` in order to get the fullpath for each era's cabal
project.

We also create new `Binary.Golden` modules for Mary and Babbage (previously
they reused Allegra's and Alonzo's respectively, which used the wrong era's
example transactions).

Additionally, fix `exampleDijkstraBasedTopTx` to not add PlutusV4 scripts
to `scriptTxWitsL`: PlutusV4 is not included in Dijkstra's
`transaction_witness_set` CDDL, so those scripts were
silently dropped during serialization, causing a roundtrip failure.
feat(tracer-sidecar): perturbation depth checklist + adversary peer-observability probe (#123)
Two new probes on top of the existing fork-tree state machine.

Layer 3 — depth checklist
  - Tracks maxForkDepth in tracer-sidecar State.
  - Emits one Sometimes assertion per depth threshold from 2 up to
    k - 1: cluster_fork_depth_2_observed, _3_observed, ... _k-1.
  - Reading the report, the highest passed threshold tells you how
    deep the cluster forked under fault injection without drilling
    into per-event details.

Layer 2 — peer-observability probe
  - Adds adversary_observed_as_peer Sometimes assertion.
  - Fires on the first Net.InboundGovernor.* log line whose JSON
    contains the substring "adversary.example", proving the
    adversary's chain-sync sessions reached a producer's peer-
    selection layer at least once during the run (not just the
    kernel TCP backlog).
  - Uses a substring check against the encoded JSON, so we don't
    pin the message schema — the producer's tracer can rename
    fields without breaking the probe.

State now carries maxForkDepth and adversaryObservedAsPeer; both
land alongside the existing forkObserved / forkExceededK flags
inside updateForkTree's refresh function and a new generic
mkSpec rule.