@remnic/core 9.6.23 → 9.6.25

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 (45) hide show
  1. package/dist/access-admin-ops-surface.js +1 -1
  2. package/dist/access-boundary.js +1 -1
  3. package/dist/access-cli.js +4 -4
  4. package/dist/access-http.js +3 -3
  5. package/dist/access-identity-continuity-surface.js +1 -1
  6. package/dist/access-lcm-surface.js +1 -1
  7. package/dist/access-mcp.js +2 -2
  8. package/dist/access-observe-write-surface.js +1 -1
  9. package/dist/access-operations-batch.js +1 -1
  10. package/dist/access-operations.d.ts +3 -3
  11. package/dist/access-operations.js +1 -1
  12. package/dist/access-recall-surface.js +1 -1
  13. package/dist/access-schema.d.ts +64 -64
  14. package/dist/access-service.js +1 -1
  15. package/dist/{chunk-KEY3FEMP.js → chunk-43VNWTBB.js} +3 -3
  16. package/dist/{chunk-A2OFRQ5B.js → chunk-N6VIXDT7.js} +2 -2
  17. package/dist/{chunk-ERA5RSMZ.js → chunk-P32IDSHD.js} +1 -1
  18. package/dist/{chunk-ERA5RSMZ.js.map → chunk-P32IDSHD.js.map} +1 -1
  19. package/dist/{chunk-D3D677BV.js → chunk-QLYLTKUG.js} +4 -4
  20. package/dist/{chunk-D3D677BV.js.map → chunk-QLYLTKUG.js.map} +1 -1
  21. package/dist/cli.js +4 -4
  22. package/dist/coding/coding-graph-types.d.ts +23 -1
  23. package/dist/coding/coding-graph-types.js +1 -1
  24. package/dist/coding/optional-coding-graph.js +1 -1
  25. package/dist/index.js +4 -4
  26. package/dist/orchestrator.js +4 -4
  27. package/dist/schemas.d.ts +74 -74
  28. package/dist/shared-context/manager.d.ts +8 -8
  29. package/dist/transfer/types.d.ts +66 -66
  30. package/package.json +2 -2
  31. package/src/access-http.test.ts +2 -2
  32. package/src/access-mcp.test.ts +2 -2
  33. package/src/access-mcp.ts +3 -3
  34. package/src/access-service-coding-write.test.ts +18 -18
  35. package/src/access-service-lcm-forgery.test.ts +5 -5
  36. package/src/access-service-observe-lcm-parity.test.ts +25 -25
  37. package/src/access-service-observe-scope.test.ts +16 -16
  38. package/src/access-service-project-tag.test.ts +2 -2
  39. package/src/access-service-raw-excerpt-read-gate.test.ts +1 -1
  40. package/src/coding/coding-graph-types.ts +23 -0
  41. package/src/coding/coding-namespace.test.ts +3 -3
  42. package/src/coding/wire-coding-context.test.ts +22 -22
  43. package/src/issue-1492-coding-mode-consistency.test.ts +2 -2
  44. /package/dist/{chunk-KEY3FEMP.js.map → chunk-43VNWTBB.js.map} +0 -0
  45. /package/dist/{chunk-A2OFRQ5B.js.map → chunk-N6VIXDT7.js.map} +0 -0
@@ -20,26 +20,26 @@ declare const ExportManifestV1Schema: z.ZodObject<{
20
20
  bytes: number;
21
21
  }>, "many">;
22
22
  }, "strip", z.ZodTypeAny, {
23
- format: "openclaw-engram-export";
23
+ schemaVersion: 1;
24
24
  createdAt: string;
25
- pluginVersion: string;
26
25
  files: {
27
26
  path: string;
28
27
  sha256: string;
29
28
  bytes: number;
30
29
  }[];
31
- schemaVersion: 1;
30
+ format: "openclaw-engram-export";
31
+ pluginVersion: string;
32
32
  includesTranscripts: boolean;
33
33
  }, {
34
- format: "openclaw-engram-export";
34
+ schemaVersion: 1;
35
35
  createdAt: string;
36
- pluginVersion: string;
37
36
  files: {
38
37
  path: string;
39
38
  sha256: string;
40
39
  bytes: number;
41
40
  }[];
42
- schemaVersion: 1;
41
+ format: "openclaw-engram-export";
42
+ pluginVersion: string;
43
43
  includesTranscripts: boolean;
44
44
  }>;
45
45
  type ExportManifestV1 = z.infer<typeof ExportManifestV1Schema>;
@@ -75,26 +75,26 @@ declare const ExportBundleV1Schema: z.ZodObject<{
75
75
  bytes: number;
76
76
  }>, "many">;
77
77
  }, "strip", z.ZodTypeAny, {
78
- format: "openclaw-engram-export";
78
+ schemaVersion: 1;
79
79
  createdAt: string;
80
- pluginVersion: string;
81
80
  files: {
82
81
  path: string;
83
82
  sha256: string;
84
83
  bytes: number;
85
84
  }[];
86
- schemaVersion: 1;
85
+ format: "openclaw-engram-export";
86
+ pluginVersion: string;
87
87
  includesTranscripts: boolean;
88
88
  }, {
89
- format: "openclaw-engram-export";
89
+ schemaVersion: 1;
90
90
  createdAt: string;
91
- pluginVersion: string;
92
91
  files: {
93
92
  path: string;
94
93
  sha256: string;
95
94
  bytes: number;
96
95
  }[];
97
- schemaVersion: 1;
96
+ format: "openclaw-engram-export";
97
+ pluginVersion: string;
98
98
  includesTranscripts: boolean;
99
99
  }>;
100
100
  records: z.ZodArray<z.ZodObject<{
@@ -109,15 +109,15 @@ declare const ExportBundleV1Schema: z.ZodObject<{
109
109
  }>, "many">;
110
110
  }, "strip", z.ZodTypeAny, {
111
111
  manifest: {
112
- format: "openclaw-engram-export";
112
+ schemaVersion: 1;
113
113
  createdAt: string;
114
- pluginVersion: string;
115
114
  files: {
116
115
  path: string;
117
116
  sha256: string;
118
117
  bytes: number;
119
118
  }[];
120
- schemaVersion: 1;
119
+ format: "openclaw-engram-export";
120
+ pluginVersion: string;
121
121
  includesTranscripts: boolean;
122
122
  };
123
123
  records: {
@@ -126,15 +126,15 @@ declare const ExportBundleV1Schema: z.ZodObject<{
126
126
  }[];
127
127
  }, {
128
128
  manifest: {
129
- format: "openclaw-engram-export";
129
+ schemaVersion: 1;
130
130
  createdAt: string;
131
- pluginVersion: string;
132
131
  files: {
133
132
  path: string;
134
133
  sha256: string;
135
134
  bytes: number;
136
135
  }[];
137
- schemaVersion: 1;
136
+ format: "openclaw-engram-export";
137
+ pluginVersion: string;
138
138
  includesTranscripts: boolean;
139
139
  };
140
140
  records: {
@@ -313,16 +313,16 @@ declare const CapsuleBlockSchema: z.ZodObject<{
313
313
  peerProfiles: boolean;
314
314
  }>;
315
315
  }, "strip", z.ZodTypeAny, {
316
+ schemaVersion: string;
316
317
  includes: {
317
318
  procedural: boolean;
318
319
  taxonomy: boolean;
319
320
  identityAnchors: boolean;
320
321
  peerProfiles: boolean;
321
322
  };
322
- description: string;
323
323
  id: string;
324
- schemaVersion: string;
325
324
  version: string;
325
+ description: string;
326
326
  parentCapsule: string | null;
327
327
  retrievalPolicy: {
328
328
  tierWeights: Record<string, number>;
@@ -334,16 +334,16 @@ declare const CapsuleBlockSchema: z.ZodObject<{
334
334
  forkRoot: string;
335
335
  } | null;
336
336
  }, {
337
+ schemaVersion: string;
337
338
  includes: {
338
339
  procedural: boolean;
339
340
  taxonomy: boolean;
340
341
  identityAnchors: boolean;
341
342
  peerProfiles: boolean;
342
343
  };
343
- description: string;
344
344
  id: string;
345
- schemaVersion: string;
346
345
  version: string;
346
+ description: string;
347
347
  parentCapsule: string | null;
348
348
  retrievalPolicy: {
349
349
  tierWeights: Record<string, number>;
@@ -464,16 +464,16 @@ declare const ExportManifestV2Schema: z.ZodObject<{
464
464
  peerProfiles: boolean;
465
465
  }>;
466
466
  }, "strip", z.ZodTypeAny, {
467
+ schemaVersion: string;
467
468
  includes: {
468
469
  procedural: boolean;
469
470
  taxonomy: boolean;
470
471
  identityAnchors: boolean;
471
472
  peerProfiles: boolean;
472
473
  };
473
- description: string;
474
474
  id: string;
475
- schemaVersion: string;
476
475
  version: string;
476
+ description: string;
477
477
  parentCapsule: string | null;
478
478
  retrievalPolicy: {
479
479
  tierWeights: Record<string, number>;
@@ -485,16 +485,16 @@ declare const ExportManifestV2Schema: z.ZodObject<{
485
485
  forkRoot: string;
486
486
  } | null;
487
487
  }, {
488
+ schemaVersion: string;
488
489
  includes: {
489
490
  procedural: boolean;
490
491
  taxonomy: boolean;
491
492
  identityAnchors: boolean;
492
493
  peerProfiles: boolean;
493
494
  };
494
- description: string;
495
495
  id: string;
496
- schemaVersion: string;
497
496
  version: string;
497
+ description: string;
498
498
  parentCapsule: string | null;
499
499
  retrievalPolicy: {
500
500
  tierWeights: Record<string, number>;
@@ -507,25 +507,27 @@ declare const ExportManifestV2Schema: z.ZodObject<{
507
507
  } | null | undefined;
508
508
  }>;
509
509
  }, "strip", z.ZodTypeAny, {
510
- format: "openclaw-engram-export";
510
+ schemaVersion: 2;
511
511
  createdAt: string;
512
- pluginVersion: string;
513
512
  files: {
514
513
  path: string;
515
514
  sha256: string;
516
515
  bytes: number;
517
516
  }[];
517
+ format: "openclaw-engram-export";
518
+ pluginVersion: string;
519
+ includesTranscripts: boolean;
518
520
  capsule: {
521
+ schemaVersion: string;
519
522
  includes: {
520
523
  procedural: boolean;
521
524
  taxonomy: boolean;
522
525
  identityAnchors: boolean;
523
526
  peerProfiles: boolean;
524
527
  };
525
- description: string;
526
528
  id: string;
527
- schemaVersion: string;
528
529
  version: string;
530
+ description: string;
529
531
  parentCapsule: string | null;
530
532
  retrievalPolicy: {
531
533
  tierWeights: Record<string, number>;
@@ -537,28 +539,28 @@ declare const ExportManifestV2Schema: z.ZodObject<{
537
539
  forkRoot: string;
538
540
  } | null;
539
541
  };
540
- schemaVersion: 2;
541
- includesTranscripts: boolean;
542
542
  }, {
543
- format: "openclaw-engram-export";
543
+ schemaVersion: 2;
544
544
  createdAt: string;
545
- pluginVersion: string;
546
545
  files: {
547
546
  path: string;
548
547
  sha256: string;
549
548
  bytes: number;
550
549
  }[];
550
+ format: "openclaw-engram-export";
551
+ pluginVersion: string;
552
+ includesTranscripts: boolean;
551
553
  capsule: {
554
+ schemaVersion: string;
552
555
  includes: {
553
556
  procedural: boolean;
554
557
  taxonomy: boolean;
555
558
  identityAnchors: boolean;
556
559
  peerProfiles: boolean;
557
560
  };
558
- description: string;
559
561
  id: string;
560
- schemaVersion: string;
561
562
  version: string;
563
+ description: string;
562
564
  parentCapsule: string | null;
563
565
  retrievalPolicy: {
564
566
  tierWeights: Record<string, number>;
@@ -570,8 +572,6 @@ declare const ExportManifestV2Schema: z.ZodObject<{
570
572
  forkRoot: string;
571
573
  } | null | undefined;
572
574
  };
573
- schemaVersion: 2;
574
- includesTranscripts: boolean;
575
575
  }>;
576
576
  type ExportManifestV2 = z.infer<typeof ExportManifestV2Schema>;
577
577
  declare const ExportBundleV2Schema: z.ZodObject<{
@@ -683,16 +683,16 @@ declare const ExportBundleV2Schema: z.ZodObject<{
683
683
  peerProfiles: boolean;
684
684
  }>;
685
685
  }, "strip", z.ZodTypeAny, {
686
+ schemaVersion: string;
686
687
  includes: {
687
688
  procedural: boolean;
688
689
  taxonomy: boolean;
689
690
  identityAnchors: boolean;
690
691
  peerProfiles: boolean;
691
692
  };
692
- description: string;
693
693
  id: string;
694
- schemaVersion: string;
695
694
  version: string;
695
+ description: string;
696
696
  parentCapsule: string | null;
697
697
  retrievalPolicy: {
698
698
  tierWeights: Record<string, number>;
@@ -704,16 +704,16 @@ declare const ExportBundleV2Schema: z.ZodObject<{
704
704
  forkRoot: string;
705
705
  } | null;
706
706
  }, {
707
+ schemaVersion: string;
707
708
  includes: {
708
709
  procedural: boolean;
709
710
  taxonomy: boolean;
710
711
  identityAnchors: boolean;
711
712
  peerProfiles: boolean;
712
713
  };
713
- description: string;
714
714
  id: string;
715
- schemaVersion: string;
716
715
  version: string;
716
+ description: string;
717
717
  parentCapsule: string | null;
718
718
  retrievalPolicy: {
719
719
  tierWeights: Record<string, number>;
@@ -726,25 +726,27 @@ declare const ExportBundleV2Schema: z.ZodObject<{
726
726
  } | null | undefined;
727
727
  }>;
728
728
  }, "strip", z.ZodTypeAny, {
729
- format: "openclaw-engram-export";
729
+ schemaVersion: 2;
730
730
  createdAt: string;
731
- pluginVersion: string;
732
731
  files: {
733
732
  path: string;
734
733
  sha256: string;
735
734
  bytes: number;
736
735
  }[];
736
+ format: "openclaw-engram-export";
737
+ pluginVersion: string;
738
+ includesTranscripts: boolean;
737
739
  capsule: {
740
+ schemaVersion: string;
738
741
  includes: {
739
742
  procedural: boolean;
740
743
  taxonomy: boolean;
741
744
  identityAnchors: boolean;
742
745
  peerProfiles: boolean;
743
746
  };
744
- description: string;
745
747
  id: string;
746
- schemaVersion: string;
747
748
  version: string;
749
+ description: string;
748
750
  parentCapsule: string | null;
749
751
  retrievalPolicy: {
750
752
  tierWeights: Record<string, number>;
@@ -756,28 +758,28 @@ declare const ExportBundleV2Schema: z.ZodObject<{
756
758
  forkRoot: string;
757
759
  } | null;
758
760
  };
759
- schemaVersion: 2;
760
- includesTranscripts: boolean;
761
761
  }, {
762
- format: "openclaw-engram-export";
762
+ schemaVersion: 2;
763
763
  createdAt: string;
764
- pluginVersion: string;
765
764
  files: {
766
765
  path: string;
767
766
  sha256: string;
768
767
  bytes: number;
769
768
  }[];
769
+ format: "openclaw-engram-export";
770
+ pluginVersion: string;
771
+ includesTranscripts: boolean;
770
772
  capsule: {
773
+ schemaVersion: string;
771
774
  includes: {
772
775
  procedural: boolean;
773
776
  taxonomy: boolean;
774
777
  identityAnchors: boolean;
775
778
  peerProfiles: boolean;
776
779
  };
777
- description: string;
778
780
  id: string;
779
- schemaVersion: string;
780
781
  version: string;
782
+ description: string;
781
783
  parentCapsule: string | null;
782
784
  retrievalPolicy: {
783
785
  tierWeights: Record<string, number>;
@@ -789,8 +791,6 @@ declare const ExportBundleV2Schema: z.ZodObject<{
789
791
  forkRoot: string;
790
792
  } | null | undefined;
791
793
  };
792
- schemaVersion: 2;
793
- includesTranscripts: boolean;
794
794
  }>;
795
795
  records: z.ZodArray<z.ZodObject<{
796
796
  path: z.ZodString;
@@ -804,25 +804,27 @@ declare const ExportBundleV2Schema: z.ZodObject<{
804
804
  }>, "many">;
805
805
  }, "strip", z.ZodTypeAny, {
806
806
  manifest: {
807
- format: "openclaw-engram-export";
807
+ schemaVersion: 2;
808
808
  createdAt: string;
809
- pluginVersion: string;
810
809
  files: {
811
810
  path: string;
812
811
  sha256: string;
813
812
  bytes: number;
814
813
  }[];
814
+ format: "openclaw-engram-export";
815
+ pluginVersion: string;
816
+ includesTranscripts: boolean;
815
817
  capsule: {
818
+ schemaVersion: string;
816
819
  includes: {
817
820
  procedural: boolean;
818
821
  taxonomy: boolean;
819
822
  identityAnchors: boolean;
820
823
  peerProfiles: boolean;
821
824
  };
822
- description: string;
823
825
  id: string;
824
- schemaVersion: string;
825
826
  version: string;
827
+ description: string;
826
828
  parentCapsule: string | null;
827
829
  retrievalPolicy: {
828
830
  tierWeights: Record<string, number>;
@@ -834,8 +836,6 @@ declare const ExportBundleV2Schema: z.ZodObject<{
834
836
  forkRoot: string;
835
837
  } | null;
836
838
  };
837
- schemaVersion: 2;
838
- includesTranscripts: boolean;
839
839
  };
840
840
  records: {
841
841
  content: string;
@@ -843,25 +843,27 @@ declare const ExportBundleV2Schema: z.ZodObject<{
843
843
  }[];
844
844
  }, {
845
845
  manifest: {
846
- format: "openclaw-engram-export";
846
+ schemaVersion: 2;
847
847
  createdAt: string;
848
- pluginVersion: string;
849
848
  files: {
850
849
  path: string;
851
850
  sha256: string;
852
851
  bytes: number;
853
852
  }[];
853
+ format: "openclaw-engram-export";
854
+ pluginVersion: string;
855
+ includesTranscripts: boolean;
854
856
  capsule: {
857
+ schemaVersion: string;
855
858
  includes: {
856
859
  procedural: boolean;
857
860
  taxonomy: boolean;
858
861
  identityAnchors: boolean;
859
862
  peerProfiles: boolean;
860
863
  };
861
- description: string;
862
864
  id: string;
863
- schemaVersion: string;
864
865
  version: string;
866
+ description: string;
865
867
  parentCapsule: string | null;
866
868
  retrievalPolicy: {
867
869
  tierWeights: Record<string, number>;
@@ -873,8 +875,6 @@ declare const ExportBundleV2Schema: z.ZodObject<{
873
875
  forkRoot: string;
874
876
  } | null | undefined;
875
877
  };
876
- schemaVersion: 2;
877
- includesTranscripts: boolean;
878
878
  };
879
879
  records: {
880
880
  content: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.6.23",
3
+ "version": "9.6.25",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3000,7 +3000,7 @@
3000
3000
  "core"
3001
3001
  ],
3002
3002
  "peerDependencies": {
3003
- "@remnic/coding-graph": "^9.6.23"
3003
+ "@remnic/coding-graph": "^9.6.25"
3004
3004
  },
3005
3005
  "peerDependenciesMeta": {
3006
3006
  "@remnic/coding-graph": {
@@ -268,11 +268,11 @@ test("HTTP coding-context endpoint accepts projectTag shorthand", async () => {
268
268
  },
269
269
  body: JSON.stringify({
270
270
  sessionKey: "s1",
271
- projectTag: "Blend/Supply",
271
+ projectTag: "Acme/Webshop",
272
272
  }),
273
273
  });
274
274
 
275
- const projectId = projectTagProjectId("Blend/Supply");
275
+ const projectId = projectTagProjectId("Acme/Webshop");
276
276
  assert.equal(response.status, 200);
277
277
  assert.deepEqual(await response.json(), { ok: true });
278
278
  assert.deepEqual(calls, [
@@ -301,7 +301,7 @@ test("MCP write tools accept and forward client-injected cwd/projectTag (#1434)"
301
301
  category: "fact",
302
302
  dryRun: true,
303
303
  cwd: "/home/dev/project-x",
304
- projectTag: "Blend/Supply",
304
+ projectTag: "Acme/Webshop",
305
305
  }),
306
306
  );
307
307
  const result = (response as Record<string, unknown> & {
@@ -310,7 +310,7 @@ test("MCP write tools accept and forward client-injected cwd/projectTag (#1434)"
310
310
 
311
311
  assert.equal(result?.isError, false, `${toolName} should accept cwd/projectTag`);
312
312
  assert.equal(received?.cwd, "/home/dev/project-x", `${toolName} must forward cwd`);
313
- assert.equal(received?.projectTag, "Blend/Supply", `${toolName} must forward projectTag`);
313
+ assert.equal(received?.projectTag, "Acme/Webshop", `${toolName} must forward projectTag`);
314
314
  }
315
315
  });
316
316
 
package/src/access-mcp.ts CHANGED
@@ -542,7 +542,7 @@ export class EngramMcpServer {
542
542
  cwd: { type: "string", description: "Working directory for auto git-context resolution." },
543
543
  projectTag: {
544
544
  type: "string",
545
- description: "Project tag for non-git project scoping (e.g. 'blend-supply').",
545
+ description: "Project tag for non-git project scoping (e.g. 'acme-webshop').",
546
546
  },
547
547
  asOf: {
548
548
  type: "string",
@@ -611,7 +611,7 @@ export class EngramMcpServer {
611
611
  projectTag: {
612
612
  type: "string",
613
613
  description:
614
- "Arbitrary project tag for non-git project scoping (e.g. 'blend-supply'). " +
614
+ "Arbitrary project tag for non-git project scoping (e.g. 'acme-webshop'). " +
615
615
  "Creates a coding context with projectId 'tag:<projectTag>'. " +
616
616
  "Use instead of codingContext when the session isn't tied to a specific git repo.",
617
617
  },
@@ -1274,7 +1274,7 @@ export class EngramMcpServer {
1274
1274
  cwd: { type: "string", description: "Working directory for auto git-context resolution." },
1275
1275
  projectTag: {
1276
1276
  type: "string",
1277
- description: "Project tag for non-git project scoping (e.g. 'blend-supply').",
1277
+ description: "Project tag for non-git project scoping (e.g. 'acme-webshop').",
1278
1278
  },
1279
1279
  },
1280
1280
  required: ["sessionKey", "messages"],
@@ -76,11 +76,11 @@ test("#1434 projectTag scopes the write to the project namespace, read-only", as
76
76
  const resolved = await resolver(service)({
77
77
  sessionKey: "sess-1",
78
78
  authenticatedPrincipal: "alice",
79
- projectTag: "Blend/Supply",
79
+ projectTag: "Acme/Webshop",
80
80
  content: "x",
81
81
  });
82
82
 
83
- assert.equal(resolved, projectNamespaceFor("Blend/Supply"));
83
+ assert.equal(resolved, projectNamespaceFor("Acme/Webshop"));
84
84
  assert.notEqual(resolved, "default", "project context must change the namespace");
85
85
  // Read-only: resolving must NOT persist coding context on the session.
86
86
  assert.equal(
@@ -100,7 +100,7 @@ test("#1434 a sessionless write with projectTag stays on the base namespace (rec
100
100
  const service = new EngramAccessService(orch);
101
101
  const resolved = await resolver(service)({
102
102
  authenticatedPrincipal: "alice",
103
- projectTag: "Blend/Supply",
103
+ projectTag: "Acme/Webshop",
104
104
  content: "x",
105
105
  });
106
106
  assert.equal(resolved, "default");
@@ -109,9 +109,9 @@ test("#1434 a sessionless write with projectTag stays on the base namespace (rec
109
109
  test("#1434 an existing session coding context scopes the write (recall-then-store flow)", async () => {
110
110
  const orch = makeOrchestratorStub();
111
111
  orch.setCodingContextForSession("sess-ctx", {
112
- projectId: projectTagProjectId("Blend/Supply"),
112
+ projectId: projectTagProjectId("Acme/Webshop"),
113
113
  branch: null,
114
- rootPath: projectTagProjectId("Blend/Supply"),
114
+ rootPath: projectTagProjectId("Acme/Webshop"),
115
115
  defaultBranch: null,
116
116
  });
117
117
  const service = new EngramAccessService(orch);
@@ -121,7 +121,7 @@ test("#1434 an existing session coding context scopes the write (recall-then-sto
121
121
  authenticatedPrincipal: "alice",
122
122
  content: "x",
123
123
  });
124
- assert.equal(resolved, projectNamespaceFor("Blend/Supply"));
124
+ assert.equal(resolved, projectNamespaceFor("Acme/Webshop"));
125
125
  });
126
126
 
127
127
  test("#1434 an existing session binding wins over per-call projectTag (recall symmetry)", async () => {
@@ -155,7 +155,7 @@ test("#1434 explicit namespace wins and bypasses coding overlay", async () => {
155
155
  sessionKey: "sess-2",
156
156
  authenticatedPrincipal: "alice",
157
157
  namespace: "default",
158
- projectTag: "Blend/Supply",
158
+ projectTag: "Acme/Webshop",
159
159
  content: "x",
160
160
  });
161
161
  assert.equal(resolved, "default");
@@ -208,12 +208,12 @@ test("#1434 project write overlays onto the principal self base (recall symmetry
208
208
  const resolved = await resolver(service)({
209
209
  sessionKey: "sess-3c",
210
210
  authenticatedPrincipal: "alice",
211
- projectTag: "Blend/Supply",
211
+ projectTag: "Acme/Webshop",
212
212
  content: "x",
213
213
  });
214
214
  assert.equal(
215
215
  resolved,
216
- combineNamespaces("alice", projectNamespaceName(projectTagProjectId("Blend/Supply"))),
216
+ combineNamespaces("alice", projectNamespaceName(projectTagProjectId("Acme/Webshop"))),
217
217
  );
218
218
  });
219
219
 
@@ -228,7 +228,7 @@ test("#1434 an explicit coding-overlay namespace string is NOT a writable target
228
228
  resolver(service)({
229
229
  sessionKey: "sess-explicit-overlay",
230
230
  authenticatedPrincipal: "alice",
231
- namespace: projectNamespaceFor("Blend/Supply"), // "default-project-…"
231
+ namespace: projectNamespaceFor("Acme/Webshop"), // "default-project-…"
232
232
  content: "x",
233
233
  }),
234
234
  /not writable/,
@@ -308,7 +308,7 @@ test("#1434 namespaces disabled: cwd/projectTag are a no-op (common single-tenan
308
308
  const service = new EngramAccessService(orch);
309
309
  const resolved = await resolver(service)({
310
310
  sessionKey: "sess-4",
311
- projectTag: "Blend/Supply",
311
+ projectTag: "Acme/Webshop",
312
312
  content: "x",
313
313
  });
314
314
  assert.equal(resolved, "default");
@@ -368,18 +368,18 @@ test("#1434 a real memory_store attaches coding context so a later bare recall o
368
368
  const service = new EngramAccessService(orch);
369
369
 
370
370
  const res = await service.memoryStore(
371
- storeRequest({ sessionKey: "sess-attach", projectTag: "Blend/Supply" }),
371
+ storeRequest({ sessionKey: "sess-attach", projectTag: "Acme/Webshop" }),
372
372
  );
373
373
 
374
374
  assert.equal(res.status, "stored");
375
- assert.equal(res.namespace, projectNamespaceFor("Blend/Supply"));
375
+ assert.equal(res.namespace, projectNamespaceFor("Acme/Webshop"));
376
376
  // The store attached the coding context the recall path reads.
377
377
  assert.equal(
378
378
  contexts.get("sess-attach")?.projectId,
379
- projectTagProjectId("Blend/Supply"),
379
+ projectTagProjectId("Acme/Webshop"),
380
380
  );
381
381
  assert.ok(
382
- getStorageCalls.every((ns) => ns === projectNamespaceFor("Blend/Supply")),
382
+ getStorageCalls.every((ns) => ns === projectNamespaceFor("Acme/Webshop")),
383
383
  `expected all getStorage calls on the project namespace, got ${JSON.stringify(getStorageCalls)}`,
384
384
  );
385
385
  // A later BARE resolve (no per-call context) on the same session — what a
@@ -389,7 +389,7 @@ test("#1434 a real memory_store attaches coding context so a later bare recall o
389
389
  authenticatedPrincipal: "alice",
390
390
  content: "y",
391
391
  });
392
- assert.equal(bare, projectNamespaceFor("Blend/Supply"));
392
+ assert.equal(bare, projectNamespaceFor("Acme/Webshop"));
393
393
  });
394
394
 
395
395
  test("#1434 an explicit-namespace store does NOT bind the session to a project (Codex review)", async () => {
@@ -399,7 +399,7 @@ test("#1434 an explicit-namespace store does NOT bind the session to a project (
399
399
  const { orch, contexts } = makeAttachOrchestrator();
400
400
  const service = new EngramAccessService(orch);
401
401
  const res = await service.memoryStore(
402
- storeRequest({ sessionKey: "sess-explicit", namespace: "default", projectTag: "Blend/Supply" }),
402
+ storeRequest({ sessionKey: "sess-explicit", namespace: "default", projectTag: "Acme/Webshop" }),
403
403
  );
404
404
  assert.equal(res.status, "stored");
405
405
  assert.equal(res.namespace, "default");
@@ -411,7 +411,7 @@ test("#1434 a dryRun store does NOT bind the session to a project (Codex review)
411
411
  const { orch, contexts } = makeAttachOrchestrator();
412
412
  const service = new EngramAccessService(orch);
413
413
  const res = await service.memoryStore(
414
- storeRequest({ sessionKey: "sess-dry", projectTag: "Blend/Supply", dryRun: true }),
414
+ storeRequest({ sessionKey: "sess-dry", projectTag: "Acme/Webshop", dryRun: true }),
415
415
  );
416
416
  assert.equal(res.status, "validated");
417
417
  assert.equal(contexts.get("sess-dry"), undefined, "dryRun must not bind the session");