Skip to content

etymolt/conformance

Repository files navigation

Etymolt Conformance

Language-agnostic conformance test suite for EVP/1. Run any issuer or consumer implementation against this corpus to certify compliance.

License: Apache-2.0

What this is

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:

  1. Issuer conformance — does your POST /v1/verify endpoint return a verdict that validates against the EVP/1 schema and signs correctly?
  2. Consumer conformance — does your consumer surface render the disclaimer verbatim, surface temporal validity correctly, and reject malformed signatures?

Layout

.
├── 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/

Running the suite

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"

Badges

Pass the full suite, get a conformance badge. Add to your README:

![EVP/1 Conformance](https://img.shields.io/badge/EVP%2F1-conformant-green.svg)

(Badge issuance pending; for now self-attest by linking your conformance run output.)

Status

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.

Why a separate repo

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.

License

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.

Contact

[email protected]

Naming, attested.

EVP/1.1 fixtures

The fixtures/evp-1.1/ directory carries public-comment-candidate test vectors for the EVP/1.1 schema currently at https://github.com/etymolt/evp-spec/blob/main/spec/evp-1.1.schema.json. v1.1 is a non-breaking superset of v1 that adds goods/class scoping, valid_until / ttl_seconds, per-jurisdiction trademark sources, and freshness telemetry.

  • fixtures/evp-1.1/example-valid.json -- complete v1.1 verdict with all required blocks (goods.nice_classes_source=inferred_text, sources.trademark.{us,eu,uk,common_law}, freshness). Validates clean against the published schema.
  • fixtures/evp-1.1/example-missing-goods.json -- v1 verdict reissued under v1.1 envelope with goods.nice_classes_source: "missing". The forward-compat path: a legacy v1 verdict can be re-emitted under v1.1 with explicit missing provenance, signaling to consumers that the verdict was not scoped to specific Nice classes and should be downgraded accordingly.

Validate locally:

curl -sL https://raw.githubusercontent.com/etymolt/evp-spec/main/spec/evp-1.1.schema.json -o evp-1.1.schema.json
python3 -c "import json,jsonschema; jsonschema.validate(json.load(open("fixtures/evp-1.1/example-valid.json")), json.load(open("evp-1.1.schema.json")))"

About

EVP/1 conformance test suite. Run any EVP/1 issuer or consumer implementation against this corpus to certify compliance.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors