feat: add VTL v0.11 canonical signed envelope - #950
Open
safal207 wants to merge 9 commits into
Open
Conversation
safal207
marked this pull request as ready for review
August 17, 2026 14:35
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Purpose
Stacked on #948 /
agent/verified-transition-loop-v0.10. VTL v0.11 binds Ed25519 authenticity to the explicit v0.10 canonical-byte profile so the same signed statement can be verified independently in Python and Node.Tracking: #949 (completed with exact-head evidence).
Core invariant
The signed statement explicitly binds:
Canonical profile:
rfc8785-safe-integer/v0.10.Cross-runtime proof
Independent implementations:
Both consume the same envelope, public key, canonical signed bytes, Ed25519 signature, trust-root fixture, and mutation vectors. CI requires complete Python result == Node result, not two independent PASS statuses.
Executable profile
12/12 shared vectors PASS:
Direct regressions additionally cover ambiguous signer IDs, malformed public-key material, unsafe integers, floats, exact signed bytes, and signature/profile binding.
Claim separation
The verifier exposes independently:
A payload mutation can leave
signature_valid=truewhile the envelope failsPAYLOAD_DIGEST_MISMATCH, because the historical payload digest is what was signed. Revocation/expiry can leave the signature mathematically valid whiletrusted_current_authority=false. A canonical-profile substitution changes the signed statement itself and therefore invalidates both attestation identity and signature.Compatibility
v0.11 is opt-in. It does not rewrite historical v0.8/v0.9 signature identities. v0.10 canonical conformance remains independently executable.
Package:
verified-transition-loop==0.11.0CLI:
vtl-canonical-envelope-verifyExact-head evidence
Final v0.11 head:
Exact stacked v0.10 parent:
PR merge ref verified these exact parents:
Green on the final head:
32039354770: SUCCESS;0.11.0: PASS;32039354773: SUCCESS;Review status
ff5331c...;Safety / trust ceiling
This remains a reference verification protocol. It performs no tool execution, deploy, merge, payment, message send, credential issuance, KMS/HSM/IAM call, or production authority grant. It inherits v0.10's safe-integer JSON domain and does not claim full RFC 8785 floating-point coverage, Unicode normalization/confusable equivalence, a globally freshest trust-root oracle, transparency-log consensus, or hardware-backed key/checkpoint storage.
The load-bearing v0.11 claim is narrower and executable: within the declared canonical profile, independent Python and Node runtimes verify the same canonical signed bytes and the same Ed25519 signature into the same structured proof result.