qlm-measure
Open measurement SDK for education AI — evidence events, record verification, and dataset clients.
Apache-2.0 · Documentation · JS package
Limitations (read first)
- This SDK is the public interface layer, not the measurement engine. The estimation service (Bayesian posteriors, calibration) is QLM's hosted engine.
- The verifier checks bookkeeping integrity, not estimation correctness. It can tell you if a record was tampered with. It cannot tell you if the posteriors are accurate. That distinction is the design.
- Evidence event schemas are v0.2 and may change in minor versions. Pin your dependency.
verifymakes no network calls. Records never leave your machine.
What the verifier deliberately cannot check
- Whether posteriors are correctly computed (that requires the engine's update rule; see
ESTIMATE.REPRODUCE, planned) - Whether evidential weights are appropriate (those are calibrated server-side)
- Whether triage classifications are accurate (those use rules not in this package)
Install
pip install qlm-measure
Quickstart — produce a record from your own tool
See docs/recorder-quickstart.md — ten lines, no QLM account, no network.
Verify a file
qlm-measure verify record.json
qlm-measure verify records.jsonl --format json --report report.json
qlm-measure explain HASH.ENTRY_RECOMPUTE
qlm-measure version
Exit codes: 0 all valid, 1 at least one invalid, 2 usage or parse error.
Report formats
Text (default):
record syn-8f2c-0042 (schema 0.2, 6 entries)
Schema
✓ Required fields present
✓ Field types valid
✓ Timestamp is ISO 8601
...
VERDICT: CLEAN — record is verifiable
JSON (--format json or --report FILE):
{
"tool": {"name": "qlm-measure", "version": "0.2.2", "language": "python"},
"summary": {"records": 1, "valid": 1, "invalid": 0, "checks_run": 9, "checks_passed": 9}
}
Verify in code
from qlm_measure import verify_record
record = {"studentScopeId": "...", "entries": [...]}
result = verify_record(record)
if not result.valid:
for v in result.violations:
print(f"[{v.check_id}] v{v.version}: {v.message}")
Check catalog
10 shipped checks, run by verify:
| ID | Label |
|---|---|
| SCHEMA.REQUIRED | Required fields present |
| SCHEMA.TYPES | Field types valid |
| SCHEMA.TIMESTAMP_FORMAT | Timestamp is ISO 8601 |
| VERSION.MONOTONIC | Versions strictly increase |
| TIMESTAMP.MONOTONIC | Timestamps do not go backward |
| ENUM.VALID | Enum values permitted |
| HASH.PREV_LINK | Chain link valid |
| HASH.ENTRY_RECOMPUTE | Entry hash recomputes |
| POSTERIOR.CHAIN | Posterior chain consistent |
| COMPACTION.BOUNDARY | Compaction boundary intact |
5 planned checks (listed by explain, not yet run):
ESTIMATE.REPRODUCE, TEMPORAL.T_DESIGN, TEMPORAL.T_RESULT, CONSENT.SCOPE, CONSENT.WITHDRAWAL
Use qlm-measure explain CHECK_ID for details on any check.
File formats
.json— one record object, or an array of records.jsonl/.ndjson— one record per line-— stdin (format auto-detected)- UTF-8, tolerates BOM. Parse errors report line number.
Privacy
studentScopeIdis pseudonymous by contract. Never include PII.--redactreplaces scope IDs with their SHA-256 prefix in output.- The SDK does not store data, make network calls, or set cookies.
Links
License
Apache-2.0. See LICENSE.
Metadata
Release files for qlm-measure 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| qlm_measure-0.4.1.tar.gz | 44.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qlm_measure-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 92.5 kB
Release files / qlm_measure-0.4.1.tar.gz
| Download URL | qlm_measure-0.4.1.tar.gz |
|---|---|
| Size | 44.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
469d27644ce567bd0cd4dcff67c379eae10dbc0e389e8d6216e5d5572ff54257
|
|
BLAKE2b-256 checksum How to use checksums |
a64dc1f0e4f1bb3e5133ae2cd4b2d4b36d821434b2be3f7f7af417bf2ff20c91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / qlm_measure-0.4.1-py3-none-any.whl
| Download URL | qlm_measure-0.4.1-py3-none-any.whl |
|---|---|
| Size | 48.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
12a7a1929c3b7cbf490f11e5baf050cc7612b597be370858c50a30ed5547aa78
|
|
BLAKE2b-256 checksum How to use checksums |
78f35cba97138c6bb6ff6ee92b27ec30946ea555da1ebc850a18365286cc1975
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Security for qlm-measure 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.