Repository navigation
formal: wave-1 close-out (averin) - #12
Merged
Merged
Conversation
…e, vectors.lock), claim and killing mutant
Deploying averin-verify with
|
| Latest commit: |
6e5d05f
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://afebfbad.averin-verify.pages.dev |
| Branch Preview URL: | https://formal-p3-w1close.averin-verify.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Wave-1 close-out (VUL-15 cross-language half). vultrino computes averin's params hiding commitment for its use PoP, but no shared vector pinned the two implementations to a third, and nothing in CI regenerated the committed vector files from their generators.
Fix / Proof
vectors/params-commitment.v1.json: 11 golden commitments over the four field domains (empty and multibyte values, lengths 255/256/1024, NUL and high bytes) plus 8 rejected nonce strings, produced by the independent Python referencescripts/vectors/gen_params_commitment.py(stdlib only;--checkfails when stale). Owner averin, pinned invectors/vectors.lock; vultrino keeps a byte-identical copy.core/tests/params_commitment_vectors.rs:commit::commitreproduces every vector and the FFI-strict decode refuses every rejected nonce.params-commitment-vectors-match-reference(kit v2 and legacy register, FORMAL.md re-rendered) with killing mutantseams-commit-nonce-not-bound(the nonce is dropped from the preimage).gen_authority_v3.py --checkandgen_params_commitment.py --check(regenerate and compare).Red-first / bite evidence
check_mutants.py --only seams-commit-nonce-not-bound: killed (detector exit 101, a failing assertion on the vector, not a compile error).Gates run
gen_params_commitment.py --check,cargo test -p averin-decision-core --test params_commitment_vectors,check_claims.py --claims formal/kit-claims.json(264 checks, 0 failures),scripts/check-claims.py, kit unit tests,check_vectors_lock.py --peer vultrino=....What this does NOT establish
Only the listed inputs. The reference and implementation share the written format (RCP 9.3), so a flaw in the format is in both. Not that the nonce is random or that a commitment hides a value. Copy identity with vultrino is checked only by the local
--peerrun, not by CI.evidence_runis not recorded yet (a CI run on main will prove it).Merge order