@mneme-ai/core 2.90.0 β†’ 2.91.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.
@@ -0,0 +1,136 @@
1
+ /**
2
+ * v2.91.0 β€” πŸ’Žβ‘₯ ANAMNESIS tests (compute once, recollect forever).
3
+ *
4
+ * N1 canonicalForm β€” meaning-preserving paraphrase collapse (arith forms, words, commutative sort, case/space)
5
+ * N2 NO false collision β€” word order preserved; different values β‰ ; non-commutative not sorted
6
+ * N3 recollect-or-recompute β€” first computes, repeat recollects (~0), compute runs exactly once
7
+ * N4 re-verify EVERY hit β€” tampered body / forged sig / stale / invalidated all force recompute
8
+ * N5 freshness window β€” within ttl β†’ recollect, past ttl β†’ recompute; ttl 0 = eternal axiom
9
+ * N6 energy ledger β€” anamnesisStats totals + mintEnergyCertificate signs the savings
10
+ * N7 cross-vendor export/import β€” added, idempotent, forged (claim-swap) dropped
11
+ * N8 Anamnesis Gauntlet β€” recollection-rate > 0 AND stale-serve-rate === 0
12
+ * N9 QUAN β€” never throws over fuzz; always 3-valued
13
+ */
14
+ import { describe, it, expect } from "vitest";
15
+ import { mkdtempSync, readFileSync, writeFileSync } from "node:fs";
16
+ import { tmpdir } from "node:os";
17
+ import { join } from "node:path";
18
+ import { canonicalForm, canonicalClaimKey, recollectOrCompute, recollectAssertion, isTrustworthy, invalidate, anamnesisStats, mintEnergyCertificate, exportProofs, importProofs, runAnamnesisGauntlet, } from "./anamnesis.js";
19
+ function repo() { return mkdtempSync(join(tmpdir(), "anamnesis-")); }
20
+ const T = 1_700_000_000_000;
21
+ const storeFile = (r) => join(r, ".mneme", "anamnesis", "proofs.jsonl");
22
+ const proveTrue = (costTokens = 1800, ttlMs = 0) => () => Promise.resolve({ verdict: "TRUE", lineage: [{ sensor: "flash", verdict: "TRUE", weight: 1 }], ttlMs, costTokens });
23
+ describe("v2.91.0 πŸ’Žβ‘₯ ANAMNESIS β€” compute once, recollect forever", () => {
24
+ it("N1 canonicalForm β€” meaning-preserving paraphrase collapse", () => {
25
+ const k = (s) => canonicalClaimKey(s);
26
+ // four arithmetic paraphrases β†’ one key
27
+ expect(new Set(["2+2=4", "2 + 2 = 4", "two plus two equals four", "4 = 2 + 2"].map(k)).size).toBe(1);
28
+ // commutative operands sorted (3*4 ≑ 4*3)
29
+ expect(k("3*4=12")).toBe(k("4*3=12"));
30
+ expect(k("5+7=12")).toBe(k("7+5=12"));
31
+ // case + whitespace + trailing punctuation
32
+ expect(k("React 19 ships RSC")).toBe(k("react 19 ships rsc."));
33
+ // number-words in prose
34
+ expect(canonicalForm("ten times ten = 100")).toBe(canonicalForm("10*10=100"));
35
+ });
36
+ it("N2 NO false collision β€” the savant won't trade safety for hit-rate", () => {
37
+ const k = (s) => canonicalClaimKey(s);
38
+ expect(k("dog bites man")).not.toBe(k("man bites dog")); // word order is meaning
39
+ expect(k("2+2=4")).not.toBe(k("2+2=5")); // different value
40
+ expect(k("10-3=7")).not.toBe(k("3-10=7")); // subtraction NOT commutative β†’ not sorted
41
+ });
42
+ it("N3 recollect-or-recompute β€” compute runs exactly once across repeats + paraphrases", async () => {
43
+ const r = repo();
44
+ let computeCalls = 0;
45
+ const compute = () => { computeCalls++; return proveTrue(1800, 0)(); };
46
+ const a = await recollectOrCompute(r, "2+2=4", compute, { now: T, agent: "claude" });
47
+ const b = await recollectOrCompute(r, "2 + 2 = 4", compute, { now: T + 10, agent: "gpt" }); // paraphrase
48
+ const c = await recollectOrCompute(r, "two plus two equals four", compute, { now: T + 20 }); // paraphrase
49
+ expect(a.source).toBe("recompute");
50
+ expect(b.source).toBe("recollect");
51
+ expect(c.source).toBe("recollect");
52
+ expect(b.energySavedTokens).toBe(1800);
53
+ expect(computeCalls).toBe(1); // ← the whole point: proven once, recollected forever
54
+ });
55
+ it("N4 re-verify EVERY hit β€” tampered body / forged sig / invalidated all force recompute", async () => {
56
+ // (a) tamper the stored verdict in the jsonl β†’ next ask must recompute (body β‰  signed payload)
57
+ {
58
+ const r = repo();
59
+ await recollectOrCompute(r, "2+2=4", proveTrue(), { now: T });
60
+ const rec = JSON.parse(readFileSync(storeFile(r), "utf8").trim());
61
+ rec.verdict = "FALSE";
62
+ writeFileSync(storeFile(r), JSON.stringify(rec) + "\n", "utf8");
63
+ const again = await recollectOrCompute(r, "2+2=4", proveTrue(), { now: T + 5 });
64
+ expect(again.source).toBe("recompute");
65
+ expect(again.reason).toBe("forged");
66
+ }
67
+ // (b) invalidate β†’ recompute
68
+ {
69
+ const r = repo();
70
+ await recollectOrCompute(r, "the version is 1.2", proveTrue(1800, 999999), { now: T });
71
+ expect(invalidate(r, "the version is 1.2", "shipped 1.3")).toBe(true);
72
+ const again = await recollectOrCompute(r, "the version is 1.2", proveTrue(1800, 999999), { now: T + 5 });
73
+ expect(again.source).toBe("recompute");
74
+ expect(again.reason).toBe("invalidated");
75
+ }
76
+ });
77
+ it("N5 freshness window β€” within ttl recollect, past ttl recompute; ttl 0 eternal", async () => {
78
+ const r = repo();
79
+ await recollectOrCompute(r, "weather is sunny today", proveTrue(1800, 1000), { now: T }); // 1s ttl
80
+ expect((await recollectOrCompute(r, "weather is sunny today", proveTrue(1800, 1000), { now: T + 500 })).source).toBe("recollect");
81
+ expect((await recollectOrCompute(r, "weather is sunny today", proveTrue(1800, 1000), { now: T + 5000 })).source).toBe("recompute"); // stale
82
+ // eternal axiom (ttl 0) recollects far in the future
83
+ const r2 = repo();
84
+ await recollectOrCompute(r2, "2+2=4", proveTrue(1800, 0), { now: T });
85
+ expect((await recollectOrCompute(r2, "2+2=4", proveTrue(1800, 0), { now: T + 10 ** 12 })).source).toBe("recollect");
86
+ });
87
+ it("N6 energy ledger β€” stats total + signed savings certificate", async () => {
88
+ const r = repo();
89
+ await recollectOrCompute(r, "2+2=4", proveTrue(1800, 0), { now: T });
90
+ await recollectOrCompute(r, "2+2=4", proveTrue(1800, 0), { now: T + 1 });
91
+ await recollectOrCompute(r, "2+2=4", proveTrue(1800, 0), { now: T + 2 });
92
+ const s = anamnesisStats(r);
93
+ expect(s.records).toBe(1);
94
+ expect(s.recollections).toBe(2);
95
+ expect(s.totalEnergySavedTokens).toBe(3600); // 2 recollections Γ— 1800
96
+ const cert = await mintEnergyCertificate(r, { windowStartMs: T, windowEndMs: T + 10 });
97
+ expect(cert.totalTokensSaved).toBe(3600);
98
+ expect(typeof cert.hmac).toBe("string");
99
+ });
100
+ it("N7 cross-vendor export/import β€” added, idempotent, forged claim-swap dropped", async () => {
101
+ const a = repo();
102
+ await recollectOrCompute(a, "2+2=4", proveTrue(), { now: T });
103
+ await recollectOrCompute(a, "10*10=100", proveTrue(), { now: T });
104
+ const bundle = exportProofs(a, "agentA");
105
+ expect(bundle.proofs.length).toBe(2);
106
+ const dest = repo();
107
+ expect(importProofs(dest, bundle).added).toBe(2);
108
+ expect(importProofs(dest, bundle).duplicate).toBe(2); // idempotent
109
+ // forge: swap a claimKey but keep the (now-mismatched) valid signature β†’ dropped
110
+ const forged = JSON.parse(JSON.stringify(bundle));
111
+ forged.proofs[0].claimKey = "deadbeef";
112
+ expect(importProofs(repo(), forged).rejectedForged).toBe(1);
113
+ });
114
+ it("N8 Anamnesis Gauntlet β€” recollection-rate > 0 AND stale-serve-rate 0%", async () => {
115
+ const g = await runAnamnesisGauntlet(repo(), [
116
+ "2+2=4", "2 + 2 = 4", "two plus two equals four", "10*10=100", "ten times ten = 100", "2+2=4",
117
+ ], { now: T });
118
+ expect(g.recollectionRate).toBeGreaterThan(0);
119
+ expect(g.staleServeRate).toBe(0); // never serves an unre-verifiable proof
120
+ expect(g.energySavedTokens).toBeGreaterThan(0);
121
+ expect(g.recomputes).toBe(2); // only 2 distinct facts
122
+ });
123
+ it("N9 QUAN β€” never throws over fuzz; always 3-valued; isTrustworthy total", async () => {
124
+ const r = repo();
125
+ for (let i = 0; i < 40; i++) {
126
+ const claim = ["", " ", `${i}+${i}=${i * 2}`, `claim ${i}`, "weirdο»Ώchars", `${i} is not ${i}`][i % 6];
127
+ const out = await recollectAssertion(r, claim, { now: T });
128
+ expect(["TRUE", "FALSE", "UNKNOWN"]).toContain(out.verdict);
129
+ }
130
+ expect(() => canonicalForm("")).not.toThrow();
131
+ expect(() => anamnesisStats(r)).not.toThrow();
132
+ const fakeRec = { claimKey: "x", verdict: "TRUE", receipt: null, ttlMs: 0, computedAt: 0, invalidated: false };
133
+ expect(isTrustworthy(fakeRec, T)).toBe(false); // unsigned β‡’ never trustworthy
134
+ });
135
+ });
136
+ //# sourceMappingURL=anamnesis.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis.test.js","sourceRoot":"","sources":["../../src/truth_kernel/anamnesis.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.90.0",
3
+ "version": "2.91.0",
4
4
  "description": "Core indexing, retrieval, and graph engine for Mneme",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",