Conformance · SPEC.md § 17

Conformance levels

Who may say “Lantern compatible”, at which level, and how the suite decides.

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.

LevelWhat
Lantern CoreTransport, 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)
+titlesTitles (§ 7)
+homebrewHomebrew, packages, manifests, signatures, ports and requirements (§ 8)
+savesSave backups (§ 9)
+cheatsCheats, and writing them when offered (§ 10)
+requestsRequests (§ 11)
+adminAdministration, 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/.