Language-agnostic conformance test suite for EVP/1. Run any issuer or consumer implementation against this corpus to certify compliance.
The separated conformance suite for EVP/1 — modeled on sigstore/sigstore-conformance and json-schema-org/JSON-Schema-Test-Suite. The protocol spec lives in etymolt/evp-spec; the test vectors that prove compliance live here.
Two conformance dimensions:
- Issuer conformance — does your
POST /v1/verifyendpoint return a verdict that validates against the EVP/1 schema and signs correctly? - Consumer conformance — does your consumer surface render the disclaimer verbatim, surface temporal validity correctly, and reject malformed signatures?
.
├── issuer-conformance/
│ ├── README.md
│ ├── runner.py # The harness: hits your /v1/verify, validates results
│ └── checks/ # Per-axis check definitions
├── consumer-conformance/
│ ├── README.md
│ ├── runner.py # The harness: feeds your consumer test vectors
│ └── vectors/ # Inputs the consumer must handle correctly
└── test_vectors/ # Mirrors the canonical set from evp-spec
├── valid/ # plus additional edge cases
├── invalid/
├── canonicalization/
├── key_rotation/
└── temporal_validity/
git clone https://github.com/etymolt/conformance.git
cd conformance
pip install -r requirements.txt
# Issuer conformance against api.etymolt.com (reference issuer)
python issuer-conformance/runner.py --endpoint https://api.etymolt.com/v1/verify
# Consumer conformance against your implementation
python consumer-conformance/runner.py --consumer-cmd "node my-render.js"Pass the full suite, get a conformance badge. Add to your README:
(Badge issuance pending; for now self-attest by linking your conformance run output.)
This suite is early. The initial test vectors mirror the canonical set in evp-spec/test_vectors/; the issuer + consumer runners are scaffolded but minimal. Contributions welcome — see CONTRIBUTING.md.
Per the json-schema-org pattern: conformance test suites that live next to spec language end up versioning awkwardly. A separate repo lets the suite evolve faster than the spec, lets third-party issuers and consumers run CI against a stable URL, and lets the test corpus be language-agnostic by design.
Apache-2.0 for the runner code and harness. The test vectors are CC-BY-4.0. The "Etymolt" name and logo are trademarks of Etymolt Inc. and are not licensed under either.
hello@etymolt.com