Skip to main content

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.
  • verify makes 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

  • studentScopeId is pseudonymous by contract. Never include PII.
  • --redact replaces scope IDs with their SHA-256 prefix in output.
  • The SDK does not store data, make network calls, or set cookies.

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)

Source distribution for qlm-measure 0.4.1
File Size Uploaded Provenance
qlm_measure-0.4.1.tar.gz 44.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for qlm-measure 0.4.1
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page