Summary
cardano-testnet's default test era is currently Conway. Now that Dijkstra support is wired in, we should migrate the default to Dijkstra so general-purpose tests exercise the latest era and we can flush out any code paths that fall through to error on a Dijkstra value.
Current state
The canonical default lives in cardano-testnet/src/Testnet/Start/Types.hs:229:
cardanoNodeEra = AnyShelleyBasedEra ShelleyBasedEraConway
Supporting defaults:
cardano-testnet/src/Testnet/Defaults.hs:184 — defaultEra :: ShelleyBasedEra ConwayEra
cardano-testnet/src/Testnet/Defaults.hs:472 — eraToProtocolVersion (already maps Dijkstra → PV 12)
Dijkstra is already in scope — ShelleyBasedEraDijkstra, dijkstraGenesisDefaults, and TestDijkstraHardForkAtEpoch are referenced throughout, so no cardano-api bump is required.
Tests that hardcode Conway only because it's the default (migration candidates)
Generic tests pinned to Conway:
test/cardano-testnet-test/Cardano/Testnet/Test/FoldEpochState.hs:31
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Query.hs:84
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Transaction.hs:53
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Transaction/RegisterDeregisterStakeAddress.hs:51
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Transaction/BuildEstimate.hs:48
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Plutus/Scripts.hs:56, 206
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Plutus/BuildRaw.hs:61
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Plutus/CostCalculation.hs:64, 223, 338
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/KesPeriodInfo.hs:68
test/cardano-testnet-test/Cardano/Testnet/Test/Cli/LeadershipSchedule.hs:68
Governance tests — also migration candidates
All 14 files under test/cardano-testnet-test/Cardano/Testnet/Test/Gov/ (DReps, committee, treasury, proposals, etc.) currently use ConwayEraOnwardsConway / ShelleyBasedEraConway. Governance is ConwayEraOnwards, not Conway-only — these features exist in Dijkstra too, so the tests should run on the latest era to catch era-specific regressions. The ConwayEraOnwardsConway witness in those files is just "use the earliest era that has this feature"; there's no Conway-specific behavior being asserted.
If any individual gov test genuinely depends on pre-Dijkstra behavior that changed, it should be deliberately era-pinned with a comment explaining why — but that's the exception, not the default.
error calls
Only one notable hit, and it's fine as-is — Dijkstra is Conway-onwards, so it won't fire:
src/Testnet/EpochStateProcessing.hs:41 — error "Governance actions only available in Conway era onwards"
Known gaps
test/.../Test/Node/Shutdown.hs:132 already TODOs that cardano-cli latest genesis create doesn't yet support Dijkstra — Dijkstra genesis is currently written from dijkstraGenesisDefaults directly. Worth tracking for full parity but not a blocker.
- No
genesis.dijkstra.spec.json fixture under cardano-testnet/files/data/, but genesis is generated dynamically so this isn't blocking either.
Proposed approach
- Flip the default in
Testnet/Start/Types.hs:229 to AnyShelleyBasedEra ShelleyBasedEraDijkstra and update Defaults.hs:184 accordingly.
- Run the test suite and chase any failures.
- Migrate gov tests' era witnesses from
*OnwardsConway to *OnwardsDijkstra (or have them follow the default), unless a specific test legitimately needs Conway pinning.
- Fix any
error paths that surface on Dijkstra.
- File a follow-up if the cardano-cli genesis-create gap blocks anything.
Summary
cardano-testnet's default test era is currently Conway. Now that Dijkstra support is wired in, we should migrate the default to Dijkstra so general-purpose tests exercise the latest era and we can flush out any code paths that fall through toerroron a Dijkstra value.Current state
The canonical default lives in
cardano-testnet/src/Testnet/Start/Types.hs:229:Supporting defaults:
cardano-testnet/src/Testnet/Defaults.hs:184—defaultEra :: ShelleyBasedEra ConwayEracardano-testnet/src/Testnet/Defaults.hs:472—eraToProtocolVersion(already maps Dijkstra → PV 12)Dijkstra is already in scope —
ShelleyBasedEraDijkstra,dijkstraGenesisDefaults, andTestDijkstraHardForkAtEpochare referenced throughout, so no cardano-api bump is required.Tests that hardcode Conway only because it's the default (migration candidates)
Generic tests pinned to Conway:
test/cardano-testnet-test/Cardano/Testnet/Test/FoldEpochState.hs:31test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Query.hs:84test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Transaction.hs:53test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Transaction/RegisterDeregisterStakeAddress.hs:51test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Transaction/BuildEstimate.hs:48test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Plutus/Scripts.hs:56, 206test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Plutus/BuildRaw.hs:61test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Plutus/CostCalculation.hs:64, 223, 338test/cardano-testnet-test/Cardano/Testnet/Test/Cli/KesPeriodInfo.hs:68test/cardano-testnet-test/Cardano/Testnet/Test/Cli/LeadershipSchedule.hs:68Governance tests — also migration candidates
All 14 files under
test/cardano-testnet-test/Cardano/Testnet/Test/Gov/(DReps, committee, treasury, proposals, etc.) currently useConwayEraOnwardsConway/ShelleyBasedEraConway. Governance isConwayEraOnwards, not Conway-only — these features exist in Dijkstra too, so the tests should run on the latest era to catch era-specific regressions. TheConwayEraOnwardsConwaywitness in those files is just "use the earliest era that has this feature"; there's no Conway-specific behavior being asserted.If any individual gov test genuinely depends on pre-Dijkstra behavior that changed, it should be deliberately era-pinned with a comment explaining why — but that's the exception, not the default.
errorcallsOnly one notable hit, and it's fine as-is — Dijkstra is Conway-onwards, so it won't fire:
src/Testnet/EpochStateProcessing.hs:41—error "Governance actions only available in Conway era onwards"Known gaps
test/.../Test/Node/Shutdown.hs:132already TODOs thatcardano-cli latest genesis createdoesn't yet support Dijkstra — Dijkstra genesis is currently written fromdijkstraGenesisDefaultsdirectly. Worth tracking for full parity but not a blocker.genesis.dijkstra.spec.jsonfixture undercardano-testnet/files/data/, but genesis is generated dynamically so this isn't blocking either.Proposed approach
Testnet/Start/Types.hs:229toAnyShelleyBasedEra ShelleyBasedEraDijkstraand updateDefaults.hs:184accordingly.*OnwardsConwayto*OnwardsDijkstra(or have them follow the default), unless a specific test legitimately needs Conway pinning.errorpaths that surface on Dijkstra.