qlm-measure 0.2.7 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,6 +24,10 @@ pip install qlm-measure
24
24
  npm install qlm-measure
25
25
  ```
26
26
 
27
+ ## Produce a record from your own tool
28
+
29
+ See **[docs/recorder-quickstart.md](docs/recorder-quickstart.md)** — ten lines, no QLM account, no network.
30
+
27
31
  ## Verify a record
28
32
 
29
33
  ```bash
@@ -35,6 +39,18 @@ qlm-measure version
35
39
 
36
40
  Exit codes: `0` all valid, `1` at least one invalid, `2` usage or parse error.
37
41
 
42
+
43
+ ## Verify a product hash chain
44
+
45
+ Per-event chains sealed by QLM products (TeachProof clinical evidence, Play
46
+ clinical events) are defined once, by name and version, in
47
+ `qlm-measure/schemes` — see [docs/chain-schemes.md](docs/chain-schemes.md).
48
+
49
+ ```bash
50
+ qlm-measure verify-chain events.json --family tpc/clinical
51
+ qlm-measure verify-chain --list
52
+ ```
53
+
38
54
  ## Packages
39
55
 
40
56
  - **[Python](python/README.md)** — `pip install qlm-measure`
package/dist/cli.js CHANGED
@@ -7,8 +7,9 @@ import { readFileSync, writeFileSync, existsSync } from "fs";
7
7
  import { createHash } from "crypto";
8
8
  import { verifyRecord } from "./verifier/verify-record.js";
9
9
  import { verifyRecordV03 } from "./verifier-v03.js";
10
+ import { verifyChain, listSchemes } from "./schemes/node.js";
10
11
  import { CATALOG, SHIPPED_CHECKS, SHIPPED_CHECKS_V03, PLANNED_CHECKS, CATALOG_BY_ID, CATEGORIES, CATEGORIES_V03 } from "./checks.js";
11
- const VERSION = "0.2.7";
12
+ const VERSION = "0.4.1";
12
13
  function loadRecords(path) {
13
14
  let raw;
14
15
  if (path === "-") {
@@ -315,6 +316,86 @@ function cmdVersion() {
315
316
  return 0;
316
317
  }
317
318
  // ── Main ────────────────────────────────────────────────────
319
+ // ── verify-chain: per-event hash chains sealed by QLM products ─────────────
320
+ function cmdVerifyChain(argv) {
321
+ const opts = {};
322
+ const positional = [];
323
+ for (let i = 0; i < argv.length; i++) {
324
+ const a = argv[i];
325
+ if (a === "--family" || a === "--scheme" || a === "--format") {
326
+ opts[a.slice(2)] = argv[++i];
327
+ }
328
+ else if (a === "--allow-mixed") {
329
+ opts.allowMixed = "1";
330
+ }
331
+ else if (a === "--list") {
332
+ opts.list = "1";
333
+ }
334
+ else
335
+ positional.push(a);
336
+ }
337
+ if (opts.list) {
338
+ for (const s of listSchemes())
339
+ console.log(`${s.id}\t${s.family}\tsince ${s.since}\t${s.hashField}/${s.prevField}`);
340
+ return 0;
341
+ }
342
+ const file = positional[0];
343
+ if (!file) {
344
+ console.error("Usage: qlm-measure verify-chain <events.json> (--family F | --scheme S) [--allow-mixed] [--format text|json] | --list");
345
+ return 2;
346
+ }
347
+ if (!opts.family && !opts.scheme) {
348
+ console.error("ERROR: pass --family (e.g. tpc/clinical) or --scheme (e.g. tpc/clinical-v2)");
349
+ return 2;
350
+ }
351
+ if (!existsSync(file)) {
352
+ console.error(`ERROR: ${file} not found`);
353
+ return 2;
354
+ }
355
+ let events;
356
+ try {
357
+ events = JSON.parse(readFileSync(file, "utf-8"));
358
+ }
359
+ catch (e) {
360
+ console.error(`ERROR: parse failed: ${e}`);
361
+ return 2;
362
+ }
363
+ if (!Array.isArray(events) && events && typeof events === "object" && Array.isArray(events.events)) {
364
+ events = events.events; // { events: [...] } wrapper (vectors, exports with metadata)
365
+ }
366
+ if (!Array.isArray(events)) {
367
+ console.error("ERROR: not an array of events (or an object with an events array)");
368
+ return 2;
369
+ }
370
+ let r;
371
+ try {
372
+ r = verifyChain(events, { family: opts.family, scheme: opts.scheme, rejectMixed: !opts.allowMixed });
373
+ }
374
+ catch (e) {
375
+ console.error(`ERROR: ${e.message}`);
376
+ return 2;
377
+ }
378
+ if (opts.format === "json") {
379
+ console.log(JSON.stringify({ verifier: `qlm-measure ${VERSION}`, file, ...r }, null, 2));
380
+ return r.clean ? 0 : 1;
381
+ }
382
+ console.log(`qlm-measure verify-chain ${VERSION}`);
383
+ console.log(`file: ${file}`);
384
+ console.log(`timestamp: ${new Date().toISOString()}`);
385
+ console.log(`result: ${r.clean ? "CLEAN" : "FAIL"}`);
386
+ console.log(`events: ${r.stats.total}`);
387
+ console.log(`gaps: ${r.stats.gaps}`);
388
+ console.log(`duplicates: ${r.stats.duplicates}`);
389
+ console.log(`tampered: ${r.stats.tampered}`);
390
+ console.log(`schema_errors: ${r.stats.schema_errors}`);
391
+ console.log(`hash_scheme: ${r.stats.hash_scheme}`);
392
+ console.log(`schemes: ${JSON.stringify(r.stats.schemes)}`);
393
+ if (!r.clean) {
394
+ console.log("\nerrors:");
395
+ r.errors.forEach((e) => console.log(` ${e}`));
396
+ }
397
+ return r.clean ? 0 : 1;
398
+ }
318
399
  const args = process.argv.slice(2);
319
400
  const cmd = args[0];
320
401
  let exitCode;
@@ -322,6 +403,9 @@ switch (cmd) {
322
403
  case "verify":
323
404
  exitCode = cmdVerify(args.slice(1));
324
405
  break;
406
+ case "verify-chain":
407
+ exitCode = cmdVerifyChain(args.slice(1));
408
+ break;
325
409
  case "explain":
326
410
  exitCode = cmdExplain(args.slice(1));
327
411
  break;
@@ -329,7 +413,7 @@ switch (cmd) {
329
413
  exitCode = cmdVersion();
330
414
  break;
331
415
  default:
332
- console.log("Usage: qlm-measure <verify|explain|version> [options]");
416
+ console.log("Usage: qlm-measure <verify|verify-chain|explain|version> [options]");
333
417
  console.log(" verify PATH [--format text|json] [--report FILE] [--quiet]");
334
418
  console.log(" explain [CHECK_ID]");
335
419
  console.log(" version");
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -40,4 +40,7 @@ export { OntologyClient } from "./clients/ontology-client.js";
40
40
  export type { OntologyClientConfig, DatasetName } from "./clients/ontology-client.js";
41
41
  export { EngineClient } from "./clients/engine-client.js";
42
42
  export type { EngineClientConfig, ModelStateSummary } from "./clients/engine-client.js";
43
+ export { SCHEMES, getScheme, familySchemes, listSchemes, sortKeysDeep, TPC_CLINICAL_V1, TPC_CLINICAL_V2, TPC_CLINICAL_V3, TPC_CLINICAL_V4, PLAY_CLINICAL_1_0, TPC_SIGNALS, computeEventHashWith, computeEventHashAsyncWith, sealEventWith, detectSchemeWith, verifyChainWith, } from "./schemes/index.js";
44
+ export type { ChainScheme, ChainEvent, ChainVerification, VerifyChainOptions, HashFn, AsyncHashFn } from "./schemes/index.js";
45
+ export { computeEventHash, sealEvent, detectScheme, verifyChain, sha256Hex } from "./schemes/node.js";
43
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGpF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGpF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGxF,OAAO,EACL,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAC5D,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAClG,oBAAoB,EAAE,yBAAyB,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,GAClG,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9H,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -36,4 +36,7 @@ export { verifyRecordV03 } from "./verifier-v03.js";
36
36
  // Clients
37
37
  export { OntologyClient } from "./clients/ontology-client.js";
38
38
  export { EngineClient } from "./clients/engine-client.js";
39
+ // ── Chain schemes (per-event hash chains sealed by QLM products; 0.4.0) ──────
40
+ export { SCHEMES, getScheme, familySchemes, listSchemes, sortKeysDeep, TPC_CLINICAL_V1, TPC_CLINICAL_V2, TPC_CLINICAL_V3, TPC_CLINICAL_V4, PLAY_CLINICAL_1_0, TPC_SIGNALS, computeEventHashWith, computeEventHashAsyncWith, sealEventWith, detectSchemeWith, verifyChainWith, } from "./schemes/index.js";
41
+ export { computeEventHash, sealEvent, detectScheme, verifyChain, sha256Hex } from "./schemes/node.js";
39
42
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEpF,gBAAgB;AAChB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGjG,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,gBAAgB;AAChB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEpF,gBAAgB;AAChB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGjG,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,gBAAgB;AAChB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,gFAAgF;AAChF,OAAO,EACL,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAC5D,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAClG,oBAAoB,EAAE,yBAAyB,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,GAClG,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Chain schemes — one implementation of every per-event hash chain a QLM
3
+ * product seals.
4
+ *
5
+ * Products store one row per event with a hash field and a link to the
6
+ * previous event's hash. Historically each product computed that hash with
7
+ * its own copy of the code; when one copy changed (TeachProof, 2026-09-10:
8
+ * 10 → 12 hashed fields) the standalone verifier did not, and every sealed
9
+ * chain read as "tampered". This module makes each scheme a named,
10
+ * versioned definition with a canonical serialization, so the sealer and
11
+ * every verifier — in TypeScript or Python — hash the same bytes.
12
+ *
13
+ * This file is pure: no Node or browser APIs. Hashing is injected, so the
14
+ * same code runs server-side (`./node.js`) and in a client component.
15
+ * Python twin: `python/qlm_measure/schemes.py`. Both are checked against
16
+ * `schema/vectors/chains/*.json`.
17
+ */
18
+ export type HashFn = (canonical: string) => string;
19
+ export type AsyncHashFn = (canonical: string) => Promise<string>;
20
+ export type ChainEvent = Record<string, unknown>;
21
+ export interface ChainScheme {
22
+ /** Stable identifier, e.g. "tpc/clinical-v2". */
23
+ id: string;
24
+ /** Schemes in one family share storage and a link convention; detection walks the family newest-first. */
25
+ family: string;
26
+ /** ISO date the scheme entered production. */
27
+ since: string;
28
+ /** Field carrying this event's hash. */
29
+ hashField: string;
30
+ /** Field carrying the previous event's hash. */
31
+ prevField: string;
32
+ /** Value of `prevField` on the first event of a chain. */
33
+ genesis: string;
34
+ /** Structural precondition for trying this scheme on an event. */
35
+ applies(event: ChainEvent): boolean;
36
+ /** The exact string that is hashed. Never includes `hashField`. */
37
+ canonical(event: ChainEvent): string;
38
+ /** Schema errors for one event (not integrity errors). Empty when valid. */
39
+ validate(event: ChainEvent): string[];
40
+ /** Scheme ids that may appear in the same chain as this one without the chain counting as mixed. */
41
+ coexists?: string[];
42
+ }
43
+ /** Recursively sorts object keys; arrays keep their order. Mirrors Play's residency canonicalize(). */
44
+ export declare function sortKeysDeep(value: unknown): unknown;
45
+ export declare const TPC_SIGNALS: readonly ["demonstrated", "partial", "missed_opportunity", "not_observable"];
46
+ export declare const TPC_CLINICAL_V1: ChainScheme;
47
+ /** 2026-09-10 (teachproof ac9375b): triage_class and engine_version join the hash, null when absent. */
48
+ export declare const TPC_CLINICAL_V2: ChainScheme;
49
+ /** 2026-09-14: mapping_version joins the hash on events that carry it. */
50
+ export declare const TPC_CLINICAL_V3: ChainScheme;
51
+ /**
52
+ * 2026-09-25 (teachproof schema 0.4, TPC-SPEC-002 A6): an event may carry
53
+ * event_kind ("chart.view", "chart.item", ...) and a per-kind payload. Both
54
+ * join the hash: the v3 fields (mapping_version null when absent), then
55
+ * event_kind, then the payload with its keys sorted at every depth. Only
56
+ * events with event_kind use it; the rest of the chain stays v3.
57
+ */
58
+ export declare const TPC_CLINICAL_V4: ChainScheme;
59
+ export declare const PLAY_CLINICAL_1_0: ChainScheme;
60
+ export declare const SCHEMES: Readonly<Record<string, ChainScheme>>;
61
+ export declare function getScheme(id: string): ChainScheme;
62
+ /** Schemes of a family, newest first — the order detection tries them in. */
63
+ export declare function familySchemes(family: string): ChainScheme[];
64
+ export declare function listSchemes(): Array<Pick<ChainScheme, "id" | "family" | "since" | "hashField" | "prevField">>;
65
+ export declare function computeEventHashWith(hash: HashFn, event: ChainEvent, schemeId: string): string;
66
+ export declare function computeEventHashAsyncWith(hash: AsyncHashFn, event: ChainEvent, schemeId: string): Promise<string>;
67
+ /** Returns a copy of `event` with the scheme's hash field set. Never mutates the input. */
68
+ export declare function sealEventWith<E extends ChainEvent>(hash: HashFn, event: E, schemeId: string): E;
69
+ /** Which scheme of `family` the event's stored hash was sealed under, or null. Tries newest first. */
70
+ export declare function detectSchemeWith(hash: HashFn, event: ChainEvent, family: string): string | null;
71
+ export interface ChainVerification {
72
+ clean: boolean;
73
+ errors: string[];
74
+ stats: {
75
+ total: number;
76
+ gaps: number;
77
+ duplicates: number;
78
+ tampered: number;
79
+ schema_errors: number;
80
+ /** Scheme id when the whole chain is sealed under one scheme; "mixed"; or "none" for an empty chain. */
81
+ hash_scheme: string;
82
+ /** Events per detected scheme id. */
83
+ schemes: Record<string, number>;
84
+ };
85
+ }
86
+ export interface VerifyChainOptions {
87
+ /** Detect the scheme per event within this family (default when `scheme` is not given). */
88
+ family?: string;
89
+ /** Require exactly this scheme for every event. */
90
+ scheme?: string;
91
+ /** Treat a chain that mixes schemes as an error (default true). */
92
+ rejectMixed?: boolean;
93
+ }
94
+ export declare function verifyChainWith(hash: HashFn, events: ChainEvent[], opts: VerifyChainOptions): ChainVerification;
95
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * Chain schemes — one implementation of every per-event hash chain a QLM
3
+ * product seals.
4
+ *
5
+ * Products store one row per event with a hash field and a link to the
6
+ * previous event's hash. Historically each product computed that hash with
7
+ * its own copy of the code; when one copy changed (TeachProof, 2026-09-10:
8
+ * 10 → 12 hashed fields) the standalone verifier did not, and every sealed
9
+ * chain read as "tampered". This module makes each scheme a named,
10
+ * versioned definition with a canonical serialization, so the sealer and
11
+ * every verifier — in TypeScript or Python — hash the same bytes.
12
+ *
13
+ * This file is pure: no Node or browser APIs. Hashing is injected, so the
14
+ * same code runs server-side (`./node.js`) and in a client component.
15
+ * Python twin: `python/qlm_measure/schemes.py`. Both are checked against
16
+ * `schema/vectors/chains/*.json`.
17
+ */
18
+ // ── Canonical forms ───────────────────────────────────────────────────────
19
+ /** Recursively sorts object keys; arrays keep their order. Mirrors Play's residency canonicalize(). */
20
+ export function sortKeysDeep(value) {
21
+ if (value === null || value === undefined)
22
+ return value;
23
+ if (Array.isArray(value))
24
+ return value.map(sortKeysDeep);
25
+ if (typeof value === "object") {
26
+ const sorted = {};
27
+ for (const key of Object.keys(value).sort()) {
28
+ sorted[key] = sortKeysDeep(value[key]);
29
+ }
30
+ return sorted;
31
+ }
32
+ return value;
33
+ }
34
+ // ── TeachProof clinical evidence (tpc/clinical) ───────────────────────────
35
+ // Source of truth until this module: teachproof
36
+ // src/lib/clinical/longitudinal/events/evidence-schema.ts, computeEventHash().
37
+ // Canonical form is JSON.stringify of a positional array.
38
+ export const TPC_SIGNALS = ["demonstrated", "partial", "missed_opportunity", "not_observable"];
39
+ const TPC_BASE_FIELDS = [
40
+ "type", "learner", "encounter", "turn", "construct",
41
+ "signal", "scaffold", "extractor", "confidence", "prev_hash",
42
+ ];
43
+ function tpcArray(event, variant) {
44
+ const arr = TPC_BASE_FIELDS.map((f) => event[f]);
45
+ if (variant >= 2)
46
+ arr.push(event.triage_class ?? null, event.engine_version ?? null);
47
+ if (variant === 3)
48
+ arr.push(event.mapping_version);
49
+ if (variant === 4)
50
+ arr.push(event.mapping_version ?? null, event.event_kind, sortKeysDeep(event.payload ?? {}));
51
+ return arr;
52
+ }
53
+ /** A schema 0.4 event: one with event_kind. Only tpc/clinical-v4 seals it, so its payload is always covered. */
54
+ const hasEventKind = (e) => e.event_kind !== undefined;
55
+ function tpcValidate(event) {
56
+ const errors = [];
57
+ if (event.type !== "clinical_evidence")
58
+ errors.push(`invalid type: ${String(event.type)}`);
59
+ if (!event.learner)
60
+ errors.push("missing learner");
61
+ if (!event.encounter)
62
+ errors.push("missing encounter");
63
+ if (typeof event.turn !== "number" || event.turn < 0)
64
+ errors.push(`invalid turn: ${String(event.turn)}`);
65
+ if (!event.construct)
66
+ errors.push("missing construct");
67
+ if (!TPC_SIGNALS.includes(event.signal))
68
+ errors.push(`invalid signal: ${String(event.signal)}`);
69
+ if (typeof event.scaffold !== "number" || event.scaffold < 0 || event.scaffold > 3)
70
+ errors.push(`invalid scaffold: ${String(event.scaffold)}`);
71
+ if (typeof event.confidence !== "number" || event.confidence < 0 || event.confidence > 1)
72
+ errors.push(`invalid confidence: ${String(event.confidence)}`);
73
+ return errors;
74
+ }
75
+ const tpcCommon = { family: "tpc/clinical", hashField: "hash", prevField: "prev_hash", genesis: "genesis", validate: tpcValidate };
76
+ export const TPC_CLINICAL_V1 = {
77
+ ...tpcCommon, id: "tpc/clinical-v1", since: "2026-08-31",
78
+ applies: (e) => !hasEventKind(e),
79
+ canonical: (e) => JSON.stringify(tpcArray(e, 1)),
80
+ };
81
+ /** 2026-09-10 (teachproof ac9375b): triage_class and engine_version join the hash, null when absent. */
82
+ export const TPC_CLINICAL_V2 = {
83
+ ...tpcCommon, id: "tpc/clinical-v2", since: "2026-09-10",
84
+ applies: (e) => !hasEventKind(e),
85
+ canonical: (e) => JSON.stringify(tpcArray(e, 2)),
86
+ };
87
+ /** 2026-09-14: mapping_version joins the hash on events that carry it. */
88
+ export const TPC_CLINICAL_V3 = {
89
+ ...tpcCommon, id: "tpc/clinical-v3", since: "2026-09-14",
90
+ applies: (e) => e.mapping_version !== undefined && !hasEventKind(e),
91
+ canonical: (e) => JSON.stringify(tpcArray(e, 3)),
92
+ coexists: ["tpc/clinical-v4"],
93
+ };
94
+ const TPC_EVENT_KIND = /^[a-z]+\.[a-z_]+$/;
95
+ /**
96
+ * 2026-09-25 (teachproof schema 0.4, TPC-SPEC-002 A6): an event may carry
97
+ * event_kind ("chart.view", "chart.item", ...) and a per-kind payload. Both
98
+ * join the hash: the v3 fields (mapping_version null when absent), then
99
+ * event_kind, then the payload with its keys sorted at every depth. Only
100
+ * events with event_kind use it; the rest of the chain stays v3.
101
+ */
102
+ export const TPC_CLINICAL_V4 = {
103
+ ...tpcCommon, id: "tpc/clinical-v4", since: "2026-09-25",
104
+ applies: hasEventKind,
105
+ canonical: (e) => JSON.stringify(tpcArray(e, 4)),
106
+ validate: (e) => {
107
+ const errors = tpcValidate(e);
108
+ if (typeof e.event_kind !== "string" || !TPC_EVENT_KIND.test(e.event_kind))
109
+ errors.push(`invalid event_kind: ${String(e.event_kind)}`);
110
+ if (!e.payload || typeof e.payload !== "object" || Array.isArray(e.payload))
111
+ errors.push("payload must be an object");
112
+ return errors;
113
+ },
114
+ coexists: ["tpc/clinical-v3"],
115
+ };
116
+ // ── Play clinical events, schemaVersion "clin-1.0" (play/clinical) ────────
117
+ // Source of truth until this module: qlm-games
118
+ // src/lib/residency/clinical-event-schema.ts, computeEventHash().
119
+ // Canonical form is JSON.stringify of a recursively key-sorted object of the
120
+ // ten hashed fields. Genesis prevHash is the empty string.
121
+ const PLAY_HASHED_FIELDS = [
122
+ "eventId", "ts", "encounterId", "actor", "source", "type", "payload", "consentRef", "schemaVersion", "prevHash",
123
+ ];
124
+ export const PLAY_CLINICAL_1_0 = {
125
+ id: "play/clinical-clin-1.0", family: "play/clinical", since: "2026-08-16",
126
+ hashField: "hash", prevField: "prevHash", genesis: "",
127
+ applies: (e) => e.schemaVersion === "clin-1.0",
128
+ canonical: (e) => {
129
+ const picked = {};
130
+ for (const f of PLAY_HASHED_FIELDS)
131
+ picked[f] = e[f];
132
+ return JSON.stringify(sortKeysDeep(picked));
133
+ },
134
+ validate: (e) => {
135
+ const errors = [];
136
+ if (e.schemaVersion !== "clin-1.0")
137
+ errors.push(`invalid schemaVersion: ${String(e.schemaVersion)}`);
138
+ for (const f of ["eventId", "ts", "encounterId", "type"]) {
139
+ if (typeof e[f] !== "string" || !e[f])
140
+ errors.push(`missing ${f}`);
141
+ }
142
+ return errors;
143
+ },
144
+ };
145
+ // ── Registry ──────────────────────────────────────────────────────────────
146
+ const ALL = [TPC_CLINICAL_V4, TPC_CLINICAL_V3, TPC_CLINICAL_V2, TPC_CLINICAL_V1, PLAY_CLINICAL_1_0];
147
+ export const SCHEMES = Object.freeze(Object.fromEntries(ALL.map((s) => [s.id, s])));
148
+ export function getScheme(id) {
149
+ const s = SCHEMES[id];
150
+ if (!s)
151
+ throw new Error(`unknown chain scheme: ${id} (known: ${Object.keys(SCHEMES).join(", ")})`);
152
+ return s;
153
+ }
154
+ /** Schemes of a family, newest first — the order detection tries them in. */
155
+ export function familySchemes(family) {
156
+ const out = ALL.filter((s) => s.family === family);
157
+ if (out.length === 0)
158
+ throw new Error(`unknown chain family: ${family}`);
159
+ return out;
160
+ }
161
+ export function listSchemes() {
162
+ return ALL.map(({ id, family, since, hashField, prevField }) => ({ id, family, since, hashField, prevField }));
163
+ }
164
+ // ── Sealing and detection ─────────────────────────────────────────────────
165
+ export function computeEventHashWith(hash, event, schemeId) {
166
+ return hash(getScheme(schemeId).canonical(event));
167
+ }
168
+ export async function computeEventHashAsyncWith(hash, event, schemeId) {
169
+ return hash(getScheme(schemeId).canonical(event));
170
+ }
171
+ /** Returns a copy of `event` with the scheme's hash field set. Never mutates the input. */
172
+ export function sealEventWith(hash, event, schemeId) {
173
+ const scheme = getScheme(schemeId);
174
+ const { [scheme.hashField]: _drop, ...rest } = event;
175
+ void _drop;
176
+ return { ...rest, [scheme.hashField]: hash(scheme.canonical(rest)) };
177
+ }
178
+ /** Which scheme of `family` the event's stored hash was sealed under, or null. Tries newest first. */
179
+ export function detectSchemeWith(hash, event, family) {
180
+ for (const s of familySchemes(family)) {
181
+ if (!s.applies(event))
182
+ continue;
183
+ if (event[s.hashField] === hash(s.canonical(event)))
184
+ return s.id;
185
+ }
186
+ return null;
187
+ }
188
+ export function verifyChainWith(hash, events, opts) {
189
+ if (!opts.scheme && !opts.family)
190
+ throw new Error("verifyChain: pass { family } or { scheme }");
191
+ const candidates = opts.scheme ? [getScheme(opts.scheme)] : familySchemes(opts.family);
192
+ const { hashField, prevField, genesis } = candidates[0];
193
+ const rejectMixed = opts.rejectMixed ?? true;
194
+ const errors = [];
195
+ const seen = new Set();
196
+ const perScheme = {};
197
+ let gaps = 0, duplicates = 0, tampered = 0, schemaErrors = 0;
198
+ events.forEach((e, i) => {
199
+ let matched = null;
200
+ for (const s of candidates) {
201
+ if (!s.applies(e))
202
+ continue;
203
+ if (e[hashField] === hash(s.canonical(e))) {
204
+ matched = s;
205
+ break;
206
+ }
207
+ }
208
+ // Schema errors are reported under the matched scheme, or the family's newest applicable one.
209
+ const schemeForSchema = matched ?? candidates.find((s) => s.applies(e)) ?? candidates[candidates.length - 1];
210
+ for (const err of schemeForSchema.validate(e)) {
211
+ errors.push(`[${i}] ${err}`);
212
+ schemaErrors++;
213
+ }
214
+ if (matched)
215
+ perScheme[matched.id] = (perScheme[matched.id] ?? 0) + 1;
216
+ else {
217
+ errors.push(`[${i}] hash mismatch (tampered)`);
218
+ tampered++;
219
+ }
220
+ const h = e[hashField];
221
+ if (i === 0) {
222
+ if (e[prevField] !== genesis) {
223
+ errors.push(`[${i}] first event ${prevField} must be ${JSON.stringify(genesis)}`);
224
+ gaps++;
225
+ }
226
+ }
227
+ else if (e[prevField] !== events[i - 1][hashField]) {
228
+ errors.push(`[${i}] chain gap`);
229
+ gaps++;
230
+ }
231
+ if (typeof h === "string") {
232
+ if (seen.has(h)) {
233
+ errors.push(`[${i}] duplicate hash`);
234
+ duplicates++;
235
+ }
236
+ seen.add(h);
237
+ }
238
+ });
239
+ const ids = Object.keys(perScheme);
240
+ // Schemes that declare they coexist do not make a chain mixed; the chain
241
+ // reports the newest of them (family order is newest first).
242
+ const coexist = (a, b) => (getScheme(a).coexists ?? []).includes(b) || (getScheme(b).coexists ?? []).includes(a);
243
+ const mixed = ids.some((a, i) => ids.slice(i + 1).some((b) => !coexist(a, b)));
244
+ const newest = candidates.find((s) => ids.includes(s.id))?.id;
245
+ const hashScheme = ids.length === 0 ? "none" : !mixed ? (ids.length === 1 ? ids[0] : newest) : "mixed";
246
+ if (mixed && rejectMixed) {
247
+ errors.push(`mixed hash schemes: ${ids.map((id) => `${perScheme[id]} ${id}`).join(", ")}`);
248
+ }
249
+ return {
250
+ clean: errors.length === 0,
251
+ errors,
252
+ stats: { total: events.length, gaps, duplicates, tampered, schema_errors: schemaErrors, hash_scheme: hashScheme, schemes: perScheme },
253
+ };
254
+ }
255
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type ChainEvent, type VerifyChainOptions, type ChainVerification } from "./index.js";
2
+ export declare const sha256Hex: (s: string) => string;
3
+ export declare const computeEventHash: (event: ChainEvent, schemeId: string) => string;
4
+ export declare const sealEvent: <E extends ChainEvent>(event: E, schemeId: string) => E;
5
+ export declare const detectScheme: (event: ChainEvent, family: string) => string | null;
6
+ export declare const verifyChain: (events: ChainEvent[], opts: VerifyChainOptions) => ChainVerification;
7
+ export * from "./index.js";
8
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/schemes/node.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EACjE,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,MAAsD,CAAC;AAE7F,eAAO,MAAM,gBAAgB,GAAI,OAAO,UAAU,EAAE,UAAU,MAAM,KAAG,MACrB,CAAC;AAEnD,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,MAAM,KAAG,CAClC,CAAC;AAE5C,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,IAC9B,CAAC;AAE7C,eAAO,MAAM,WAAW,GAAI,QAAQ,UAAU,EAAE,EAAE,MAAM,kBAAkB,KAAG,iBACnC,CAAC;AAE3C,cAAc,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Node binding for the chain schemes: SHA-256 from `node:crypto`, and the
3
+ * sealing / detection / verification functions with the hash pre-bound.
4
+ * Client components import from "qlm-measure/schemes" and supply their own
5
+ * `HashFn` (e.g. Web Crypto) instead.
6
+ */
7
+ import { createHash } from "crypto";
8
+ import { computeEventHashWith, sealEventWith, detectSchemeWith, verifyChainWith, } from "./index.js";
9
+ export const sha256Hex = (s) => createHash("sha256").update(s).digest("hex");
10
+ export const computeEventHash = (event, schemeId) => computeEventHashWith(sha256Hex, event, schemeId);
11
+ export const sealEvent = (event, schemeId) => sealEventWith(sha256Hex, event, schemeId);
12
+ export const detectScheme = (event, family) => detectSchemeWith(sha256Hex, event, family);
13
+ export const verifyChain = (events, opts) => verifyChainWith(sha256Hex, events, opts);
14
+ export * from "./index.js";
15
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/schemes/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EACL,oBAAoB,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,GAEvE,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAiB,EAAE,QAAgB,EAAU,EAAE,CAC9E,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAuB,KAAQ,EAAE,QAAgB,EAAK,EAAE,CAC/E,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAE,MAAc,EAAiB,EAAE,CAC/E,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAoB,EAAE,IAAwB,EAAqB,EAAE,CAC/F,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAE3C,cAAc,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "qlm-measure",
3
- "version": "0.2.7",
4
- "description": "Open measurement SDK for education AI — evidence events, record verification, and dataset clients",
3
+ "version": "0.4.1",
4
+ "description": "Open measurement SDK for education AI \u2014 evidence events, record verification, and dataset clients",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -9,23 +9,38 @@
9
9
  "exports": {
10
10
  ".": {
11
11
  "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
13
14
  },
14
15
  "./schema": {
15
16
  "import": "./dist/schema/index.js",
16
- "types": "./dist/schema/index.d.ts"
17
+ "types": "./dist/schema/index.d.ts",
18
+ "default": "./dist/schema/index.js"
17
19
  },
18
20
  "./emitter": {
19
21
  "import": "./dist/emitter/index.js",
20
- "types": "./dist/emitter/index.d.ts"
22
+ "types": "./dist/emitter/index.d.ts",
23
+ "default": "./dist/emitter/index.js"
21
24
  },
22
25
  "./verifier": {
23
26
  "import": "./dist/verifier/index.js",
24
- "types": "./dist/verifier/index.d.ts"
27
+ "types": "./dist/verifier/index.d.ts",
28
+ "default": "./dist/verifier/index.js"
25
29
  },
26
30
  "./clients": {
27
31
  "import": "./dist/clients/index.js",
28
- "types": "./dist/clients/index.d.ts"
32
+ "types": "./dist/clients/index.d.ts",
33
+ "default": "./dist/clients/index.js"
34
+ },
35
+ "./schemes": {
36
+ "import": "./dist/schemes/index.js",
37
+ "types": "./dist/schemes/index.d.ts",
38
+ "default": "./dist/schemes/index.js"
39
+ },
40
+ "./schemes/node": {
41
+ "import": "./dist/schemes/node.js",
42
+ "types": "./dist/schemes/node.d.ts",
43
+ "default": "./dist/schemes/node.js"
29
44
  }
30
45
  },
31
46
  "bin": {
@@ -38,7 +53,7 @@
38
53
  "README.md"
39
54
  ],
40
55
  "scripts": {
41
- "build": "tsc",
56
+ "build": "tsc && python3 tools/stamp-page-hash.py",
42
57
  "postbuild": "chmod +x dist/cli.js 2>/dev/null || true",
43
58
  "test": "vitest run",
44
59
  "test:watch": "vitest",