cardano-ledger
cardano-ledger copied to clipboard
Conway conformance track
Tracking issue for Conway conformance
Here we attempt to consolidate coverage for all testable rule transitions, starting from the "leaves" of the transition graph.
For each of the rules below, we should follow these steps:
- Plumbing the test to pass type-checking and compilation, but tests fail - so we mark them pending, by
xprop,xit,xdescribe, etc. - Translate. Make the translations between the types as complete as possible. Related issue: https://github.com/IntersectMBO/cardano-ledger/issues/4254
- Adjust the constrained-generators to precisely capture exact structural and interrelational requirements for inputs, only. Remember that the conformance tests should allow all inputs that do and do not result in
PredicateFailures, so that the implementation and specification agree on when to pass and when to fail, identically. - Review by a team member other than the one who adjusted the generators. The reviewer should pay particular attention to whether the generators are over constrained and also whether the translations are omitting something important.
The "levels" are ordered by their dependencies.
Some more TODO are captured here https://github.com/IntersectMBO/cardano-ledger/issues/3914, but we can use this issue to track them all. Please feel free to edit this issue to keep it up-to-date.
NOTE: In order to work on an item, convert it to an issue and assign it to yourself.
Blocks branch
Level 1
- [ ]
DELEG- [x] Plumbing https://github.com/IntersectMBO/cardano-ledger/issues/4256
- [x] Translate #4465
- [ ] Adjust
- [ ] Review
- [ ]
GOVCERT- [x] Plumbing https://github.com/IntersectMBO/cardano-ledger/issues/4256
- [ ] Translate #4448
- [ ] Adjust
- [ ] Review
- [ ]
POOL- [x] Plumbing https://github.com/IntersectMBO/cardano-ledger/issues/4256
- [x] Translate #4449
- [x] Adjust #4449
- [ ] Review
Level 2
- [ ]
CERT- [x] Plumbing #4458
- [x] Translate #4458
- [ ] Adjust
- [ ] Review
- [ ]
CERTS- [x] Plumbing #4463
- [ ] Translate
- [ ] Adjust
- [ ] Review
- [ ]
GOV- [x] Plumbing https://github.com/IntersectMBO/cardano-ledger/issues/4255
- [x] Translate #4468
- [x] Adjust #4468
- [ ] Review
Level 3
- [ ]
UTXOS- [ ] Plumbing
- [ ] Translate
- [ ] Adjust
- [ ] Review
- [ ]
UTXO(babbage)- [ ] Plumbing https://github.com/IntersectMBO/cardano-ledger/issues/4256
- [ ] Translate
- [ ] Adjust
- [ ] Review
- [ ]
UTXOW(babbage)- [ ] Plumbing
- [ ] Translate
- [ ] Adjust
- [ ] Review
Level 4
- [ ]
LEDGERhttps://github.com/IntersectMBO/cardano-ledger/issues/4380- [ ] Plumbing
- [ ] Translate
- [ ] Adjust
- [ ] Review
Ticks branch
~~Level 1~~
- [ ] ~~
ENACT~~- [ ] ~~Plumbing~~
- [ ] ~~Translate~~
- [ ] ~~Adjust~~
- [ ] ~~Review~~
- [ ] ~~
POOLREAP(shelley)~~- [ ] ~~Plumbing~~
- [ ] ~~Translate~~
- [ ] ~~Adjust~~
- [ ] ~~Review~~
- [ ] ~~
SNAP(shelley)~~- [ ] ~~Plumbing~~
- [ ] ~~Translate~~
- [ ] ~~Adjust~~
- [ ] ~~qReview~~
Level 2
- [ ]
RATIFY- [x] Plumbing https://github.com/IntersectMBO/cardano-ledger/issues/4256
- [x] Translate #4434
- [ ] Adjust
- [ ] Review
Level 3
- [ ]
EPOCH#4381- [x] Plumbing #4425
- [ ] Translate
- [ ] Adjust
- [ ] Review
Level 4
- [ ]
NEWEPOCHhttps://github.com/IntersectMBO/cardano-ledger/issues/4379- [x] #4435
- [ ] Translate
- [ ] Adjust
- [ ] Review
How-to
Everything under src/Ledger/Foreign/ is important, it pays to be
familiar with it, as all the intermediate data-types and rule-runners
are defined there. The translations import the common data types qualified
under an `F` for Foreign.
AGDA
-------------- conformsToImpl: read and understand -----------------------------
HASKELL
In each of our haskell modules, mostly,
we import
from cardano-ledger-executable-spec
- module `Lib` qualified under the name `Agda`
- This gives us the intermediate/common data-types that we need to
translate our Haskell types to
from constrained-generators
- module `Constrained` to use the constrained generators framework
- This is just to generate the values to run the tests
from cardano-ledger-conformance
- module `Test.Cardano.Ledger.Conformance` for the classes we need to
make instances for
- class ExecSpecRule
- Implement everything you need by understanding the data
dependencies between the env, state and signal for a given rule
- class SpecTranslate
- Implement the translations from Haskell data types to
Agda/intermediate/common data-types
- These classes form the test framework that we should write our
conformance tests using
from cardano-ledger-test
- module `Test.Cardano.Ledger.Constrained.Conway`
- to get the constrained generators already written by
@Max for most of the rules