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
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qlm_measure-0.2.8.tar.gz.
File metadata
- Download URL: qlm_measure-0.2.8.tar.gz
- Upload date:
- Size: 37.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb0007cdd018ce7888e625bc76ca8cd13f0c14c3647b1b83e712035cfae61c06
|
|
| MD5 |
dfd104fa0d7ef7e97e110d4337ce4de5
|
|
| BLAKE2b-256 |
8e63cffa82e3dd1e53bb1ba30c68183c57e37c024513567024f12942c76af637
|
File details
Details for the file qlm_measure-0.2.8-py3-none-any.whl.
File metadata
- Download URL: qlm_measure-0.2.8-py3-none-any.whl
- Upload date:
- Size: 42.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24b572e11185bae26347b301dce930345ddbb714a4f189bc77935533d8a763d6
|
|
| MD5 |
659ca4d4e64a096a171f3d33aaa4093d
|
|
| BLAKE2b-256 |
a78e6fcfedb2be5243eacdc631e84993e6566576861e8516b1db495d5ea3b77f
|