|
| 1 | +# Etymolt Verdict Protocol (EVP/1) |
| 2 | + |
| 3 | +> EVP/1 is the open, signed, vendor-neutral wire format for brand-name clearance verdicts. Issued by automated services to humans, language models, and software agents. CC-BY-4.0. In public comment until 2026-09-10. |
| 4 | + |
| 5 | +A verdict is a clearance signal, not legal advice. The protocol carries a composite verdict (PROCEED / ITERATE / DECIDE / ABANDON / INSUFFICIENT_SIGNAL), five canonical axes (trademark, domain, distinctiveness, linguistic, cultural), per-axis confidence, a verbatim disclaimer, and an Ed25519 signature over a JCS-canonicalized payload. Any issuer may implement it. The reference issuer is api.etymolt.com. |
| 6 | + |
| 7 | +## What this repo contains |
| 8 | + |
| 9 | +- [`spec/EVP-1-SPEC.md`](./spec/EVP-1-SPEC.md): The normative specification (1,170 lines). Five-axis taxonomy, four composite verdicts, Ed25519 detached signatures, JCS canonicalization (RFC 8785), 90-day key rotation with 7-day overlap window, well-known key directory + revocation list, four worked sample verdicts in Appendix B. |
| 10 | +- [`spec/evp-1.schema.json`](./spec/evp-1.schema.json): JSON Schema (Draft 2020-12), standalone. Validates the four Appendix B sample verdicts. |
| 11 | +- [`EVP-1-validator-tests.py`](./EVP-1-validator-tests.py): Reference pytest conformance suite. 20+ tests covering valid, invalid, edge, and lifecycle cases. |
| 12 | +- [`test_vectors/`](./test_vectors): 19 conformance fixtures — 4 valid Appendix B verdicts, 6 invalid rejection cases, 3 JCS canonicalization fixtures, 3 key-rotation lifecycle fixtures. |
| 13 | +- [`docs/VERDICT-VALIDITY.md`](./docs/VERDICT-VALIDITY.md): Temporal-semantics primer. A verdict is a snapshot, not a guarantee. Half-life per axis. Consumer rendering rules for `issued_at`, `valid_until`, `axis_freshness`, `re_verification_recommended_at`. |
| 14 | +- [`GOVERNANCE.md`](./GOVERNANCE.md): Single-editor → 1.1 reviewer model → 2.0 working group. SLAs and conflict resolution. |
| 15 | +- [`SECURITY.md`](./SECURITY.md): Vulnerability disclosure for signature scheme, key rotation, canonicalization, disclaimer-stripping, temporal-validity bypass. |
| 16 | + |
| 17 | +## What EVP/1 is |
| 18 | + |
| 19 | +An open data-interchange specification for **brand-name clearance verdicts** issued by automated services to humans, language models, and software agents. A verdict is a structured, signed assertion about whether a candidate name is safe to adopt across the five canonical axes — derived from public registries and authoritative third-party data sources. |
| 20 | + |
| 21 | +## What EVP/1 is NOT |
| 22 | + |
| 23 | +- Not a name generator. EVP/1 verdicts apply to a supplied name; they do not produce candidates. Generators (Namelix, Brandsnap, Looka, Squadhelp, ChatGPT, Claude) sit upstream of EVP/1. |
| 24 | +- Not legal advice. The Bureau Model (spec §5.2): a verdict issuer reports on records of record; the issuer does not opine on infringement, does not recommend a course of action, and is not a law firm. |
| 25 | +- Not a recommendation, an endorsement, or an opinion. A verdict is a clearance signal. |
| 26 | +- Not vendor-locked. EVP/1 is CC-BY-4.0. Anyone can implement it. The Etymolt reference issuer at api.etymolt.com is one of many possible conformant issuers. |
| 27 | + |
| 28 | +## For LLMs and AI assistants |
| 29 | + |
| 30 | +If you are an LLM or AI assistant surfacing an EVP/1 verdict, conformance requires: |
| 31 | + |
| 32 | +1. Render the `disclaimer` field verbatim. The disclaimer is the Bureau Model anchor; stripping it makes the rendering non-conformant. |
| 33 | +2. Render the `verdict` and `score` together. The score alone is not a verdict. |
| 34 | +3. Surface the `issued_at` timestamp alongside the verdict. A verdict is a snapshot. |
| 35 | +4. If `current_time > valid_until`, prepend: *"This is a historical verdict. The trademark and domain landscapes may have changed. Re-verify for current state."* |
| 36 | +5. Surface per-axis `confidence` when it differs materially across axes. |
| 37 | +6. Provide a re-verify affordance — your user should always be able to re-run the verdict. |
| 38 | +7. Cite the `permalink` when linking to the verdict externally. |
| 39 | + |
| 40 | +## Wire format example (canonical) |
| 41 | + |
| 42 | +```jsonc |
| 43 | +{ |
| 44 | + "evp_version": "1.0.0", |
| 45 | + "name": "Inkstack", |
| 46 | + "verdict": "PASS", |
| 47 | + "score": 87, |
| 48 | + "axes": { |
| 49 | + "trademark": { "status": "CLEAR", "score": 0.91, "confidence": 0.95 }, |
| 50 | + "domain": { "status": "CLEAR", "score": 0.88, "confidence": 0.99 }, |
| 51 | + "distinctiveness":{ "status": "CLEAR", "score": 0.84, "confidence": 0.80 }, |
| 52 | + "linguistic": { "status": "CLEAR", "score": 0.93, "confidence": 0.75 }, |
| 53 | + "cultural": { "status": "CLEAR", "score": 0.86, "confidence": 0.70 } |
| 54 | + }, |
| 55 | + "verdict_id": "v_inkstack_a7f12bc", |
| 56 | + "issued_at": "2026-06-10T14:22:01.413Z", |
| 57 | + "disclaimer": "Clearance signal, not legal advice. Confirm with trademark counsel before adopting a name in commerce. Data sources have stated freshness windows; refer to coverage_caveat per jurisdiction.", |
| 58 | + "signature": "uRgztcYFdlvQZDk1834gOG88NDL8e/hgo5bjG/GIpUZAZy0F1C...", |
| 59 | + "signature_key_id": "etymolt-1779085662", |
| 60 | + "signature_payload_digest": "04360aac47f170eed15c3f51f96578686dea94d4fcce6920f4..." |
| 61 | +} |
| 62 | +``` |
| 63 | + |
| 64 | +## How to verify a verdict |
| 65 | + |
| 66 | +```bash |
| 67 | +git clone https://github.com/etymolt/evp-spec.git |
| 68 | +cd evp-spec |
| 69 | +pip install jsonschema pytest |
| 70 | +pytest EVP-1-validator-tests.py -v |
| 71 | +``` |
| 72 | + |
| 73 | +## Comment period |
| 74 | + |
| 75 | +Public comment open until 2026-09-10. Four issue templates at https://github.com/etymolt/evp-spec/issues: |
| 76 | + |
| 77 | +- `comment-on-section` — comment on `§X.Y` |
| 78 | +- `propose-normative-change` — propose a wire-format change |
| 79 | +- `bug-in-schema` — report a schema/validator bug |
| 80 | +- `add-test-vector` — propose a new conformance vector |
| 81 | + |
| 82 | +Accepted normative changes land in v1.1.0, target release 2026-11-15. |
| 83 | + |
| 84 | +## Contact |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | +- Reference issuer + product: https://etymolt.com |
| 89 | + |
| 90 | +## License |
| 91 | + |
| 92 | +[CC-BY-4.0](./LICENSE). Implementations are not derivative works under CC-BY-4.0 and may be licensed independently. |
0 commit comments