What is wrong
Nine of the thirty action-receipt conformance vectors cannot be regenerated by anything in this repository. gen_rule_coverage_vectors.py records why in its own first paragraph: “The 01-09 fixtures pin a key whose private half is not published, so everything here pins its own deterministic test key.” The generator covers 10-30.
Until #171 they also passed the reproduction check, because that check copied the committed fixtures into its work directory before running the generator, so 01-09 were compared against copies of themselves and agreed every time. #171 empties the directory first and names the nine, with the reason, in NOT_GENERATED.
Spec section or file
examples/action-receipts/conformance/01-valid-controller-accepted.json through 09-unsupported-physical-completion.json, and examples/action-receipts/conformance/gen_rule_coverage_vectors.py.
Expected behavior
Every conformance vector reproducible from a key whose private half lives in the repository, which is the pattern gen_rule_coverage_vectors.py already uses for 10-30. Applied to 01-09, NOT_GENERATED empties and the reproduction guard needs no exemptions at all.
Impact
None on conformant implementations today. The nine are read on every run by tests/test_action_receipt_fixtures.py, which globs the whole directory and puts each vector through the verifier, signature included. They are verified; they are only unreproducible.
The cost is deferred rather than absent. A vector nobody can reissue has to be hand-edited every time the spec moves under it, and the first release that revises this corpus instead of adding to it turns all nine into hand edits at once, which is the class of silent divergence #171 exists to catch. #66 and #173 are building that release.
I have deliberately not touched them: reissuing changes pinned key material in vectors other implementations may pin, so the timing belongs to whichever release already touches these files. I am happy to do the mechanical work on request.
Related: #171, #66, #173
What is wrong
Nine of the thirty action-receipt conformance vectors cannot be regenerated by anything in this repository. gen_rule_coverage_vectors.py records why in its own first paragraph: “The 01-09 fixtures pin a key whose private half is not published, so everything here pins its own deterministic test key.” The generator covers 10-30.
Until #171 they also passed the reproduction check, because that check copied the committed fixtures into its work directory before running the generator, so 01-09 were compared against copies of themselves and agreed every time. #171 empties the directory first and names the nine, with the reason, in NOT_GENERATED.
Spec section or file
examples/action-receipts/conformance/01-valid-controller-accepted.json through 09-unsupported-physical-completion.json, and examples/action-receipts/conformance/gen_rule_coverage_vectors.py.
Expected behavior
Every conformance vector reproducible from a key whose private half lives in the repository, which is the pattern gen_rule_coverage_vectors.py already uses for 10-30. Applied to 01-09, NOT_GENERATED empties and the reproduction guard needs no exemptions at all.
Impact
None on conformant implementations today. The nine are read on every run by tests/test_action_receipt_fixtures.py, which globs the whole directory and puts each vector through the verifier, signature included. They are verified; they are only unreproducible.
The cost is deferred rather than absent. A vector nobody can reissue has to be hand-edited every time the spec moves under it, and the first release that revises this corpus instead of adding to it turns all nine into hand edits at once, which is the class of silent divergence #171 exists to catch. #66 and #173 are building that release.
I have deliberately not touched them: reissuing changes pinned key material in vectors other implementations may pin, so the timing belongs to whichever release already touches these files. I am happy to do the mechanical work on request.
Related: #171, #66, #173