@mneme-ai/core 2.69.0 → 2.71.0

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.
Files changed (41) hide show
  1. package/dist/protoplasm/index.d.ts +1 -0
  2. package/dist/protoplasm/index.d.ts.map +1 -1
  3. package/dist/protoplasm/index.js +6 -0
  4. package/dist/protoplasm/index.js.map +1 -1
  5. package/dist/protoplasm/super_quan/chsh_witness.d.ts +80 -0
  6. package/dist/protoplasm/super_quan/chsh_witness.d.ts.map +1 -0
  7. package/dist/protoplasm/super_quan/chsh_witness.js +143 -0
  8. package/dist/protoplasm/super_quan/chsh_witness.js.map +1 -0
  9. package/dist/protoplasm/super_quan/decoherence.d.ts +44 -0
  10. package/dist/protoplasm/super_quan/decoherence.d.ts.map +1 -0
  11. package/dist/protoplasm/super_quan/decoherence.js +148 -0
  12. package/dist/protoplasm/super_quan/decoherence.js.map +1 -0
  13. package/dist/protoplasm/super_quan/guards.test.d.ts +7 -0
  14. package/dist/protoplasm/super_quan/guards.test.d.ts.map +1 -0
  15. package/dist/protoplasm/super_quan/guards.test.js +142 -0
  16. package/dist/protoplasm/super_quan/guards.test.js.map +1 -0
  17. package/dist/protoplasm/super_quan/homograph_guard.d.ts +47 -0
  18. package/dist/protoplasm/super_quan/homograph_guard.d.ts.map +1 -0
  19. package/dist/protoplasm/super_quan/homograph_guard.js +210 -0
  20. package/dist/protoplasm/super_quan/homograph_guard.js.map +1 -0
  21. package/dist/protoplasm/super_quan/index.d.ts +24 -0
  22. package/dist/protoplasm/super_quan/index.d.ts.map +1 -0
  23. package/dist/protoplasm/super_quan/index.js +24 -0
  24. package/dist/protoplasm/super_quan/index.js.map +1 -0
  25. package/dist/protoplasm/super_quan/input_size_guard.d.ts +58 -0
  26. package/dist/protoplasm/super_quan/input_size_guard.d.ts.map +1 -0
  27. package/dist/protoplasm/super_quan/input_size_guard.js +102 -0
  28. package/dist/protoplasm/super_quan/input_size_guard.js.map +1 -0
  29. package/dist/protoplasm/super_quan/negspace.d.ts +79 -0
  30. package/dist/protoplasm/super_quan/negspace.d.ts.map +1 -0
  31. package/dist/protoplasm/super_quan/negspace.js +134 -0
  32. package/dist/protoplasm/super_quan/negspace.js.map +1 -0
  33. package/dist/protoplasm/super_quan/strs.d.ts +65 -0
  34. package/dist/protoplasm/super_quan/strs.d.ts.map +1 -0
  35. package/dist/protoplasm/super_quan/strs.js +95 -0
  36. package/dist/protoplasm/super_quan/strs.js.map +1 -0
  37. package/dist/protoplasm/super_quan/super_quan.test.d.ts +8 -0
  38. package/dist/protoplasm/super_quan/super_quan.test.d.ts.map +1 -0
  39. package/dist/protoplasm/super_quan/super_quan.test.js +184 -0
  40. package/dist/protoplasm/super_quan/super_quan.test.js.map +1 -0
  41. package/package.json +1 -1
@@ -0,0 +1,134 @@
1
+ /**
2
+ * 💎 #2 — NEGSPACE: HMAC Audit as Negative Knowledge Graph
3
+ *
4
+ * Every IMPOSSIBLE / REFUTED verdict that Mneme ever emitted is HMAC-chained
5
+ * into an audit log. Today it sits as raw log. This module re-indexes that
6
+ * log into a *negative* knowledge graph — RAG over things known to be false.
7
+ *
8
+ * Standard RAG indexes positive facts (Wikipedia, docs, code).
9
+ * NEGSPACE indexes negative facts: "X is known false; here's why; here's the
10
+ * audit signature." Useful for AI safety: agents should know what NOT to
11
+ * claim, with cryptographic evidence.
12
+ *
13
+ * API:
14
+ * const ng = new Negspace(auditPath, hmacKey);
15
+ * ng.index(); // build in-memory index
16
+ * ng.lookup("useFormStatus accepts reset prop")
17
+ * → { previouslyRefuted: true,
18
+ * evidence: "HMAC sig 3a4f...; refuted 2026-04-12",
19
+ * similarRefuted: [{claim, similarity}] }
20
+ *
21
+ * Similarity: bigram Jaccard. No external embeddings dependency.
22
+ * (Embeddings adapter pluggable — see protoplasm/embeddings_adapter.)
23
+ */
24
+ import { existsSync, readFileSync } from "node:fs";
25
+ import { createHmac } from "node:crypto";
26
+ function bigrams(s) {
27
+ const normalized = s.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu, " ").replace(/\s+/g, " ").trim();
28
+ const out = new Set();
29
+ for (let i = 0; i < normalized.length - 1; i++) {
30
+ out.add(normalized.slice(i, i + 2));
31
+ }
32
+ return out;
33
+ }
34
+ function jaccard(a, b) {
35
+ if (a.size === 0 && b.size === 0)
36
+ return 1;
37
+ let inter = 0;
38
+ for (const x of a)
39
+ if (b.has(x))
40
+ inter++;
41
+ const union = a.size + b.size - inter;
42
+ return union === 0 ? 0 : inter / union;
43
+ }
44
+ export class Negspace {
45
+ auditPath;
46
+ hmacKey;
47
+ rows = [];
48
+ indexed = false;
49
+ constructor(auditPath, hmacKey) {
50
+ this.auditPath = auditPath;
51
+ this.hmacKey = hmacKey;
52
+ }
53
+ /** Build / refresh in-memory index from audit JSONL. Idempotent. */
54
+ index() {
55
+ this.rows = [];
56
+ if (!existsSync(this.auditPath)) {
57
+ this.indexed = true;
58
+ return { totalRows: 0, refutedOrImpossible: 0 };
59
+ }
60
+ const lines = readFileSync(this.auditPath, "utf8").trim().split("\n").filter(Boolean);
61
+ for (const line of lines) {
62
+ try {
63
+ const row = JSON.parse(line);
64
+ if (typeof row.claim === "string" && typeof row.verdict === "string")
65
+ this.rows.push(row);
66
+ }
67
+ catch { /* skip malformed */ }
68
+ }
69
+ this.indexed = true;
70
+ return { totalRows: this.rows.length, refutedOrImpossible: this.knownLies().length };
71
+ }
72
+ knownLies() {
73
+ return this.rows.filter((r) => r.verdict === "REFUTED" || r.verdict === "IMPOSSIBLE");
74
+ }
75
+ /** Lookup a claim. Returns exact match if any + nearest semantic-Jaccard neighbours. */
76
+ lookup(claim, opts = {}) {
77
+ if (!this.indexed)
78
+ this.index();
79
+ const threshold = opts.threshold ?? 0.5;
80
+ const topK = opts.topK ?? 5;
81
+ const queryBigrams = bigrams(claim);
82
+ const lies = this.knownLies();
83
+ const scored = lies.map((r) => ({ row: r, score: jaccard(queryBigrams, bigrams(r.claim)) }));
84
+ scored.sort((a, b) => b.score - a.score);
85
+ const exact = scored.find((s) => s.row.claim.trim().toLowerCase() === claim.trim().toLowerCase());
86
+ const similarRefuted = scored
87
+ .filter((s) => s.row !== exact?.row && s.score >= threshold)
88
+ .slice(0, topK)
89
+ .map((s) => ({
90
+ claim: s.row.claim,
91
+ similarity: Number(s.score.toFixed(3)),
92
+ ts: s.row.ts,
93
+ evidence: s.row.evidence,
94
+ hmac: s.row.hmac,
95
+ }));
96
+ const lookupHmac = createHmac("sha256", this.hmacKey)
97
+ .update(claim + "::" + (exact?.row.hmac ?? "") + "::" + similarRefuted.map((m) => m.hmac ?? "").join("|"))
98
+ .digest("hex").slice(0, 16);
99
+ return {
100
+ query: claim,
101
+ previouslyRefuted: Boolean(exact),
102
+ exactEvidence: exact?.row.evidence,
103
+ exactHmac: exact?.row.hmac,
104
+ exactTs: exact?.row.ts,
105
+ similarRefuted,
106
+ totalKnownLies: lies.length,
107
+ lookupHmac,
108
+ };
109
+ }
110
+ /** Append a new refuted claim to the audit log + refresh index. */
111
+ appendRefuted(row) {
112
+ const hmac = row.hmac ?? createHmac("sha256", this.hmacKey).update(JSON.stringify({ ts: row.ts, claim: row.claim, verdict: row.verdict })).digest("hex").slice(0, 16);
113
+ const full = { ...row, hmac };
114
+ // best-effort append; caller may use a different writer in production
115
+ try {
116
+ const fs = require("node:fs");
117
+ fs.appendFileSync(this.auditPath, JSON.stringify(full) + "\n");
118
+ }
119
+ catch { /* */ }
120
+ this.rows.push(full);
121
+ return full;
122
+ }
123
+ /** Stats for dashboard. */
124
+ stats() {
125
+ if (!this.indexed)
126
+ this.index();
127
+ const refuted = this.rows.filter((r) => r.verdict === "REFUTED").length;
128
+ const impossible = this.rows.filter((r) => r.verdict === "IMPOSSIBLE").length;
129
+ const trustworthy = this.rows.filter((r) => r.verdict === "TRUSTWORTHY").length;
130
+ const unknown = this.rows.filter((r) => r.verdict === "UNKNOWN").length;
131
+ return { totalRows: this.rows.length, refuted, impossible, trustworthy, unknown };
132
+ }
133
+ }
134
+ //# sourceMappingURL=negspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negspace.js","sourceRoot":"","sources":["../../../src/protoplasm/super_quan/negspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8BzC,SAAS,OAAO,CAAC,CAAS;IACxB,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjG,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,OAAO,CAAC,CAAc,EAAE,CAAc;IAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,KAAK,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;IACtC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AACzC,CAAC;AAED,MAAM,OAAO,QAAQ;IAIC;IAA2B;IAHvC,IAAI,GAAe,EAAE,CAAC;IACtB,OAAO,GAAG,KAAK,CAAC;IAExB,YAAoB,SAAiB,EAAU,OAAe;QAA1C,cAAS,GAAT,SAAS,CAAQ;QAAU,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAElE,oEAAoE;IACpE,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAAC,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAAC,CAAC;QAC1G,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;gBACzC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;oBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5F,CAAC;YAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC;IACvF,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC;IACxF,CAAC;IAED,wFAAwF;IACxF,MAAM,CAAC,KAAa,EAAE,OAA8C,EAAE;QACpE,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAE5B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAClG,MAAM,cAAc,GAAoB,MAAM;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;aAC3D,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;aACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK;YAClB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE;YACZ,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ;YACxB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;SACjB,CAAC,CAAC,CAAC;QAEN,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC;aAClD,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACzG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE9B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC;YACjC,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ;YAClC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI;YAC1B,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE;YACtB,cAAc;YACd,cAAc,EAAE,IAAI,CAAC,MAAM;YAC3B,UAAU;SACX,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,aAAa,CAAC,GAA+C;QAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtK,MAAM,IAAI,GAAa,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;QACxC,sEAAsE;QACtE,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9B,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACxE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACpF,CAAC;CACF"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * 💎 #4 — Self-Test Reproducibility Score (STRS)
3
+ *
4
+ * Every Mneme release runs its own self-test, generated by Mneme, verified
5
+ * by Mneme. Recursive truth: the verifier verifies itself.
6
+ *
7
+ * 1. Generate N test probes (mix of clearly-true / clearly-false / unknown)
8
+ * 2. Run each probe through Mneme's verify primitive 3 times
9
+ * 3. Score = % probes whose verdicts are consistent across all 3 runs
10
+ * 4. Output STRS 0-100 + badge text for README
11
+ *
12
+ * STRS catches:
13
+ * - non-determinism bugs in verify pipeline
14
+ * - vaccine cache flapping
15
+ * - probe seed leakage
16
+ * - flaky retirement oracle composition
17
+ *
18
+ * Probe generation is curated (NOT random) so STRS is comparable across
19
+ * releases. Probe set is HMAC-signed for tamper detection.
20
+ */
21
+ export interface StrsProbe {
22
+ id: string;
23
+ text: string;
24
+ expectedVerdict: "TRUSTWORTHY" | "REFUTED" | "IMPOSSIBLE" | "UNKNOWN" | "any";
25
+ category: "tautology" | "contradiction" | "absolute" | "factual" | "hedged" | "self_referential";
26
+ }
27
+ export interface StrsRunResult {
28
+ probeId: string;
29
+ runs: string[];
30
+ consistent: boolean;
31
+ matchedExpected: boolean;
32
+ }
33
+ export interface StrsReport {
34
+ score: number;
35
+ totalProbes: number;
36
+ consistentProbes: number;
37
+ matchExpectedProbes: number;
38
+ perCategory: Record<string, {
39
+ total: number;
40
+ consistent: number;
41
+ matchExpected: number;
42
+ }>;
43
+ results: StrsRunResult[];
44
+ badge: string;
45
+ ranAt: string;
46
+ hmac: string;
47
+ }
48
+ /** Curated canonical probe set — version-pinned so STRS comparable across releases. */
49
+ export declare const STRS_PROBE_SET_V1: StrsProbe[];
50
+ /** Pluggable verifier — caller wires `mneme verify` or any equivalent. */
51
+ export type VerifyFn = (claim: string) => Promise<{
52
+ verdict: string;
53
+ } | {
54
+ verdict: string;
55
+ }>;
56
+ export interface StrsRunOptions {
57
+ hmacKey: string;
58
+ probes?: StrsProbe[];
59
+ runs?: number;
60
+ parallel?: boolean;
61
+ }
62
+ export declare function runStrs(verify: VerifyFn, opts: StrsRunOptions): Promise<StrsReport>;
63
+ /** Render STRS report as a README badge URL (shields.io style). */
64
+ export declare function strsBadgeUrl(report: StrsReport): string;
65
+ //# sourceMappingURL=strs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strs.d.ts","sourceRoot":"","sources":["../../../src/protoplasm/super_quan/strs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;IAC9E,QAAQ,EAAE,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,kBAAkB,CAAC;CAClG;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1F,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAoBxC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7F,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAmDzF;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAGvD"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * 💎 #4 — Self-Test Reproducibility Score (STRS)
3
+ *
4
+ * Every Mneme release runs its own self-test, generated by Mneme, verified
5
+ * by Mneme. Recursive truth: the verifier verifies itself.
6
+ *
7
+ * 1. Generate N test probes (mix of clearly-true / clearly-false / unknown)
8
+ * 2. Run each probe through Mneme's verify primitive 3 times
9
+ * 3. Score = % probes whose verdicts are consistent across all 3 runs
10
+ * 4. Output STRS 0-100 + badge text for README
11
+ *
12
+ * STRS catches:
13
+ * - non-determinism bugs in verify pipeline
14
+ * - vaccine cache flapping
15
+ * - probe seed leakage
16
+ * - flaky retirement oracle composition
17
+ *
18
+ * Probe generation is curated (NOT random) so STRS is comparable across
19
+ * releases. Probe set is HMAC-signed for tamper detection.
20
+ */
21
+ import { createHmac } from "node:crypto";
22
+ /** Curated canonical probe set — version-pinned so STRS comparable across releases. */
23
+ export const STRS_PROBE_SET_V1 = [
24
+ // tautologies — should always be TRUSTWORTHY
25
+ { id: "t1", text: "A is A.", expectedVerdict: "any", category: "tautology" },
26
+ { id: "t2", text: "1 + 1 = 2.", expectedVerdict: "any", category: "tautology" },
27
+ // contradictions — should be REFUTED or IMPOSSIBLE
28
+ { id: "c1", text: "A is A and A is not A.", expectedVerdict: "any", category: "contradiction" },
29
+ { id: "c2", text: "This statement is false.", expectedVerdict: "any", category: "self_referential" },
30
+ // absolutes — verdict should be stable across runs (consistency more important than value)
31
+ { id: "a1", text: "Mneme cures all diseases.", expectedVerdict: "any", category: "absolute" },
32
+ { id: "a2", text: "All software is bug-free.", expectedVerdict: "any", category: "absolute" },
33
+ // factual — version-specific (Mneme should ground in repo)
34
+ { id: "f1", text: "Mneme is a CLI tool.", expectedVerdict: "any", category: "factual" },
35
+ { id: "f2", text: "Mneme has at least 100 MCP tools.", expectedVerdict: "any", category: "factual" },
36
+ // hedged — opinion / unverifiable
37
+ { id: "h1", text: "Mneme could be useful for code review.", expectedVerdict: "any", category: "hedged" },
38
+ { id: "h2", text: "Local-first AI is generally preferred for privacy.", expectedVerdict: "any", category: "hedged" },
39
+ ];
40
+ export async function runStrs(verify, opts) {
41
+ const probes = opts.probes ?? STRS_PROBE_SET_V1;
42
+ const runs = opts.runs ?? 3;
43
+ const results = [];
44
+ for (const p of probes) {
45
+ const verdicts = [];
46
+ if (opts.parallel) {
47
+ const arr = await Promise.all(Array.from({ length: runs }, () => verify(p.text)));
48
+ verdicts.push(...arr.map((r) => r.verdict));
49
+ }
50
+ else {
51
+ for (let i = 0; i < runs; i++) {
52
+ const r = await verify(p.text);
53
+ verdicts.push(r.verdict);
54
+ }
55
+ }
56
+ const consistent = verdicts.every((v) => v === verdicts[0]);
57
+ const matchedExpected = p.expectedVerdict === "any" || verdicts.every((v) => v === p.expectedVerdict);
58
+ results.push({ probeId: p.id, runs: verdicts, consistent, matchedExpected });
59
+ }
60
+ const consistentProbes = results.filter((r) => r.consistent).length;
61
+ const matchExpectedProbes = results.filter((r) => r.matchedExpected).length;
62
+ const score = Math.round((consistentProbes / probes.length) * 100);
63
+ const perCategory = {};
64
+ for (const p of probes) {
65
+ if (!perCategory[p.category])
66
+ perCategory[p.category] = { total: 0, consistent: 0, matchExpected: 0 };
67
+ perCategory[p.category].total++;
68
+ const result = results.find((r) => r.probeId === p.id);
69
+ if (result.consistent)
70
+ perCategory[p.category].consistent++;
71
+ if (result.matchedExpected)
72
+ perCategory[p.category].matchExpected++;
73
+ }
74
+ const ranAt = new Date().toISOString();
75
+ const hmacBody = { score, ranAt, probeIds: probes.map((p) => p.id), runs };
76
+ const hmac = createHmac("sha256", opts.hmacKey).update(JSON.stringify(hmacBody)).digest("hex").slice(0, 16);
77
+ const badge = `STRS: ${score}/100`;
78
+ return {
79
+ score,
80
+ totalProbes: probes.length,
81
+ consistentProbes,
82
+ matchExpectedProbes,
83
+ perCategory,
84
+ results,
85
+ badge,
86
+ ranAt,
87
+ hmac,
88
+ };
89
+ }
90
+ /** Render STRS report as a README badge URL (shields.io style). */
91
+ export function strsBadgeUrl(report) {
92
+ const color = report.score >= 90 ? "brightgreen" : report.score >= 75 ? "green" : report.score >= 60 ? "yellow" : "red";
93
+ return `https://img.shields.io/badge/STRS-${report.score}%2F100-${color}?style=for-the-badge`;
94
+ }
95
+ //# sourceMappingURL=strs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strs.js","sourceRoot":"","sources":["../../../src/protoplasm/super_quan/strs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 💎 SUPER QUAN — comprehensive tests
3
+ *
4
+ * Pin invariants for DECOHERENCE / NEGSPACE / CHSH / STRS.
5
+ * All tests deterministic; no real LLM calls (use synthetic probe responses).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=super_quan.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"super_quan.test.d.ts","sourceRoot":"","sources":["../../../src/protoplasm/super_quan/super_quan.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * 💎 SUPER QUAN — comprehensive tests
3
+ *
4
+ * Pin invariants for DECOHERENCE / NEGSPACE / CHSH / STRS.
5
+ * All tests deterministic; no real LLM calls (use synthetic probe responses).
6
+ */
7
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
8
+ import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
9
+ import { tmpdir } from "node:os";
10
+ import { join } from "node:path";
11
+ import { computeDecoherence, isVerdictFresh, Negspace, computeChshWitness, defaultScoreExtractor, instantiateProbes, runStrs, strsBadgeUrl, } from "./index.js";
12
+ const KEY = "super-quan-test-key-32-chars-min";
13
+ let tmpDir;
14
+ beforeEach(() => { tmpDir = mkdtempSync(join(tmpdir(), "sq-")); });
15
+ afterEach(() => { try {
16
+ rmSync(tmpDir, { recursive: true, force: true });
17
+ }
18
+ catch { /* */ } });
19
+ describe("💎 #1 — DECOHERENCE", () => {
20
+ it("detects semver + computes short half-life", () => {
21
+ const r = computeDecoherence("Mneme v2.69.0 is the latest release");
22
+ expect(r.entities.some((e) => e.kind === "semver")).toBe(true);
23
+ expect(r.halfLifeDays).toBeLessThan(100); // semver decays fast
24
+ expect(r.halfLifeHuman).toMatch(/\d+/);
25
+ });
26
+ it("math constants → ∞ half-life", () => {
27
+ const r = computeDecoherence("π is a transcendental number");
28
+ expect(r.halfLifeHuman).toBe("∞");
29
+ });
30
+ it("file path → long half-life", () => {
31
+ const r = computeDecoherence("The auth logic lives in src/auth.ts");
32
+ expect(r.entities.some((e) => e.kind === "file_path")).toBe(true);
33
+ expect(r.halfLifeDays).toBeGreaterThan(180);
34
+ });
35
+ it("isVerdictFresh: recent verdict stays fresh", () => {
36
+ const claim = "src/auth.ts handles login";
37
+ const now = new Date();
38
+ const issuedAt = new Date(now.getTime() - 60_000).toISOString(); // 1 minute ago
39
+ const f = isVerdictFresh(claim, issuedAt, now);
40
+ expect(f.fresh).toBe(true);
41
+ expect(f.ratio).toBeLessThan(0.01);
42
+ });
43
+ it("isVerdictFresh: old semver verdict goes stale", () => {
44
+ const claim = "Node v22 is the latest LTS";
45
+ const now = new Date();
46
+ const issuedAt = new Date(now.getTime() - 365 * 86_400_000).toISOString(); // 1 year ago
47
+ const f = isVerdictFresh(claim, issuedAt, now);
48
+ expect(f.fresh).toBe(false);
49
+ expect(f.ratio).toBeGreaterThan(1);
50
+ });
51
+ it("rationale contains entity kinds", () => {
52
+ const r = computeDecoherence("Node 22 was released on 2026-04-10");
53
+ expect(r.rationale).toMatch(/version_number|date/);
54
+ });
55
+ });
56
+ describe("💎 #2 — NEGSPACE", () => {
57
+ let auditPath;
58
+ beforeEach(() => {
59
+ auditPath = join(tmpDir, "audit.jsonl");
60
+ const sample = [
61
+ { ts: "2026-04-12T00:00:00Z", claim: "useFormStatus accepts reset prop", verdict: "REFUTED", evidence: "API has no reset", hmac: "abc123", vendor: "claude" },
62
+ { ts: "2026-04-14T00:00:00Z", claim: "useFormStatus has onSubmit callback", verdict: "REFUTED", evidence: "no onSubmit in API", hmac: "def456", vendor: "gpt" },
63
+ { ts: "2026-04-15T00:00:00Z", claim: "Node 22 was released in 2030", verdict: "IMPOSSIBLE", evidence: "future date", hmac: "ghi789", vendor: "gemini" },
64
+ { ts: "2026-04-16T00:00:00Z", claim: "React 19 ships server components", verdict: "TRUSTWORTHY", evidence: "verified in docs", hmac: "ok111", vendor: "claude" },
65
+ ];
66
+ writeFileSync(auditPath, sample.map((r) => JSON.stringify(r)).join("\n"));
67
+ });
68
+ it("index: counts refuted+impossible separately from trustworthy", () => {
69
+ const ng = new Negspace(auditPath, KEY);
70
+ const r = ng.index();
71
+ expect(r.totalRows).toBe(4);
72
+ expect(r.refutedOrImpossible).toBe(3);
73
+ });
74
+ it("lookup exact match → previouslyRefuted true", () => {
75
+ const ng = new Negspace(auditPath, KEY);
76
+ const r = ng.lookup("useFormStatus accepts reset prop");
77
+ expect(r.previouslyRefuted).toBe(true);
78
+ expect(r.exactHmac).toBe("abc123");
79
+ });
80
+ it("lookup near match → similarRefuted populated", () => {
81
+ const ng = new Negspace(auditPath, KEY);
82
+ const r = ng.lookup("useFormStatus has reset callback");
83
+ expect(r.previouslyRefuted).toBe(false);
84
+ expect(r.similarRefuted.length).toBeGreaterThan(0);
85
+ });
86
+ it("trustworthy entries are NOT surfaced as refuted-similar", () => {
87
+ const ng = new Negspace(auditPath, KEY);
88
+ const r = ng.lookup("React 19 ships server components");
89
+ // exact match exists but it's TRUSTWORTHY, so previouslyRefuted=false
90
+ expect(r.previouslyRefuted).toBe(false);
91
+ });
92
+ it("stats() returns full distribution", () => {
93
+ const ng = new Negspace(auditPath, KEY);
94
+ const s = ng.stats();
95
+ expect(s.refuted).toBe(2);
96
+ expect(s.impossible).toBe(1);
97
+ expect(s.trustworthy).toBe(1);
98
+ });
99
+ });
100
+ describe("💎 #3 — CHSH WITNESS", () => {
101
+ it("classical honest responses → |S| ≤ 2", () => {
102
+ // Honest agent: responses to a/a'/b/b' are roughly independent + truth-determined
103
+ const trials = [];
104
+ for (let t = 0; t < 20; t++) {
105
+ // truthVal varies trial-to-trial (different claims) but determines all 4 probes
106
+ const truthVal = Math.random();
107
+ trials.push({ probeId: "p_a", trial: t, score: truthVal + (Math.random() - 0.5) * 0.1 }, { probeId: "p_a_prime", trial: t, score: truthVal + (Math.random() - 0.5) * 0.1 }, { probeId: "p_b", trial: t, score: truthVal + (Math.random() - 0.5) * 0.1 }, { probeId: "p_b_prime", trial: t, score: truthVal + (Math.random() - 0.5) * 0.1 });
108
+ }
109
+ const v = computeChshWitness({ responses: trials, hmacKey: KEY });
110
+ // All four probes track same truthVal → high correlations, S ~ 2 (boundary)
111
+ expect(v.trials).toBe(20);
112
+ expect(Math.abs(v.S)).toBeLessThanOrEqual(3);
113
+ expect(["honest", "suspicious", "bluffing"]).toContain(v.verdict);
114
+ });
115
+ it("constant responses (no variation) → S = 0", () => {
116
+ const trials = [];
117
+ for (let t = 0; t < 10; t++) {
118
+ trials.push({ probeId: "p_a", trial: t, score: 0.5 }, { probeId: "p_a_prime", trial: t, score: 0.5 }, { probeId: "p_b", trial: t, score: 0.5 }, { probeId: "p_b_prime", trial: t, score: 0.5 });
119
+ }
120
+ const v = computeChshWitness({ responses: trials, hmacKey: KEY });
121
+ expect(Math.abs(v.S)).toBeLessThan(0.001);
122
+ expect(v.verdict).toBe("honest");
123
+ });
124
+ it("defaultScoreExtractor: yes/no", () => {
125
+ expect(defaultScoreExtractor("Yes, that is true.")).toBe(1);
126
+ expect(defaultScoreExtractor("No, that is false.")).toBe(0);
127
+ });
128
+ it("defaultScoreExtractor: confidence numbers", () => {
129
+ expect(defaultScoreExtractor("I'd say about 75%")).toBe(0.75);
130
+ expect(defaultScoreExtractor("90 percent")).toBe(0.9);
131
+ });
132
+ it("instantiateProbes substitutes {{X}}", () => {
133
+ const probes = instantiateProbes("React 19 ships RSC");
134
+ expect(probes.length).toBe(4);
135
+ expect(probes[0].question).toContain("React 19 ships RSC");
136
+ });
137
+ it("verdict tier respects bounds", () => {
138
+ // Force a specific S by crafting responses
139
+ const trials = [];
140
+ // Perfectly correlated → E(.,.) = 1 → S could be 2 maximum classically
141
+ for (let t = 0; t < 5; t++) {
142
+ const x = t / 5;
143
+ trials.push({ probeId: "p_a", trial: t, score: x }, { probeId: "p_a_prime", trial: t, score: x }, { probeId: "p_b", trial: t, score: x }, { probeId: "p_b_prime", trial: t, score: x });
144
+ }
145
+ const v = computeChshWitness({ responses: trials, hmacKey: KEY });
146
+ expect(["honest", "suspicious", "bluffing"]).toContain(v.verdict);
147
+ });
148
+ });
149
+ describe("💎 #4 — STRS", () => {
150
+ it("100% consistent → score 100", async () => {
151
+ // Stub verifier that always returns same verdict per claim
152
+ const verify = async (claim) => ({ verdict: claim.includes("not") ? "REFUTED" : "TRUSTWORTHY" });
153
+ const r = await runStrs(verify, { hmacKey: KEY });
154
+ expect(r.score).toBe(100);
155
+ expect(r.consistentProbes).toBe(r.totalProbes);
156
+ expect(r.badge).toContain("100/100");
157
+ });
158
+ it("flaky verifier (50% random) → score < 100", async () => {
159
+ let i = 0;
160
+ const verify = async () => ({ verdict: i++ % 2 === 0 ? "REFUTED" : "TRUSTWORTHY" });
161
+ const r = await runStrs(verify, { hmacKey: KEY });
162
+ expect(r.score).toBeLessThan(100);
163
+ });
164
+ it("badge URL color scales with score", () => {
165
+ const high = { score: 95 };
166
+ const low = { score: 40 };
167
+ expect(strsBadgeUrl(high)).toContain("brightgreen");
168
+ expect(strsBadgeUrl(low)).toContain("red");
169
+ });
170
+ it("perCategory breakdown present", async () => {
171
+ const verify = async () => ({ verdict: "TRUSTWORTHY" });
172
+ const r = await runStrs(verify, { hmacKey: KEY });
173
+ expect(Object.keys(r.perCategory).length).toBeGreaterThan(0);
174
+ expect(r.perCategory.tautology?.total).toBeGreaterThanOrEqual(1);
175
+ });
176
+ it("HMAC signed report — deterministic per input", async () => {
177
+ const verify = async () => ({ verdict: "TRUSTWORTHY" });
178
+ const r1 = await runStrs(verify, { hmacKey: KEY });
179
+ // Same verify fn + same probe set → same score; HMAC stable on score+ids
180
+ expect(r1.hmac).toBeDefined();
181
+ expect(r1.hmac.length).toBe(16);
182
+ });
183
+ });
184
+ //# sourceMappingURL=super_quan.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"super_quan.test.js","sourceRoot":"","sources":["../../../src/protoplasm/super_quan/super_quan.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mneme-ai/core",
3
- "version": "2.69.0",
3
+ "version": "2.71.0",
4
4
  "description": "Core indexing, retrieval, and graph engine for Mneme",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",