@mneme-ai/core 2.19.63 → 2.19.64

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,20 @@
1
+ /**
2
+ * v2.19.64 — WASM CHRYSALIS deep tests.
3
+ *
4
+ * The invariant we PROVE: handles(WASM file on disk) = ∅ post-instantiation.
5
+ * After loadAsBytes + instantiateFromBytes, we can:
6
+ * - read the file again with openSync('r+') without EBUSY
7
+ * - rename the file
8
+ * - delete the file
9
+ * - WHILE THE INSTANTIATED MODULE'S EXPORTS REMAIN CALLABLE
10
+ *
11
+ * That last clause is the magic: it works because WebAssembly.instantiate
12
+ * deserializes into V8's heap. There is no kernel section, no symbol-
13
+ * relocation-at-runtime, no disk-page-fault dependency.
14
+ *
15
+ * We synthesize a minimal valid WASM module (a single `add` function)
16
+ * at test time so the tests work cross-platform without checking in
17
+ * binary artifacts.
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=wasm_chrysalis.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_chrysalis.test.d.ts","sourceRoot":"","sources":["../../src/wasm_chrysalis/wasm_chrysalis.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
@@ -0,0 +1,348 @@
1
+ /**
2
+ * v2.19.64 — WASM CHRYSALIS deep tests.
3
+ *
4
+ * The invariant we PROVE: handles(WASM file on disk) = ∅ post-instantiation.
5
+ * After loadAsBytes + instantiateFromBytes, we can:
6
+ * - read the file again with openSync('r+') without EBUSY
7
+ * - rename the file
8
+ * - delete the file
9
+ * - WHILE THE INSTANTIATED MODULE'S EXPORTS REMAIN CALLABLE
10
+ *
11
+ * That last clause is the magic: it works because WebAssembly.instantiate
12
+ * deserializes into V8's heap. There is no kernel section, no symbol-
13
+ * relocation-at-runtime, no disk-page-fault dependency.
14
+ *
15
+ * We synthesize a minimal valid WASM module (a single `add` function)
16
+ * at test time so the tests work cross-platform without checking in
17
+ * binary artifacts.
18
+ */
19
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
20
+ import { existsSync, mkdtempSync, writeFileSync, renameSync, unlinkSync, openSync, closeSync, rmSync, readFileSync } from "node:fs";
21
+ import { tmpdir } from "node:os";
22
+ import { join } from "node:path";
23
+ import { loadAsBytes, instantiateFromBytes, verifyHandleClosed, launchWasmFile, recordLaunch, verifyLaunchChain, summarizeManifest, lastSig, manifestPath, PROTOCOL_VERSION, } from "./index.js";
24
+ /** Hand-rolled minimal WASM: one exported function `add(i32, i32) -> i32`.
25
+ * Encoded per the WASM binary spec (module header + type/func/export/code
26
+ * sections). Sufficient to prove instantiate works without external deps. */
27
+ const MINIMAL_WASM_BYTES = new Uint8Array([
28
+ 0x00, 0x61, 0x73, 0x6d, // \0asm magic
29
+ 0x01, 0x00, 0x00, 0x00, // version 1
30
+ // Type section: 1 type, (i32, i32) -> (i32)
31
+ 0x01, 0x07, 0x01, 0x60, 0x02, 0x7f, 0x7f, 0x01, 0x7f,
32
+ // Function section: 1 function, type index 0
33
+ 0x03, 0x02, 0x01, 0x00,
34
+ // Export section: 1 export, "add" → function 0
35
+ 0x07, 0x07, 0x01, 0x03, 0x61, 0x64, 0x64, 0x00, 0x00,
36
+ // Code section: 1 body, local.get 0, local.get 1, i32.add, end
37
+ 0x0a, 0x09, 0x01, 0x07, 0x00, 0x20, 0x00, 0x20, 0x01, 0x6a, 0x0b,
38
+ ]);
39
+ describe("v2.19.64 wasm_chrysalis PROTOCOL_VERSION", () => {
40
+ it("is 1", () => {
41
+ expect(PROTOCOL_VERSION).toBe(1);
42
+ });
43
+ });
44
+ describe("v2.19.64 loadAsBytes — handle closure invariant", () => {
45
+ let sandbox;
46
+ let wasmPath;
47
+ beforeEach(() => {
48
+ sandbox = mkdtempSync(join(tmpdir(), "wasm-chrysalis-"));
49
+ wasmPath = join(sandbox, "add.wasm");
50
+ writeFileSync(wasmPath, MINIMAL_WASM_BYTES);
51
+ });
52
+ afterEach(() => {
53
+ try {
54
+ rmSync(sandbox, { recursive: true, force: true });
55
+ }
56
+ catch { /* */ }
57
+ });
58
+ it("returns bytes matching the file content", () => {
59
+ const r = loadAsBytes(wasmPath);
60
+ expect(r.sizeBytes).toBe(MINIMAL_WASM_BYTES.byteLength);
61
+ expect(Array.from(r.bytes)).toEqual(Array.from(MINIMAL_WASM_BYTES));
62
+ });
63
+ it("computes SHA-256 of the bytes", () => {
64
+ const r = loadAsBytes(wasmPath);
65
+ expect(typeof r.sha256).toBe("string");
66
+ expect(r.sha256.length).toBe(64); // 32 bytes hex
67
+ });
68
+ it("closes the file handle BEFORE returning — proven by openSync('r+') succeeding", () => {
69
+ loadAsBytes(wasmPath);
70
+ // If readFileSync had leaked a handle, this would EBUSY on Windows
71
+ const fd = openSync(wasmPath, "r+");
72
+ closeSync(fd);
73
+ // No throw = handle was closed by readFileSync
74
+ expect(true).toBe(true);
75
+ });
76
+ it("loaded bytes survive file deletion (the heart of the invariant)", () => {
77
+ const r = loadAsBytes(wasmPath);
78
+ unlinkSync(wasmPath);
79
+ expect(existsSync(wasmPath)).toBe(false);
80
+ // Bytes still readable from heap — file gone from disk but data survives
81
+ expect(r.bytes.byteLength).toBe(MINIMAL_WASM_BYTES.byteLength);
82
+ expect(r.bytes[0]).toBe(0x00);
83
+ expect(r.bytes[1]).toBe(0x61);
84
+ });
85
+ });
86
+ describe("v2.19.64 instantiateFromBytes — actually runs WASM", () => {
87
+ it("instantiates the minimal add module + exposes add(2,3)=5", async () => {
88
+ const r = await instantiateFromBytes(MINIMAL_WASM_BYTES);
89
+ expect(r.ok).toBe(true);
90
+ expect(r.instance).not.toBeNull();
91
+ expect(r.exports).not.toBeNull();
92
+ const add = r.exports["add"];
93
+ expect(typeof add).toBe("function");
94
+ expect(add(2, 3)).toBe(5);
95
+ expect(add(-10, 7)).toBe(-3);
96
+ });
97
+ it("returns ok=false on invalid bytes (never throws)", async () => {
98
+ const garbage = new Uint8Array([0xff, 0xff, 0xff, 0xff, 0xff]);
99
+ const r = await instantiateFromBytes(garbage);
100
+ expect(r.ok).toBe(false);
101
+ expect(r.error).toBeDefined();
102
+ expect(r.instance).toBeNull();
103
+ });
104
+ });
105
+ describe("v2.19.64 — THE FULL INVARIANT: file overwrite during execution", () => {
106
+ let sandbox;
107
+ let wasmPath;
108
+ beforeEach(() => {
109
+ sandbox = mkdtempSync(join(tmpdir(), "wasm-invariant-"));
110
+ wasmPath = join(sandbox, "add.wasm");
111
+ writeFileSync(wasmPath, MINIMAL_WASM_BYTES);
112
+ });
113
+ afterEach(() => {
114
+ try {
115
+ rmSync(sandbox, { recursive: true, force: true });
116
+ }
117
+ catch { /* */ }
118
+ });
119
+ it("instance keeps working after the .wasm file is OVERWRITTEN", async () => {
120
+ const { bytes } = loadAsBytes(wasmPath);
121
+ const inst = await instantiateFromBytes(bytes);
122
+ expect(inst.ok).toBe(true);
123
+ const add = inst.exports["add"];
124
+ expect(add(1, 1)).toBe(2);
125
+ // Simulate npm install overwriting the file with totally different content
126
+ writeFileSync(wasmPath, new Uint8Array([0x00, 0x00, 0x00, 0x00]));
127
+ // Instance still callable — proves no kernel-level disk dependency
128
+ expect(add(7, 8)).toBe(15);
129
+ expect(add(-5, 9)).toBe(4);
130
+ });
131
+ it("instance keeps working after the .wasm file is DELETED", async () => {
132
+ const { bytes } = loadAsBytes(wasmPath);
133
+ const inst = await instantiateFromBytes(bytes);
134
+ expect(inst.ok).toBe(true);
135
+ const add = inst.exports["add"];
136
+ unlinkSync(wasmPath);
137
+ expect(existsSync(wasmPath)).toBe(false);
138
+ expect(add(99, 1)).toBe(100); // Still callable
139
+ });
140
+ it("instance keeps working after the .wasm file is RENAMED", async () => {
141
+ const { bytes } = loadAsBytes(wasmPath);
142
+ const inst = await instantiateFromBytes(bytes);
143
+ expect(inst.ok).toBe(true);
144
+ const add = inst.exports["add"];
145
+ const newPath = join(sandbox, "renamed.wasm");
146
+ renameSync(wasmPath, newPath);
147
+ expect(existsSync(wasmPath)).toBe(false);
148
+ expect(existsSync(newPath)).toBe(true);
149
+ expect(add(10, 20)).toBe(30);
150
+ });
151
+ });
152
+ describe("v2.19.64 verifyHandleClosed", () => {
153
+ let sandbox;
154
+ let wasmPath;
155
+ beforeEach(() => {
156
+ sandbox = mkdtempSync(join(tmpdir(), "wasm-handle-check-"));
157
+ wasmPath = join(sandbox, "add.wasm");
158
+ writeFileSync(wasmPath, MINIMAL_WASM_BYTES);
159
+ });
160
+ afterEach(() => {
161
+ try {
162
+ rmSync(sandbox, { recursive: true, force: true });
163
+ }
164
+ catch { /* */ }
165
+ });
166
+ it("returns selfRead=true on a file with no holders", () => {
167
+ const r = verifyHandleClosed(wasmPath);
168
+ expect(r.selfRead).toBe(true);
169
+ expect(r.externalHolder).not.toBe("yes");
170
+ });
171
+ it("missing file → method='missing-file'", () => {
172
+ const r = verifyHandleClosed(join(sandbox, "nonexistent.wasm"));
173
+ expect(r.method).toBe("missing-file");
174
+ expect(r.selfRead).toBe(false);
175
+ });
176
+ it("after loadAsBytes, file is still open-able (handle WAS closed)", () => {
177
+ loadAsBytes(wasmPath);
178
+ const r = verifyHandleClosed(wasmPath);
179
+ expect(r.selfRead).toBe(true);
180
+ });
181
+ it("after instantiate, file is still open-able (the killer test)", async () => {
182
+ const { bytes } = loadAsBytes(wasmPath);
183
+ const inst = await instantiateFromBytes(bytes);
184
+ expect(inst.ok).toBe(true);
185
+ // V8 holds the compiled module in its heap, but the FILE has no handle
186
+ const r = verifyHandleClosed(wasmPath);
187
+ expect(r.selfRead).toBe(true);
188
+ expect(r.externalHolder).not.toBe("yes");
189
+ });
190
+ });
191
+ describe("v2.19.64 launch manifest (HMAC chain)", () => {
192
+ let savedSecret;
193
+ let savedPath;
194
+ let sandboxManifest;
195
+ beforeEach(() => {
196
+ savedSecret = process.env["MNEME_LAUNCH_MANIFEST_SECRET"];
197
+ savedPath = process.env["MNEME_LAUNCH_MANIFEST_PATH"];
198
+ process.env["MNEME_LAUNCH_MANIFEST_SECRET"] = "test-secret-" + Date.now();
199
+ sandboxManifest = join(mkdtempSync(join(tmpdir(), "wasm-manifest-")), "launch.jsonl");
200
+ process.env["MNEME_LAUNCH_MANIFEST_PATH"] = sandboxManifest;
201
+ });
202
+ afterEach(() => {
203
+ try {
204
+ rmSync(join(sandboxManifest, ".."), { recursive: true, force: true });
205
+ }
206
+ catch { /* */ }
207
+ if (savedSecret !== undefined)
208
+ process.env["MNEME_LAUNCH_MANIFEST_SECRET"] = savedSecret;
209
+ else
210
+ delete process.env["MNEME_LAUNCH_MANIFEST_SECRET"];
211
+ if (savedPath !== undefined)
212
+ process.env["MNEME_LAUNCH_MANIFEST_PATH"] = savedPath;
213
+ else
214
+ delete process.env["MNEME_LAUNCH_MANIFEST_PATH"];
215
+ });
216
+ it("recordLaunch appends a valid entry with HMAC sig", () => {
217
+ const e = recordLaunch({ phase: "load-as-bytes", path: "/test/a.wasm", sha256: "abc", bytes: 100, durationMs: 5 });
218
+ expect(e).not.toBeNull();
219
+ expect(e.phase).toBe("load-as-bytes");
220
+ expect(typeof e.sig).toBe("string");
221
+ expect(e.sig.length).toBe(64);
222
+ });
223
+ it("manifestPath() honors MNEME_LAUNCH_MANIFEST_PATH override (test isolation)", () => {
224
+ const p = manifestPath();
225
+ expect(p).toBe(sandboxManifest);
226
+ });
227
+ it("readManifest + verifyLaunchChain roundtrip cleanly", () => {
228
+ recordLaunch({ phase: "load-as-bytes", path: "/x.wasm", sha256: "h1", bytes: 100, durationMs: 1 });
229
+ recordLaunch({ phase: "instantiate", path: "/x.wasm", sha256: "h1", bytes: 100, durationMs: 2 });
230
+ recordLaunch({ phase: "launch-complete", path: "/x.wasm", sha256: "h1", bytes: 100, durationMs: 3 });
231
+ const v = verifyLaunchChain();
232
+ expect(v.chainOk).toBe(true);
233
+ expect(v.totalEntries).toBeGreaterThanOrEqual(3);
234
+ });
235
+ it("lastSig matches most-recent entry's sig", () => {
236
+ const e1 = recordLaunch({ phase: "load-as-bytes", path: "/y.wasm", sha256: "h2", bytes: 50, durationMs: 1 });
237
+ expect(lastSig()).toBe(e1.sig);
238
+ });
239
+ it("summarizeManifest counts phases correctly", () => {
240
+ recordLaunch({ phase: "load-as-bytes", path: "/z.wasm", sha256: "h3", bytes: 100, durationMs: 1 });
241
+ recordLaunch({ phase: "instantiate", path: "/z.wasm", sha256: "h3", bytes: 100, durationMs: 2 });
242
+ recordLaunch({ phase: "handle-verified", path: "/z.wasm", sha256: "h3", bytes: 100, durationMs: 1 });
243
+ recordLaunch({ phase: "launch-complete", path: "/z.wasm", sha256: "h3", bytes: 100, durationMs: 5 });
244
+ const s = summarizeManifest();
245
+ expect(s.totalEntries).toBeGreaterThanOrEqual(4);
246
+ expect(s.phaseCounts["load-as-bytes"]).toBeGreaterThanOrEqual(1);
247
+ expect(s.phaseCounts["launch-complete"]).toBeGreaterThanOrEqual(1);
248
+ expect(s.totalLaunchCompletes).toBeGreaterThanOrEqual(1);
249
+ expect(s.lastLaunch?.path).toBe("/z.wasm");
250
+ expect(s.chainOk).toBe(true);
251
+ });
252
+ });
253
+ describe("v2.19.64 launchWasmFile — composed pipeline", () => {
254
+ let sandbox;
255
+ let wasmPath;
256
+ let savedSecret;
257
+ let savedPath;
258
+ beforeEach(() => {
259
+ sandbox = mkdtempSync(join(tmpdir(), "wasm-pipeline-"));
260
+ wasmPath = join(sandbox, "pipeline.wasm");
261
+ writeFileSync(wasmPath, MINIMAL_WASM_BYTES);
262
+ savedSecret = process.env["MNEME_LAUNCH_MANIFEST_SECRET"];
263
+ savedPath = process.env["MNEME_LAUNCH_MANIFEST_PATH"];
264
+ process.env["MNEME_LAUNCH_MANIFEST_SECRET"] = "pipeline-test-" + Date.now();
265
+ process.env["MNEME_LAUNCH_MANIFEST_PATH"] = join(sandbox, "launch.jsonl");
266
+ });
267
+ afterEach(() => {
268
+ try {
269
+ rmSync(sandbox, { recursive: true, force: true });
270
+ }
271
+ catch { /* */ }
272
+ if (savedSecret !== undefined)
273
+ process.env["MNEME_LAUNCH_MANIFEST_SECRET"] = savedSecret;
274
+ else
275
+ delete process.env["MNEME_LAUNCH_MANIFEST_SECRET"];
276
+ if (savedPath !== undefined)
277
+ process.env["MNEME_LAUNCH_MANIFEST_PATH"] = savedPath;
278
+ else
279
+ delete process.env["MNEME_LAUNCH_MANIFEST_PATH"];
280
+ });
281
+ it("end-to-end: load + instantiate + verify handle + manifest entries", async () => {
282
+ const r = await launchWasmFile(wasmPath);
283
+ expect(r.load).not.toBeNull();
284
+ expect(r.instantiate.ok).toBe(true);
285
+ expect(r.handleCheck.selfRead).toBe(true);
286
+ expect(r.invariantHeld).toBe(true);
287
+ expect(r.manifestEntries).toBeGreaterThanOrEqual(3);
288
+ });
289
+ it("opt-out of manifest recording", async () => {
290
+ const r = await launchWasmFile(wasmPath, { recordManifest: false });
291
+ expect(r.manifestEntries).toBe(0);
292
+ expect(r.invariantHeld).toBe(true);
293
+ });
294
+ it("on missing file: invariantHeld=false (graceful, no throw)", async () => {
295
+ const r = await launchWasmFile(join(sandbox, "nope.wasm"));
296
+ expect(r.invariantHeld).toBe(false);
297
+ });
298
+ it("instance from pipeline still callable after file deleted", async () => {
299
+ const r = await launchWasmFile(wasmPath);
300
+ expect(r.invariantHeld).toBe(true);
301
+ const add = r.instantiate.exports["add"];
302
+ expect(add(3, 4)).toBe(7);
303
+ unlinkSync(wasmPath);
304
+ expect(add(100, 1)).toBe(101); // SURVIVED file deletion
305
+ });
306
+ });
307
+ describe("v2.19.64 chain integrity (tamper detection)", () => {
308
+ let savedSecret;
309
+ let savedPath;
310
+ let sandbox;
311
+ beforeEach(() => {
312
+ savedSecret = process.env["MNEME_LAUNCH_MANIFEST_SECRET"];
313
+ savedPath = process.env["MNEME_LAUNCH_MANIFEST_PATH"];
314
+ process.env["MNEME_LAUNCH_MANIFEST_SECRET"] = "tamper-test-" + Date.now();
315
+ sandbox = mkdtempSync(join(tmpdir(), "wasm-tamper-"));
316
+ process.env["MNEME_LAUNCH_MANIFEST_PATH"] = join(sandbox, "launch.jsonl");
317
+ });
318
+ afterEach(() => {
319
+ try {
320
+ rmSync(sandbox, { recursive: true, force: true });
321
+ }
322
+ catch { /* */ }
323
+ if (savedSecret !== undefined)
324
+ process.env["MNEME_LAUNCH_MANIFEST_SECRET"] = savedSecret;
325
+ else
326
+ delete process.env["MNEME_LAUNCH_MANIFEST_SECRET"];
327
+ if (savedPath !== undefined)
328
+ process.env["MNEME_LAUNCH_MANIFEST_PATH"] = savedPath;
329
+ else
330
+ delete process.env["MNEME_LAUNCH_MANIFEST_PATH"];
331
+ });
332
+ it("detects tampered phase field", () => {
333
+ recordLaunch({ phase: "load-as-bytes", path: "/t.wasm", sha256: "x", bytes: 1, durationMs: 1 });
334
+ recordLaunch({ phase: "launch-complete", path: "/t.wasm", sha256: "x", bytes: 1, durationMs: 1 });
335
+ const p = manifestPath();
336
+ const lines = readFileSync(p, "utf8").trim().split("\n");
337
+ // Tamper the second-to-last entry
338
+ const targetIdx = lines.length - 2;
339
+ const tampered = JSON.parse(lines[targetIdx]);
340
+ tampered.phase = "fallback-to-native";
341
+ lines[targetIdx] = JSON.stringify(tampered);
342
+ writeFileSync(p, lines.join("\n") + "\n", "utf8");
343
+ const v = verifyLaunchChain();
344
+ expect(v.chainOk).toBe(false);
345
+ expect(v.brokenAtIndex).toBe(targetIdx);
346
+ });
347
+ });
348
+ //# sourceMappingURL=wasm_chrysalis.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_chrysalis.test.js","sourceRoot":"","sources":["../../src/wasm_chrysalis/wasm_chrysalis.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.19.63",
3
+ "version": "2.19.64",
4
4
  "description": "Core indexing, retrieval, and graph engine for Mneme",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",