May 12, 6-7 AM (17)
May 12, 7-8 AM (25)
May 12, 8-9 AM (26)
May 12, 9-10 AM (35)
May 12, 10-11 AM (82)
May 12, 11-12 PM (98)
May 12, 12-1 PM (38)
May 12, 1-2 PM (69)
May 12, 2-3 PM (54)
May 12, 3-4 PM (41)
May 12, 4-5 PM (57)
May 12, 5-6 PM (40)
May 12, 6-7 PM (24)
May 12, 7-8 PM (24)
May 12, 8-9 PM (18)
May 12, 9-10 PM (8)
May 12, 10-11 PM (40)
May 12, 11-12 AM (19)
May 13, 12-1 AM (10)
May 13, 1-2 AM (2)
May 13, 2-3 AM (5)
May 13, 3-4 AM (2)
May 13, 4-5 AM (5)
May 13, 5-6 AM (29)
May 13, 6-7 AM (52)
May 13, 7-8 AM (43)
May 13, 8-9 AM (44)
May 13, 9-10 AM (21)
May 13, 10-11 AM (22)
May 13, 11-12 PM (47)
May 13, 12-1 PM (25)
May 13, 1-2 PM (44)
May 13, 2-3 PM (57)
May 13, 3-4 PM (42)
May 13, 4-5 PM (33)
May 13, 5-6 PM (30)
May 13, 6-7 PM (51)
May 13, 7-8 PM (33)
May 13, 8-9 PM (9)
May 13, 9-10 PM (24)
May 13, 10-11 PM (30)
May 13, 11-12 AM (11)
May 14, 12-1 AM (18)
May 14, 1-2 AM (3)
May 14, 2-3 AM (4)
May 14, 3-4 AM (21)
May 14, 4-5 AM (11)
May 14, 5-6 AM (18)
May 14, 6-7 AM (18)
May 14, 7-8 AM (47)
May 14, 8-9 AM (53)
May 14, 9-10 AM (35)
May 14, 10-11 AM (20)
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 (32)
May 18, 9-10 AM (41)
May 18, 10-11 AM (41)
May 18, 11-12 PM (27)
May 18, 12-1 PM (134)
May 18, 1-2 PM (33)
May 18, 2-3 PM (83)
May 18, 3-4 PM (33)
May 18, 4-5 PM (44)
May 18, 5-6 PM (21)
May 18, 6-7 PM (16)
May 18, 7-8 PM (10)
May 18, 8-9 PM (22)
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 (0)
3,995 commits this week May 12, 2026 - May 19, 2026
fix: reorder transaction deserialization and fix mempool UTxO era
utxoFromMempool initialized with UTxOInBabbageEra, causing all
evaluations to hit the Babbage rejection branch even for Conway
transactions. Changed to UTxOInConwayEra.

Reorder deserialiseCBOR to try Conway and Dijkstra before Babbage.
Conway transactions can successfully deserialize as Babbage (the
Babbage decoder accepts Conway-era CBOR), wrapping them as
GenTxBabbage and rejecting them as "unsupported era". Older eras
kept as fallbacks for specific diagnostics.

Use eraProtVerHigh in transaction deserialization to accept
transactions from any protocol version within an era (e.g.
Conway PV9 through PV11).

Co-Authored-By: Claude <[email protected]>
update: enable Dijkstra ApplyTxError and GenTx generators
Schema fixes for Dijkstra-era validation:
- Add SubmitTransactionFailure entries: 3169 (PointerAddressInCollateralReturn),
  3170 (SpendingOutputFromSubTransaction)
- Add ScriptPurpose<Guard> and Clause<Guard> to cardano.json
- Fix AccountBalanceInterval: use anyOf instead of oneOf
- Make ProposedProtocolParameters minFeeReferenceScripts sub-fields optional

Enable Dijkstra ApplyTxError generator and Dijkstra GenTx generator.
GenTx uses genDijkstraShelleyTx which strips sub-transactions to
avoid MemoBytes CBOR round-trip failures in mock protocol peers.

Dijkstra block generation remains excluded: randomly generated blocks
fail CBOR round-tripping in the ChainSync mock peer, likely due to
block header/body hash inconsistency. The consensus codec itself
supports Dijkstra's 5-segment block body.

Add test dependencies: cardano-data, cardano-ledger-dijkstra:testlib.
Import Dijkstra Arbitrary instances.

Co-Authored-By: Claude <[email protected]>
update: add Dijkstra generators and guard purpose to schema
- Add GenTxIdDijkstra to genGenTxId
- Add Dijkstra context error to genContextError
- Add Dijkstra-era MissingScript to genScriptFailure
- Add "guard" to script purpose enum in cardano.json
- Remove stale FIXME comment in Generators.hs
- Regenerate EvaluateTransactionResponse test vectors

Co-Authored-By: Claude <[email protected]>
update: add Dijkstra-specific fields to cardano.json schema
Add schema definitions for new Dijkstra era fields:
- Transaction: requiredExtraGuards, directDeposits,
  accountBalanceIntervals, subTransactions, requiredTopLevelGuards
- ProtocolParameters: maxReferenceScriptsSizePerBlock
- New types: AccountBalanceInterval (with oneOf for bound variants),
  TopLevelGuard, SubTransaction

New JSON field names introduced across all Dijkstra commits:

  Transaction body (TopTx):
  - requiredExtraGuards: script hash guards (new Dijkstra field)
  - directDeposits: account address to coin map
  - accountBalanceIntervals: list of interval constraints per account
  - subTransactions: nested sub-transactions
  - fee: moved to TopTx-only (SubTx has no fee)

  Transaction body (SubTx):
  - requiredTopLevelGuards: guard credentials with optional datums

  AccountBalanceInterval fields:
  - greaterThanOrEqualTo: inclusive lower bound (coin)
  - strictlyLessThan: exclusive upper bound (coin)

  TopLevelGuard fields:
  - credential: guard credential (key hash or script hash)
  - datum: optional inline datum

  ProtocolParameters:
  - maxReferenceScriptsSizePerBlock: new Dijkstra param

  Script purpose enum:
  - "guard": new Dijkstra script purpose

  Error codes:
  - 3169: PointerAddressInCollateralReturn
  - 3170: SpendingOutputFromSubTransaction

Co-Authored-By: Claude <[email protected]>
fix: nest ref-script params in minFeeReferenceScripts for all cases
Both full PParams and PParamsUpdate nest range and multiplier inside
minFeeReferenceScripts to preserve Conway's API shape. For full
PParams, all three sub-fields are always present. For updates, only
the sub-fields being updated are included, and the key is omitted
entirely when none of the three are updated.

Co-Authored-By: Claude <[email protected]>
fix: restore NodeToClientVersion gating in TxMonitor mempool lookup
Gate Dijkstra behind nodeToClientV > V_23 since V_23 is the latest
NodeToClientVersion in ouroboros-consensus 3.0.1.0 and is negotiated
by all networks with node 11.0.1.

On Dijkstra networks (future V_24+), Dijkstra is tried first. On
Conway networks, Conway is tried first. Each list is ordered from
most probable era to least probable.

Verified on preview and preprod that GenTxIdDijkstra does not crash
the node (returns false, loop continues), so this is a performance
optimization to avoid unnecessary round-trips on non-Dijkstra
networks.

Co-Authored-By: Claude <[email protected]>
v2 shell: always run cabal-project-local-sync, even with no defaults
`haskell-nix-cabal-project-local-sync` was previously included in
the shell's `nativeBuildInputs` and shellHook only when the
project's effective `cabalProjectLocal` had non-empty content.
For targets where none of the platform mkIfs fire and the user
hasn't set anything (e.g. ghcjs), the script was missing from
PATH — so any test that called it directly errored with
`command not found`, and the test's `import:
cabal.project.<targetPrefix>local` then failed because the file
didn't exist either.

Always include the script and always run the shellHook.  When
the project's `cabalProjectLocal` is empty, the script writes an
empty `cabal.project.<targetPrefix>local`, which cabal imports
harmlessly (no-op).  Removes the empty-content gate, so the
shape is the same across all targets.

Verified the ghcjs cabal-sublib-shell test now passes
(`aarch64-darwin.unstable.ghc9141.ghcjs.tests.cabal-sublib-shell.run`)
and the existing native/musl64/wasi32 paths are unchanged.
dummy-ghc: report armv7a as armv7 / ArchARM ARMv7
Real `armv7a-unknown-linux-androideabi-ghc-9.14.1` reports:

  ,("Target platform","armv7-unknown-linux")
  ,("target arch","ArchARM ARMv7 [VFPv3,NEON] SOFTFP")
  ,("target platform string","armv7-unknown-linux")

while dummy-ghc was emitting `armv7a-unknown-linux` / `ArchAArch32`,
diverging the dummy and real `--info` outputs and failing
`x86_64-linux.unstable.ghc9141.armv7a-android-prebuilt.tests.dummy-ghc-info`.

Two normalisations:

* `platformString`: map `cpu.name == "armv7a"` → `armv7`, mirroring
  the existing `i686 → i386` map.

* `target arch`: emit `ArchARM ARMv7 [VFPv3,NEON] SOFTFP` for
  `cpu.name == "armv7a"`, before the generic `isAarch32 →
  ArchAArch32` fallback.

Verified that the dummy-ghc-info test passes on
`armv7a-android-prebuilt` and is unchanged on aarch64-multiplatform,
aarch64-multiplatform-musl, aarch64-android-prebuilt, musl64,
ucrt64, and wasi32.
chore(deps): Bump andrewslotin/go-proxy-pull-action from 1.4.0 to 1.5.0
Bumps [andrewslotin/go-proxy-pull-action](https://github.com/andrewslotin/go-proxy-pull-action) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/andrewslotin/go-proxy-pull-action/releases)
- [Commits](https://github.com/andrewslotin/go-proxy-pull-action/compare/e5aea3b8b3478fc5b76befda4390513868ed2dc8...00af8a5a49c844d6dde0bbbc116b72d8fd7ae97c)

---
updated-dependencies:
- dependency-name: andrewslotin/go-proxy-pull-action
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
scripts: add build-failing-from-eval.sh
Takes a Hydra eval ID (e.g. 1542) or full URL, curls the eval
page's `?full=1` view, extracts the failing `x86_64-linux.*`
job names from the `Still Failing` / `Newly Failing` tab panes,
and runs `nix build` for each with `--builders ''` so they
exercise the build locally instead of being dispatched to a
remote builder.

Useful for iterating on PR CI runs without waiting for hydra
slot scheduling.
chore(deps): bump andrewslotin/go-proxy-pull-action from 1.4.0 to 1.5.0
Bumps [andrewslotin/go-proxy-pull-action](https://github.com/andrewslotin/go-proxy-pull-action) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/andrewslotin/go-proxy-pull-action/releases)
- [Commits](https://github.com/andrewslotin/go-proxy-pull-action/compare/e5aea3b8b3478fc5b76befda4390513868ed2dc8...00af8a5a49c844d6dde0bbbc116b72d8fd7ae97c)

---
updated-dependencies:
- dependency-name: andrewslotin/go-proxy-pull-action
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump github.com/blinklabs-io/plutigo from 0.1.11 to 0.1.13
Bumps [github.com/blinklabs-io/plutigo](https://github.com/blinklabs-io/plutigo) from 0.1.11 to 0.1.13.
- [Release notes](https://github.com/blinklabs-io/plutigo/releases)
- [Changelog](https://github.com/blinklabs-io/plutigo/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/blinklabs-io/plutigo/compare/v0.1.11...v0.1.13)

---
updated-dependencies:
- dependency-name: github.com/blinklabs-io/plutigo
  dependency-version: 0.1.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump github.com/blinklabs-io/gouroboros
Bumps [github.com/blinklabs-io/gouroboros](https://github.com/blinklabs-io/gouroboros) from 0.168.0 to 0.170.1.
- [Release notes](https://github.com/blinklabs-io/gouroboros/releases)
- [Changelog](https://github.com/blinklabs-io/gouroboros/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/blinklabs-io/gouroboros/compare/v0.168.0...v0.170.1)

---
updated-dependencies:
- dependency-name: github.com/blinklabs-io/gouroboros
  dependency-version: 0.170.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>