May 24, 8-9 AM (2)
May 24, 9-10 AM (4)
May 24, 10-11 AM (4)
May 24, 11-12 PM (1)
May 24, 12-1 PM (7)
May 24, 1-2 PM (46)
May 24, 2-3 PM (5)
May 24, 3-4 PM (3)
May 24, 4-5 PM (18)
May 24, 5-6 PM (2)
May 24, 6-7 PM (4)
May 24, 7-8 PM (13)
May 24, 8-9 PM (10)
May 24, 9-10 PM (15)
May 24, 10-11 PM (34)
May 24, 11-12 AM (42)
May 25, 12-1 AM (9)
May 25, 1-2 AM (5)
May 25, 2-3 AM (6)
May 25, 3-4 AM (1)
May 25, 4-5 AM (6)
May 25, 5-6 AM (14)
May 25, 6-7 AM (17)
May 25, 7-8 AM (17)
May 25, 8-9 AM (32)
May 25, 9-10 AM (43)
May 25, 10-11 AM (64)
May 25, 11-12 PM (33)
May 25, 12-1 PM (43)
May 25, 1-2 PM (40)
May 25, 2-3 PM (20)
May 25, 3-4 PM (27)
May 25, 4-5 PM (16)
May 25, 5-6 PM (6)
May 25, 6-7 PM (9)
May 25, 7-8 PM (15)
May 25, 8-9 PM (13)
May 25, 9-10 PM (16)
May 25, 10-11 PM (44)
May 25, 11-12 AM (26)
May 26, 12-1 AM (12)
May 26, 1-2 AM (11)
May 26, 2-3 AM (8)
May 26, 3-4 AM (11)
May 26, 4-5 AM (6)
May 26, 5-6 AM (9)
May 26, 6-7 AM (26)
May 26, 7-8 AM (43)
May 26, 8-9 AM (39)
May 26, 9-10 AM (42)
May 26, 10-11 AM (45)
May 26, 11-12 PM (59)
May 26, 12-1 PM (34)
May 26, 1-2 PM (50)
May 26, 2-3 PM (50)
May 26, 3-4 PM (18)
May 26, 4-5 PM (20)
May 26, 5-6 PM (13)
May 26, 6-7 PM (20)
May 26, 7-8 PM (12)
May 26, 8-9 PM (15)
May 26, 9-10 PM (15)
May 26, 10-11 PM (35)
May 26, 11-12 AM (30)
May 27, 12-1 AM (16)
May 27, 1-2 AM (8)
May 27, 2-3 AM (9)
May 27, 3-4 AM (5)
May 27, 4-5 AM (32)
May 27, 5-6 AM (9)
May 27, 6-7 AM (49)
May 27, 7-8 AM (65)
May 27, 8-9 AM (38)
May 27, 9-10 AM (74)
May 27, 10-11 AM (83)
May 27, 11-12 PM (30)
May 27, 12-1 PM (50)
May 27, 1-2 PM (39)
May 27, 2-3 PM (53)
May 27, 3-4 PM (37)
May 27, 4-5 PM (11)
May 27, 5-6 PM (18)
May 27, 6-7 PM (21)
May 27, 7-8 PM (25)
May 27, 8-9 PM (17)
May 27, 9-10 PM (15)
May 27, 10-11 PM (29)
May 27, 11-12 AM (27)
May 28, 12-1 AM (9)
May 28, 1-2 AM (3)
May 28, 2-3 AM (5)
May 28, 3-4 AM (2)
May 28, 4-5 AM (9)
May 28, 5-6 AM (34)
May 28, 6-7 AM (31)
May 28, 7-8 AM (84)
May 28, 8-9 AM (33)
May 28, 9-10 AM (54)
May 28, 10-11 AM (50)
May 28, 11-12 PM (21)
May 28, 12-1 PM (46)
May 28, 1-2 PM (50)
May 28, 2-3 PM (23)
May 28, 3-4 PM (43)
May 28, 4-5 PM (86)
May 28, 5-6 PM (13)
May 28, 6-7 PM (31)
May 28, 7-8 PM (43)
May 28, 8-9 PM (34)
May 28, 9-10 PM (17)
May 28, 10-11 PM (36)
May 28, 11-12 AM (32)
May 29, 12-1 AM (12)
May 29, 1-2 AM (13)
May 29, 2-3 AM (4)
May 29, 3-4 AM (3)
May 29, 4-5 AM (0)
May 29, 5-6 AM (2)
May 29, 6-7 AM (5)
May 29, 7-8 AM (16)
May 29, 8-9 AM (37)
May 29, 9-10 AM (34)
May 29, 10-11 AM (69)
May 29, 11-12 PM (25)
May 29, 12-1 PM (44)
May 29, 1-2 PM (66)
May 29, 2-3 PM (60)
May 29, 3-4 PM (25)
May 29, 4-5 PM (26)
May 29, 5-6 PM (79)
May 29, 6-7 PM (11)
May 29, 7-8 PM (19)
May 29, 8-9 PM (9)
May 29, 9-10 PM (8)
May 29, 10-11 PM (27)
May 29, 11-12 AM (7)
May 30, 12-1 AM (9)
May 30, 1-2 AM (2)
May 30, 2-3 AM (1)
May 30, 3-4 AM (3)
May 30, 4-5 AM (2)
May 30, 5-6 AM (11)
May 30, 6-7 AM (0)
May 30, 7-8 AM (2)
May 30, 8-9 AM (11)
May 30, 9-10 AM (13)
May 30, 10-11 AM (10)
May 30, 11-12 PM (5)
May 30, 12-1 PM (8)
May 30, 1-2 PM (5)
May 30, 2-3 PM (18)
May 30, 3-4 PM (5)
May 30, 4-5 PM (1)
May 30, 5-6 PM (9)
May 30, 6-7 PM (9)
May 30, 7-8 PM (1)
May 30, 8-9 PM (5)
May 30, 9-10 PM (4)
May 30, 10-11 PM (27)
May 30, 11-12 AM (12)
May 31, 12-1 AM (17)
May 31, 1-2 AM (0)
May 31, 2-3 AM (1)
May 31, 3-4 AM (1)
May 31, 4-5 AM (0)
May 31, 5-6 AM (0)
May 31, 6-7 AM (5)
May 31, 7-8 AM (4)
May 31, 8-9 AM (2)
3,707 commits this week May 24, 2026 - May 31, 2026
feat(cage): depend on pure cardano-tx-tools:tx-build sublibrary
cardano-mpfs-cage's library and e2e-test use only the pure
Cardano.Tx.{Build,Balance,Ledger} surface, which now lives in the
cross-target `cardano-tx-tools:tx-build` sub-library. Depend on it
directly instead of the full cardano-tx-tools library, so the cage
package's transaction-building closure is free of the node/IO surface
(http-client-tls, haskeline, chain-follower, …).

Bump the cardano-tx-tools pin to 631f1341 (where tx-build is exposed)
and set -build-node-tools so the solver does not pull tx-tools' node
components (which require ouroboros 3.x, conflicting with this project's
ouroboros-consensus ==1.0.0.0 pin).

Enables the MPFS cage-helper wasm cross-target build
(cardano-mpfs-offchain#258).
chore(nix): update `flake.lock`
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/f2ae5fc' (2026-05-16)
  → 'github:rustsec/advisory-db/eaf48e7' (2026-05-29)
• Updated input 'blockfrost-tests':
    'github:blockfrost/blockfrost-tests/dac734c' (2026-05-15)
  → 'github:blockfrost/blockfrost-tests/72316a2' (2026-05-20)
• Updated input 'crane':
    'github:ipetkov/crane/6d015ea' (2026-05-06)
  → 'github:ipetkov/crane/0532eb1' (2026-05-30)
• Updated input 'fenix':
    'github:nix-community/fenix/ecd6d4f' (2026-05-16)
  → 'github:nix-community/fenix/2118601' (2026-05-30)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/1a68212' (2026-05-15)
  → 'github:rust-lang/rust-analyzer/5ebf65c' (2026-05-29)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d7a713c' (2026-05-14)
  → 'github:nixos/nixpkgs/25f5383' (2026-05-26)
bench | tx-centrifuge: make cooldown configurable, default 0
  Replace the hardcoded 300s worker cooldown with an optional top-level
  "cooldown_seconds" JSON field, defaulting to 0 (no wait). The cooldown
  was added to give multi-node benchmark clusters time to stabilise
  before traffic begins; for single-node ops / iterative testing it's a
  5-minute tax with no benefit. Cluster runs opt back in explicitly.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
bench | tx-centrifuge: shim consumer code for the SRP'd APIs
  Companion to the previous SRP pin: adapts the local consumers to the
  shape of consensus / ouroboros-network on the Leios prototype remake
  forks (which differ from CHAP).

  cardano-node/src/Cardano/Node/Run.hs
    - RunNodeArgs gained 'rnLeiosDb :: LeiosDbHandle m' on the
      leios-remake consensus. Initialise it with 'newLeiosDBInMemory' —
      tx-centrifuge has no need for persistence, the Leios DB is just
      bookkeeping for EB notifications.

  bench/tx-centrifuge/lib/tx-centrifuge/.../Tracing/Orphans.hs
    - 'TraceSendMsg' / 'TraceRecvMsg' (from Ouroboros.Network.Driver.
      Simple / Stateful) gained a mux-bearer-time field. Discard it
      with '_' in the local LogFormatting and MetaTrace orphans; we
      don't surface mux timestamps from these instances.

  bench/tx-centrifuge/lib/tx-centrifuge/.../NodeToNode.hs
    - 'NetN2N.Codecs' gained two ByteString slots for the new Peras
      cert/vote diffusion mini-protocols (PerasCertDiffusion,
      PerasVoteDiffusion). Add the slots to the four module-level
      Codecs signatures and the one in 'connect''s where-clause; we
      pass 'BSL.ByteString' for them like every other slot.

    - 'byteLimitsKeepAlive' dropped its size-measurer argument. Drop
      '(const 0)' from the call site accordingly.

Co-Authored-By: Claude Opus <[email protected]>
bench | tx-centrifuge: pin consensus/ledger/network/api/cli to Leios remake
  Mirrors the SRP set on jl/leios-prototype-remake (the node branch
  carrying the Dijkstra wiring). CHAP's cardano-api 11.0.0.0 ships TODO
  stubs for Dijkstra in caseByronOrShelleyBasedEra, shelleyBasedEra-
  Constraints, etc. — at runtime that surfaces as:

    "TODO Dijkstra: caseByronOrShelleyBasedEra: era not supported"

  ouroboros-consensus / cardano-ledger / ouroboros-network are pinned
  together with cardano-api / cardano-cli because the Leios prototype
  changes are coupled across the set; CHAP versions of any one would
  conflict with sibling APIs (e.g. ouroboros-network needs MkReception
  from network-mux, which isn't on CHAP yet).

  Pin selection trade-offs:

  - cardano-ledger: only libs/cardano-ledger-core + eras/dijkstra/impl
    are pinned. Pinning eras/conway/impl would force cardano-ledger-
    conway 1.22.0.0 (the SRP version), conflicting with cardano-node
    11.0.1's >= 1.22.1.0 requirement which CHAP satisfies.

  - ouroboros-network: all five touched subdirs (ouroboros-network,
    cardano-diffusion, cardano-ping, network-mux, ntp-client) are
    pinned together — ouroboros-network's framework sublibrary uses
    MkReception introduced in network-mux on this branch.

Co-Authored-By: Claude <[email protected]>
N2: wire Leios tracers into cardano-node Tracers / OrphanInstances
The consensus Leios chunks added four fields to the consensus tracer
records that cardano-node assembles in 'Cardano.Tracing.Tracers' (old
style) and 'Cardano.Node.Tracing.Tracers' (new style):

  - Consensus.Tracers'      gained 'leiosKernelTracer' and 'leiosPeerTracer'
  - NodeToNode.Tracers'     gained 'tLeiosNotifyTracer' and 'tLeiosFetchTracer'

This commit populates those fields in both 'mkTracers' code paths so
the record-construction sites are total. All four are wired to
'nullTracer' for now; the corresponding 'Transformable' / 'MetaTrace'
instances and EKG metrics are left as TODO. The new-style tracing
system will accordingly emit a 'TracerConsistencyWarnings' for the
four Leios namespaces declared in the config.yaml — that surfaces the
gap explicitly rather than silently dropping the configuration.

Adds the corresponding selectors to 'TraceSelection' / 'PartialTraceSelection'
and their JSON parsing:

  - traceLeiosKernel          / Consensus.LeiosKernel
  - traceLeiosPeer            / Consensus.LeiosPeer
  - traceLeiosNotifyProtocol  / LeiosNotify.Remote
  - traceLeiosFetchProtocol   / LeiosFetch.Remote

Also drops the duplicate 'LogFormatting (Simple/Stateful.TraceSendRecv)'
and 'MetaTrace (Simple/Stateful.TraceSendRecv)' instances that the
upstream leios-prototype branch carried in
'Cardano/Node/Tracing/Tracers/NodeToClient.hs' — they are now provided
by 'ouroboros-network:framework-tracing' and would collide if redefined
here.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
flake.lock: Update
Flake lock file updates:

• Updated input 'haskell-nix':
    'github:input-output-hk/haskell.nix/131f8cc' (2026-05-16)
  → 'github:input-output-hk/haskell.nix/49e624a' (2026-05-30)
• Updated input 'haskell-nix/hackage':
    'github:input-output-hk/hackage.nix/a482aef' (2026-05-16)
  → 'github:input-output-hk/hackage.nix/c2a320b' (2026-05-30)
• Updated input 'haskell-nix/hackage-for-stackage':
    'github:input-output-hk/hackage.nix/ab71329' (2026-05-16)
  → 'github:input-output-hk/hackage.nix/3f88c69' (2026-05-30)
• Updated input 'haskell-nix/iserv-proxy':
    'github:stable-haskell/iserv-proxy/3f7b281' (2026-04-08)
  → 'github:stable-haskell/iserv-proxy/8cdc446' (2026-05-10)
• Updated input 'haskell-nix/stackage':
    'github:input-output-hk/stackage.nix/c1f217f' (2026-05-16)
  → 'github:input-output-hk/stackage.nix/daaf9d2' (2026-05-30)
flake.lock: Update
Flake lock file updates:

• Updated input 'haskellNix':
    'github:input-output-hk/haskell.nix/cc939d0' (2026-02-23)
  → 'github:input-output-hk/haskell.nix/49e624a' (2026-05-30)
• Removed input 'haskellNix/cabal-32'
• Updated input 'haskellNix/hackage':
    'github:input-output-hk/hackage.nix/06f38c7' (2026-02-23)
  → 'github:input-output-hk/hackage.nix/c2a320b' (2026-05-30)
• Updated input 'haskellNix/hackage-for-stackage':
    'github:input-output-hk/hackage.nix/2d5bbb1' (2026-02-23)
  → 'github:input-output-hk/hackage.nix/3f88c69' (2026-05-30)
• Updated input 'haskellNix/iserv-proxy':
    'github:stable-haskell/iserv-proxy/91ef7ff' (2026-02-04)
  → 'github:stable-haskell/iserv-proxy/8cdc446' (2026-05-10)
• Updated input 'haskellNix/nixpkgs-2511':
    'github:NixOS/nixpkgs/b0924ea' (2025-12-01)
  → 'github:NixOS/nixpkgs/74b8795' (2026-04-09)
• Updated input 'haskellNix/nixpkgs-unstable':
    'github:NixOS/nixpkgs/c1cb7d0' (2025-12-01)
  → 'github:NixOS/nixpkgs/1304392' (2026-04-11)
• Updated input 'haskellNix/stackage':
    'github:input-output-hk/stackage.nix/862226e' (2026-02-23)
  → 'github:input-output-hk/stackage.nix/daaf9d2' (2026-05-30)
• Updated input 'iohk-nix':
    'github:input-output-hk/iohk-nix/a704b93' (2025-11-12)
  → 'github:input-output-hk/iohk-nix/9de0011' (2026-05-05)
• Updated input 'iohk-nix/blst':
    'github:supranational/blst/8c7db7f' (2025-02-12)
  → 'github:supranational/blst/6d960cd' (2025-06-06)