@remnic/core 10.0.102 → 10.0.104

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "10.0.102",
3
+ "version": "10.0.104",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3386,7 +3386,7 @@
3386
3386
  "core"
3387
3387
  ],
3388
3388
  "peerDependencies": {
3389
- "@remnic/coding-graph": "^10.0.102"
3389
+ "@remnic/coding-graph": "^10.0.104"
3390
3390
  },
3391
3391
  "peerDependenciesMeta": {
3392
3392
  "@remnic/coding-graph": {
@@ -333,6 +333,26 @@ test("an ineligible source's invalid_at does not end the cache entry", async (t)
333
333
  });
334
334
  });
335
335
 
336
+ test("a private support passport source's invalid_at does not end the cache entry", async (t) => {
337
+ await withDir(async (memoryDir, storage) => {
338
+ const start = Date.now();
339
+ const clock = t.mock.method(Date, "now", () => start);
340
+ const live = await storage.writeMemory("fact", "rho eligible fact", { source: "test" });
341
+ const card = await storage.writeMemory("fact", "rho passport card fact", {
342
+ source: "test",
343
+ tags: ["support-passport-card"],
344
+ invalidAt: new Date(start + 10_000).toISOString(),
345
+ });
346
+ await recordAbstractionNode({ memoryDir, node: node("n1", "rho mixed fact", [live.id, card.id]) });
347
+ assert.equal((await read(memoryDir)).nodes.length, 1);
348
+ const before = { ...harmonicGraphCacheStats };
349
+ clock.mock.mockImplementation(() => start + 20_000);
350
+ assert.equal((await read(memoryDir)).nodes.length, 1);
351
+ assert.equal(harmonicGraphCacheStats.misses, before.misses, "the passport source's invalid_at passing starts no rebuild");
352
+ assert.equal(harmonicGraphCacheStats.hits, before.hits + 1);
353
+ });
354
+ });
355
+
336
356
  // Unreadable node store: a file where the nodes directory belongs is not ENOENT, so the strict listing throws
337
357
  // (a corrupt node file would not: readAbstractionNodes skips those on purpose).
338
358
  async function breakNodeStore(memoryDir: string) {