A Lantern implementation is conformant at a level when the conformance suite, run against it, passes every
check of that level (the specification, § 17). Every level needs
Lantern Core.
| Level | What |
|---|---|
Lantern Core | Transport, versions and the handshake (§ 2–4); tokens, pairing and signed requests when it issues tokens (§ 5.1–5.4); the library, what is missing, changes and sections when offered, and files (§ 6); errors, limits and caching (§ 12–14) |
+titles | Titles (§ 7) |
+homebrew | Homebrew, packages, manifests, signatures, ports and requirements (§ 8) |
+saves | Save backups (§ 9) |
+cheats | Cheats, and writing them when offered (§ 10) |
+requests | Requests (§ 11) |
+admin | Administration, invitations and rating caps (§ 5.5–5.7) |
Run the suite
With a token that holds every scope the levels need, and its device key, and anonymously on a public server. At the end it prints the levels reached, and why it did not reach the others.
pip install -r tools/requirements.txt
python3 conformance/run.py https://shelf.example.org/ --token et_… --key device.key
…
Levels reached (SPEC.md § 17, draft 0.4): Lantern Core +titles +homebrew
A level is reached when its family is offered to the caller, none of its checks fails, and none was left out for want of a token, a key or a scope. Each check names the requirements it covers: the traceability page lists them all, and those only a client can keep.
The name and the badge
Only an implementation that passes the suite at a level may call itself “Lantern compatible” and show the badge, with that level and the version of the text it passed: “Lantern compatible 0.4 · Core +titles”.
The registry
The implementations that pass, the reference server first; yours joins them by a pull request with the suite's report.
Test vectors
For client and server libraries, the bytes the text spells out, case by case, with what a reader decides:
signed requests, homebrew signatures, Ed25519 signatures a verifier refuses, SPKI fingerprints, paths,
version_code per profile, requirements and rating caps, in
vectors/.