KLM — Knowledge Layers Model
An open reference standard for attestable knowledge in language-model systems.
A language model answers, and you believe it or you don't. KLM exists to make a third option possible: read the answer back — where its knowledge entered, what it did, how it was judged — with every signal carrying an honest epistemic status. The deliverable is no longer the text; it is the text and its attestation.
Show me where this came from. Everything else follows from taking that question seriously.
The documents
| Document | Role |
|---|---|
| KLM-Manifesto.md | The thesis, in nine commitments |
| KLM-White-Paper.md | The argument, the layer model, a worked example (v0.3) |
| KLM-Specification.md | Normative conformance detail, RFC-2119 (v0.1) |
| docs/KLM-Gamma-Unification.md | Normative γ schema decisions (klm-gamma/1.0) |
| docs/KLM-Amendment-Attested-Parametric.md | Draft amendment: mechanical parametric attribution |
| docs/QUICKSTART.md | Five minutes: validate, try to cheat, sign, chain, disclose |
| docs/FAQ.md | What KLM is and deliberately is not |
| CONTRIBUTING.md | Amendment process + implementation reports (the gap we most want filled) |
The toolchain (schema/)
Deliberately stdlib-only Python — any third party verifies with nothing but a Python interpreter. No dependencies, no accounts, no trust in the emitter.
| Tool | What it does |
|---|---|
klm-gamma.schema.json + validate_gamma.py |
The γ (epistemic vector) contract + validator |
klm-attestation.schema.json + validate_attestation.py |
The attestation record + the KLM-0…5 conformance ladder |
sign_attestation.py (+ ed25519_ref.py) |
Ed25519-signed envelopes; RFC 8032 fallback so verification needs zero deps |
attestation_log.py |
Hash-chained append-only record log (tamper breaks the chain) |
disclosure.py |
Selective disclosure views: user / auditor / operator (§12.1) |
schema/examples/ |
Golden records — including adversarial ones that MUST fail |
Quick start:
python3 schema/validate_attestation.py --level 3 schema/examples/attestation-worked-example.json
python3 schema/validate_attestation.py schema/examples/invalid/attestation-violations.json # must FAIL
Conformance levels
KLM-0 Declared → KLM-1 Traceable → KLM-2 Grounded → KLM-3 Reflective → KLM-4 Attributable → KLM-5 Verifiable. Progress is not a feeling; it is
passing the next level's test. See the Specification §8.
Status & invitation
KLM is a candidate standard: implemented end-to-end by a reference stack (SEDIM / Nage), with a cross-language second emitter passing the same validator — but its real test is a conforming implementation built on entirely different mechanisms, by someone else. Competing implementations, challenges to the conformance suite, and layers we got wrong are the point, not a threat.
License
Apache-2.0. Stewardship: Nage AI.
Metadata
Release files for klm-conformance 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| klm_conformance-0.1.0.tar.gz | 76.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| klm_conformance-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 111.3 kB
Release files / klm_conformance-0.1.0.tar.gz
| Download URL | klm_conformance-0.1.0.tar.gz |
|---|---|
| Size | 76.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d7a491a815a2e849a5a27afc64d894bb081817063d5c524bc39aba35d634fe8
|
|
BLAKE2b-256 checksum How to use checksums |
10b318e0cff0aa4d8e5c96d1984f131e3835ea08a175c701a093787e6bf5cc49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / klm_conformance-0.1.0-py3-none-any.whl
| Download URL | klm_conformance-0.1.0-py3-none-any.whl |
|---|---|
| Size | 35.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
166d97ce0c5a11eec9591f05b070af83f465f5545d6e48e314279566a7f16e25
|
|
BLAKE2b-256 checksum How to use checksums |
f151350dcb62ae3bb3d1e4d88574665d78f425417cfe7c8adde0aed7c160ca40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|