@traqr/memory 0.2.23 → 0.2.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.
@@ -12,7 +12,8 @@
12
12
  *
13
13
  * Run: npx tsx packages/memory/src/lib/classification-ceiling.test.ts
14
14
  */
15
- import { applyClassificationCeiling } from './retrieval.js';
15
+ import { applyClassificationCeiling, allowedClassificationsForCeiling, resolveClassificationCeiling, } from './retrieval.js';
16
+ import { exceedsClassificationCeiling } from '../vectordb/types.js';
16
17
  let passed = 0;
17
18
  let failed = 0;
18
19
  function assert(label, condition) {
@@ -92,6 +93,77 @@ console.log('\n--- applyClassificationCeiling (TD-810) ---');
92
93
  assert('unknown classification fails closed (dropped even at admin)', !ids.includes('bogus'));
93
94
  assert('known row alongside unknown still kept', ids.includes('pub') && out.length === 1);
94
95
  }
96
+ // ===========================================================================
97
+ // TD-883: browse + getById direct-retrieval ceilings.
98
+ // The browse route filters at the DB via allowedClassificationsForCeiling;
99
+ // the getById path redacts over-tier rows via exceedsClassificationCeiling.
100
+ // These pure helpers back both surfaces, so pinning them pins the behavior.
101
+ // ===========================================================================
102
+ console.log('\n--- allowedClassificationsForCeiling (TD-883 browse) ---');
103
+ // (a) browse summaries drop over-tier rows under exploration, keep public+internal.
104
+ {
105
+ const allowed = allowedClassificationsForCeiling('exploration');
106
+ assert('exploration → allowed list defined', !!allowed);
107
+ assert('exploration allows public', !!allowed?.includes('public'));
108
+ assert('exploration allows internal', !!allowed?.includes('internal'));
109
+ assert('exploration drops confidential', !allowed?.includes('confidential'));
110
+ assert('exploration drops restricted', !allowed?.includes('restricted'));
111
+ assert('exploration allowed count is 2', allowed?.length === 2);
112
+ // 'internal' is in-tier → NULL rows (which hydrate to 'internal') are admitted.
113
+ assert('exploration admits NULL rows (internal in tier)', !!allowed?.includes('internal'));
114
+ }
115
+ // (b) browse with no accessLevel = unchanged (undefined → caller skips filter).
116
+ {
117
+ const allowed = allowedClassificationsForCeiling();
118
+ assert('no accessLevel → undefined (no DB filter, unchanged behavior)', allowed === undefined);
119
+ assert('no ceiling resolved when neither arg given', resolveClassificationCeiling() === undefined);
120
+ }
121
+ // standard ceiling allows public/internal/confidential, drops restricted.
122
+ {
123
+ const allowed = allowedClassificationsForCeiling('standard');
124
+ assert('standard allows confidential', !!allowed?.includes('confidential'));
125
+ assert('standard drops restricted', !allowed?.includes('restricted'));
126
+ assert('standard allowed count is 3', allowed?.length === 3);
127
+ }
128
+ // maxClassification overrides accessLevel (admin → internal ceiling).
129
+ {
130
+ const allowed = allowedClassificationsForCeiling('admin', 'internal');
131
+ assert('override: admin+internal allows only public+internal', allowed?.length === 2 && !allowed?.includes('confidential'));
132
+ }
133
+ // confidential ceiling: NULL rows still admitted (internal < confidential).
134
+ {
135
+ const allowed = allowedClassificationsForCeiling('standard');
136
+ assert('confidential ceiling still admits NULL (internal in tier)', !!allowed?.includes('internal'));
137
+ }
138
+ console.log('\n--- exceedsClassificationCeiling (TD-883 getById) ---');
139
+ // (c) getById returns null for over-tier under a ceiling.
140
+ {
141
+ assert('confidential exceeds exploration ceiling → redacted', exceedsClassificationCeiling('confidential', 'exploration') === true);
142
+ assert('restricted exceeds exploration ceiling → redacted', exceedsClassificationCeiling('restricted', 'exploration') === true);
143
+ }
144
+ // (c) getById returns the row when in-tier.
145
+ {
146
+ assert('public in-tier at exploration → kept', exceedsClassificationCeiling('public', 'exploration') === false);
147
+ assert('internal in-tier at exploration → kept', exceedsClassificationCeiling('internal', 'exploration') === false);
148
+ assert('confidential in-tier at standard → kept', exceedsClassificationCeiling('confidential', 'standard') === false);
149
+ }
150
+ // (c) getById returns the row with no ceiling (no opts → never exceeds).
151
+ {
152
+ assert('no ceiling → restricted never redacted', exceedsClassificationCeiling('restricted') === false);
153
+ assert('no ceiling → undefined classification never redacted', exceedsClassificationCeiling(undefined) === false);
154
+ }
155
+ // undefined classification treated as public (kept) even at lowest tier.
156
+ {
157
+ assert('undefined classification at exploration → kept (public)', exceedsClassificationCeiling(undefined, 'exploration') === false);
158
+ }
159
+ // maxClassification overrides accessLevel in the getById predicate too.
160
+ {
161
+ assert('admin+internal ceiling redacts confidential', exceedsClassificationCeiling('confidential', 'admin', 'internal') === true);
162
+ }
163
+ // fail-closed: unknown classification string is redacted (exceeds) even at admin.
164
+ {
165
+ assert('unknown classification fails closed → redacted', exceedsClassificationCeiling('topsecret', 'admin') === true);
166
+ }
95
167
  console.log(`\n${'='.repeat(50)}`);
96
168
  console.log(`Results: ${passed} passed, ${failed} failed`);
97
169
  if (failed > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"classification-ceiling.test.js","sourceRoot":"","sources":["../../src/lib/classification-ceiling.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classification-ceiling.test.js","sourceRoot":"","sources":["../../src/lib/classification-ceiling.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Classification Enforcement — LIVE-PATH integration + arg-passing contract (TD-885).
3
+ *
4
+ * The TD-810/883 unit tests (classification-ceiling.test.ts) pin the pure
5
+ * helpers in ISOLATION. But BOTH real leaks in that saga were *integration*
6
+ * bugs the helpers-in-isolation structurally cannot catch:
7
+ *
8
+ * - TD-810 commit-1: bm25/temporal/graph strategies + the getById hydration
9
+ * of bm25/graph-only hits were classification-BLIND. The helper was correct;
10
+ * searchMemoriesV2 just didn't invoke a ceiling on those rows. Closed by the
11
+ * defense-in-depth post-filter at the end of searchMemoriesV2.
12
+ * - TD-810 commit-2 (f233ff40): PostgresVectorProvider.search() passed only 8
13
+ * positional args, omitting arg 9 (p_max_classification) → the DB defaulted
14
+ * it to 'restricted' (= show-all). The helper was never even reached.
15
+ *
16
+ * This file is the live-path regression guard TD-810 acceptance item 4 asked
17
+ * for. Two sections:
18
+ * 1. INTEGRATION — drive searchMemoriesV2 through a fake VectorDBProvider that
19
+ * yields over-tier rows across the semantic + bm25 + graph paths (the last
20
+ * two via the classification-blind getById hydration), assert the live path
21
+ * returns ZERO over-tier rows at the exploration ceiling. Catches commit-1.
22
+ * 2. CONTRACT — capture the positional args PostgresVectorProvider.search()
23
+ * passes to query() via a fake pool, assert p_max_classification rides in
24
+ * arg 9 (single-project) / arg 12 (cross-project). Catches commit-2 — no DB.
25
+ *
26
+ * Hermetic: EMBEDDING_PROVIDER=none (no network), fake provider + fake pool
27
+ * (no DB). Matches the tsx-script convention of classification-ceiling.test.ts.
28
+ *
29
+ * Run: npx tsx packages/memory/src/lib/classification-enforcement.integration.test.ts
30
+ */
31
+ export {};
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Classification Enforcement — LIVE-PATH integration + arg-passing contract (TD-885).
3
+ *
4
+ * The TD-810/883 unit tests (classification-ceiling.test.ts) pin the pure
5
+ * helpers in ISOLATION. But BOTH real leaks in that saga were *integration*
6
+ * bugs the helpers-in-isolation structurally cannot catch:
7
+ *
8
+ * - TD-810 commit-1: bm25/temporal/graph strategies + the getById hydration
9
+ * of bm25/graph-only hits were classification-BLIND. The helper was correct;
10
+ * searchMemoriesV2 just didn't invoke a ceiling on those rows. Closed by the
11
+ * defense-in-depth post-filter at the end of searchMemoriesV2.
12
+ * - TD-810 commit-2 (f233ff40): PostgresVectorProvider.search() passed only 8
13
+ * positional args, omitting arg 9 (p_max_classification) → the DB defaulted
14
+ * it to 'restricted' (= show-all). The helper was never even reached.
15
+ *
16
+ * This file is the live-path regression guard TD-810 acceptance item 4 asked
17
+ * for. Two sections:
18
+ * 1. INTEGRATION — drive searchMemoriesV2 through a fake VectorDBProvider that
19
+ * yields over-tier rows across the semantic + bm25 + graph paths (the last
20
+ * two via the classification-blind getById hydration), assert the live path
21
+ * returns ZERO over-tier rows at the exploration ceiling. Catches commit-1.
22
+ * 2. CONTRACT — capture the positional args PostgresVectorProvider.search()
23
+ * passes to query() via a fake pool, assert p_max_classification rides in
24
+ * arg 9 (single-project) / arg 12 (cross-project). Catches commit-2 — no DB.
25
+ *
26
+ * Hermetic: EMBEDDING_PROVIDER=none (no network), fake provider + fake pool
27
+ * (no DB). Matches the tsx-script convention of classification-ceiling.test.ts.
28
+ *
29
+ * Run: npx tsx packages/memory/src/lib/classification-enforcement.integration.test.ts
30
+ */
31
+ // MUST be set before any embedding call. getEmbeddingProvider() reads this at
32
+ // call-time and returns the network-free NullEmbeddingProvider (embedding: []).
33
+ process.env.EMBEDDING_PROVIDER = 'none';
34
+ import { searchMemoriesV2 } from './retrieval.js';
35
+ import { setVectorDB, resetVectorDB } from '../vectordb/index.js';
36
+ import { PostgresVectorProvider, setPostgresPool, resetPostgresPool } from '../vectordb/postgres.js';
37
+ let passed = 0;
38
+ let failed = 0;
39
+ function assert(label, condition) {
40
+ if (condition) {
41
+ console.log(` PASS ${label}`);
42
+ passed++;
43
+ }
44
+ else {
45
+ console.log(` FAIL ${label}`);
46
+ failed++;
47
+ }
48
+ }
49
+ // ---------------------------------------------------------------------------
50
+ // Test fixtures: minimal Memory / MemorySearchResult rows by classification.
51
+ // ---------------------------------------------------------------------------
52
+ function mem(id, classification) {
53
+ return {
54
+ id,
55
+ content: `content-${id}`,
56
+ classification,
57
+ tags: [],
58
+ contextTags: [],
59
+ sourceType: 'manual',
60
+ sourceProject: 'test',
61
+ originalConfidence: 0.9,
62
+ lastValidated: new Date(0),
63
+ relatedTo: [],
64
+ isContradiction: false,
65
+ isArchived: false,
66
+ durability: 'permanent',
67
+ embeddingModel: 'none',
68
+ embeddingModelVersion: 'v1',
69
+ createdAt: new Date(0),
70
+ updatedAt: new Date(0),
71
+ timesReturned: 0,
72
+ timesCited: 0,
73
+ };
74
+ }
75
+ function searchRow(id, classification) {
76
+ return { ...mem(id, classification), currentConfidence: 0.9, similarity: 0.5, relevanceScore: 0.5 };
77
+ }
78
+ // ===========================================================================
79
+ // 1. INTEGRATION — searchMemoriesV2 live path drops over-tier rows (commit-1).
80
+ // ===========================================================================
81
+ //
82
+ // Fake provider yields over-tier rows across all three active strategies:
83
+ // - semantic → sem-int (internal, kept) + sem-conf (confidential, DROP)
84
+ // these land in semanticFullResults → hydrated via semanticMap
85
+ // - bm25 → bm25-pub (public, kept) + bm25-restr (restricted, DROP)
86
+ // NEW ids not in semantic → hydrated via the BLIND getById path
87
+ // - graph → graph-conf (confidential, DROP)
88
+ // NEW id → also via the BLIND getById path
89
+ // At exploration the ceiling is 'internal', so only public+internal survive.
90
+ console.log('\n--- searchMemoriesV2 live-path classification enforcement (TD-885 / TD-810 commit-1) ---');
91
+ // Rows that arrive ONLY via bm25/graph must be hydrated by getById (the path
92
+ // that was classification-blind in commit-1, now backstopped by the post-filter).
93
+ const byId = {
94
+ 'bm25-pub': mem('bm25-pub', 'public'),
95
+ 'bm25-restr': mem('bm25-restr', 'restricted'),
96
+ 'graph-conf': mem('graph-conf', 'confidential'),
97
+ };
98
+ const getByIdCalls = [];
99
+ // FIDELITY NOTE (TD-885): this fake emits over-tier rows ONLY from the retrieval
100
+ // paths searchMemoriesV2 dispatches today — search (semantic), bm25Search,
101
+ // graphSearch, and the getById hydration of bm25/graph-only hits. The "0 over-tier
102
+ // rows across every path" assertion is only as complete as this fixture. If a new
103
+ // retrieval strategy is added to searchMemoriesV2, emit an over-tier row for it
104
+ // here too (see the matching note at retrieval.ts step 3) — else this guard passes
105
+ // blind to the new path.
106
+ const fakeProvider = {
107
+ async search() {
108
+ return [searchRow('sem-int', 'internal'), searchRow('sem-conf', 'confidential')];
109
+ },
110
+ async bm25Search() {
111
+ return [
112
+ { id: 'bm25-pub', content: 'content-bm25-pub', bm25Score: 1 },
113
+ { id: 'bm25-restr', content: 'content-bm25-restr', bm25Score: 1 },
114
+ ];
115
+ },
116
+ async graphSearch() {
117
+ return [{ id: 'graph-conf', content: 'content-graph-conf', graphScore: 1, edgeType: 'related', depth: 1 }];
118
+ },
119
+ async temporalSearch() {
120
+ return [];
121
+ },
122
+ async getById(id) {
123
+ getByIdCalls.push(id);
124
+ return byId[id] ?? null;
125
+ },
126
+ async bumpReturned() {
127
+ /* no-op */
128
+ },
129
+ async citeMemory() {
130
+ /* no-op */
131
+ },
132
+ };
133
+ {
134
+ setVectorDB(fakeProvider);
135
+ let results = [];
136
+ try {
137
+ results = await searchMemoriesV2('classification regression probe', {
138
+ accessLevel: 'exploration',
139
+ strategies: ['semantic', 'bm25', 'graph'], // force all 3 (skip detectStrategies)
140
+ entityIds: ['seed-1'], // non-empty → graph seeds present + skips findEntitiesInQuery (no network)
141
+ limit: 10,
142
+ });
143
+ }
144
+ finally {
145
+ resetVectorDB();
146
+ }
147
+ const ids = results.map((r) => r.id);
148
+ const overTier = results.filter((r) => r.classification === 'confidential' || r.classification === 'restricted');
149
+ assert('live path returns ZERO over-tier rows at exploration (the leak both fixes closed)', overTier.length === 0);
150
+ assert('in-tier internal row (semantic) survives', ids.includes('sem-int'));
151
+ assert('in-tier public row (bm25, getById-hydrated) survives', ids.includes('bm25-pub'));
152
+ assert('confidential semantic row dropped', !ids.includes('sem-conf'));
153
+ assert('restricted bm25 row dropped (its getById hydration was classification-blind)', !ids.includes('bm25-restr'));
154
+ assert('confidential graph row dropped', !ids.includes('graph-conf'));
155
+ // Prove the blind getById hydration path (commit-1's leak surface) was ACTUALLY
156
+ // exercised — otherwise the test could pass without touching the bug class.
157
+ assert('getById hydration ran for bm25/graph-only hits (commit-1 leak path exercised)', getByIdCalls.length >= 2);
158
+ assert('exactly the two in-tier rows survive', results.length === 2);
159
+ }
160
+ // ===========================================================================
161
+ // 2. CONTRACT — PostgresVectorProvider.search() arg passing (commit-2).
162
+ // ===========================================================================
163
+ //
164
+ // commit-2: the single-project branch passed 8 args, omitting arg 9
165
+ // (p_max_classification) → DB defaulted it to 'restricted' = unfiltered.
166
+ // We capture the args via a fake pool and assert the security params ride in
167
+ // the correct positions. No live DB.
168
+ console.log('\n--- PostgresVectorProvider.search() arg-passing contract (TD-885 / TD-810 commit-2) ---');
169
+ const captured = [];
170
+ const fakePool = {
171
+ async query(sql, params) {
172
+ captured.push({ sql, params });
173
+ return { rows: [] };
174
+ },
175
+ async end() {
176
+ /* no-op */
177
+ },
178
+ };
179
+ {
180
+ setPostgresPool(fakePool);
181
+ const pg = new PostgresVectorProvider();
182
+ try {
183
+ // -- single-project branch: SELECT * FROM search_memories($1..$10)
184
+ captured.length = 0;
185
+ await pg.search('q', { accessLevel: 'exploration' });
186
+ {
187
+ const last = captured[captured.length - 1];
188
+ assert('single-project branch calls search_memories', last.sql.includes('search_memories(') && !last.sql.includes('cross_project'));
189
+ assert('single-project passes 10 positional args (commit-2 bug passed 8)', last.params.length === 10);
190
+ assert('arg 9 (p_max_classification) = internal for exploration', last.params[8] === 'internal');
191
+ assert('arg 10 (p_client_namespace) = null when unset', last.params[9] === null);
192
+ }
193
+ // -- cross-project branch: SELECT * FROM search_memories_cross_project($1..$13)
194
+ captured.length = 0;
195
+ await pg.search('q', { accessLevel: 'standard', sourceProject: 'proj-x' });
196
+ {
197
+ const last = captured[captured.length - 1];
198
+ assert('cross-project branch calls search_memories_cross_project', last.sql.includes('search_memories_cross_project('));
199
+ assert('cross-project passes 13 positional args', last.params.length === 13);
200
+ assert('arg 12 (p_max_classification) = confidential for standard', last.params[11] === 'confidential');
201
+ assert('arg 13 (p_client_namespace) = null when unset', last.params[12] === null);
202
+ }
203
+ // -- fail-safe default: no accessLevel → 'restricted' (= byte-identical to the
204
+ // pre-TD-810 default; the commit-2 fix preserves this for no-ceiling callers).
205
+ captured.length = 0;
206
+ await pg.search('q', {});
207
+ {
208
+ const last = captured[captured.length - 1];
209
+ assert('no accessLevel → arg 9 defaults to restricted (fail-safe parity with pre-TD-810)', last.params[8] === 'restricted');
210
+ }
211
+ // -- explicit maxClassification overrides accessLevel in the arg too.
212
+ captured.length = 0;
213
+ await pg.search('q', { accessLevel: 'admin', maxClassification: 'internal' });
214
+ {
215
+ const last = captured[captured.length - 1];
216
+ assert('explicit maxClassification overrides accessLevel in arg 9 (admin+internal → internal)', last.params[8] === 'internal');
217
+ }
218
+ }
219
+ finally {
220
+ resetPostgresPool();
221
+ }
222
+ }
223
+ // ---------------------------------------------------------------------------
224
+ console.log(`\n${'='.repeat(50)}`);
225
+ console.log(`Results: ${passed} passed, ${failed} failed`);
226
+ if (failed > 0) {
227
+ console.log('CLASSIFICATION-ENFORCEMENT INTEGRATION TESTS FAILED');
228
+ process.exit(1);
229
+ }
230
+ else {
231
+ console.log('All classification-enforcement integration tests passed!');
232
+ }
233
+ //# sourceMappingURL=classification-enforcement.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classification-enforcement.integration.test.js","sourceRoot":"","sources":["../../src/lib/classification-enforcement.integration.test.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * Wraps the vectordb abstraction with convenience functions.
6
6
  */
7
7
  import { type EmbeddingHealthStatus } from './embeddings.js';
8
- import type { Memory, MemoryInput, MemorySearchResult, MemoryUpdate, MemoryExport, SearchOptions, MemoryCategory } from '../vectordb/types.js';
8
+ import type { Memory, MemoryInput, MemorySearchResult, MemoryUpdate, MemoryExport, SearchOptions, MemoryCategory, MemoryAccessLevel, MemoryClassification } from '../vectordb/types.js';
9
9
  export type { Memory, MemoryInput, MemorySearchResult, MemoryUpdate, MemoryExport, SearchOptions, MemoryCategory, };
10
10
  export declare function storeMemory(input: MemoryInput): Promise<Memory>;
11
11
  export type TriageZone = 'noop' | 'add' | 'borderline';
@@ -42,7 +42,10 @@ export declare function triageAndStore(input: MemoryInput, options?: TriageOptio
42
42
  /** Backward-compatible alias for triageAndStore */
43
43
  export declare function storeWithDedup(input: MemoryInput, _dedupThreshold?: number): Promise<TriageResult>;
44
44
  export declare function searchMemories(query: string, options?: SearchOptions): Promise<MemorySearchResult[]>;
45
- export declare function getMemory(id: string): Promise<Memory | null>;
45
+ export declare function getMemory(id: string, opts?: {
46
+ accessLevel?: MemoryAccessLevel;
47
+ maxClassification?: MemoryClassification;
48
+ }): Promise<Memory | null>;
46
49
  /**
47
50
  * Record a citation (TD-817): increments times_cited, sets last_cited_at,
48
51
  * and resets the decay timer (last_validated). Call when an agent explicitly
@@ -235,9 +235,10 @@ export async function searchMemories(query, options = {}) {
235
235
  const db = getVectorDB();
236
236
  return db.search(query, options);
237
237
  }
238
- export async function getMemory(id) {
238
+ export async function getMemory(id, opts) {
239
239
  const db = getVectorDB();
240
- return db.getById(id);
240
+ // TD-883: thread the optional classification ceiling. No opts → unchanged.
241
+ return db.getById(id, opts);
241
242
  }
242
243
  /**
243
244
  * Record a citation (TD-817): increments times_cited, sets last_cited_at,
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,25 @@ export declare function reciprocalRankFusion(strategyResults: StrategyResult[],
66
66
  export declare function applyClassificationCeiling<T extends {
67
67
  classification?: MemoryClassification;
68
68
  }>(results: T[], accessLevel?: MemoryAccessLevel, maxClassification?: MemoryClassification): T[];
69
+ /**
70
+ * Resolve the effective classification ceiling for a caller.
71
+ *
72
+ * Explicit maxClassification wins; else derive from accessLevel; else undefined
73
+ * (= no ceiling, fail-safe). Shared by every surface that filters on the
74
+ * accessLevel/maxClassification pair (search, browse, getById) so the mapping
75
+ * lives in exactly one place (TD-883).
76
+ */
77
+ export declare function resolveClassificationCeiling(accessLevel?: MemoryAccessLevel, maxClassification?: MemoryClassification): MemoryClassification | undefined;
78
+ /**
79
+ * The list of classification values at or below a ceiling, for DB-level
80
+ * `.in('classification', ...)` filtering (TD-883 browse surface).
81
+ *
82
+ * No ceiling → undefined (caller must skip filtering → unchanged behavior).
83
+ * NOTE: a NULL classification column hydrates to 'internal' (rowToMemory's
84
+ * `?? 'internal'`), so callers filtering at the DB must additionally admit NULL
85
+ * rows whenever 'internal' is in this list — `.in()` alone never matches NULL.
86
+ */
87
+ export declare function allowedClassificationsForCeiling(accessLevel?: MemoryAccessLevel, maxClassification?: MemoryClassification): MemoryClassification[] | undefined;
69
88
  /**
70
89
  * Detect which search strategies should be activated for a query.
71
90
  * Semantic + BM25 always run. Temporal activates on date patterns.
@@ -73,8 +73,7 @@ export function reciprocalRankFusion(strategyResults, k = 60, topN = 20) {
73
73
  export function applyClassificationCeiling(results, accessLevel, maxClassification) {
74
74
  // Resolve the ceiling. Explicit maxClassification wins; else derive from
75
75
  // accessLevel; else no ceiling → fail-safe pass-through.
76
- const ceiling = maxClassification ??
77
- (accessLevel ? ACCESS_LEVEL_MAX_CLASSIFICATION[accessLevel] : undefined);
76
+ const ceiling = resolveClassificationCeiling(accessLevel, maxClassification);
78
77
  if (!ceiling)
79
78
  return results;
80
79
  const ceilingRank = CLASSIFICATION_RANK[ceiling];
@@ -87,6 +86,34 @@ export function applyClassificationCeiling(results, accessLevel, maxClassificati
87
86
  return rank <= ceilingRank;
88
87
  });
89
88
  }
89
+ /**
90
+ * Resolve the effective classification ceiling for a caller.
91
+ *
92
+ * Explicit maxClassification wins; else derive from accessLevel; else undefined
93
+ * (= no ceiling, fail-safe). Shared by every surface that filters on the
94
+ * accessLevel/maxClassification pair (search, browse, getById) so the mapping
95
+ * lives in exactly one place (TD-883).
96
+ */
97
+ export function resolveClassificationCeiling(accessLevel, maxClassification) {
98
+ return (maxClassification ??
99
+ (accessLevel ? ACCESS_LEVEL_MAX_CLASSIFICATION[accessLevel] : undefined));
100
+ }
101
+ /**
102
+ * The list of classification values at or below a ceiling, for DB-level
103
+ * `.in('classification', ...)` filtering (TD-883 browse surface).
104
+ *
105
+ * No ceiling → undefined (caller must skip filtering → unchanged behavior).
106
+ * NOTE: a NULL classification column hydrates to 'internal' (rowToMemory's
107
+ * `?? 'internal'`), so callers filtering at the DB must additionally admit NULL
108
+ * rows whenever 'internal' is in this list — `.in()` alone never matches NULL.
109
+ */
110
+ export function allowedClassificationsForCeiling(accessLevel, maxClassification) {
111
+ const ceiling = resolveClassificationCeiling(accessLevel, maxClassification);
112
+ if (!ceiling)
113
+ return undefined;
114
+ const ceilingRank = CLASSIFICATION_RANK[ceiling];
115
+ return Object.keys(CLASSIFICATION_RANK).filter((cls) => CLASSIFICATION_RANK[cls] <= ceilingRank);
116
+ }
90
117
  // ---------------------------------------------------------------------------
91
118
  // Strategy Detection (TD-159)
92
119
  // ---------------------------------------------------------------------------
@@ -288,6 +315,13 @@ export async function searchMemoriesV2(query, options = {}) {
288
315
  const embeddingStr = formatEmbeddingForPgVector(embeddingResult.embedding);
289
316
  // 3. Run active strategies in parallel
290
317
  // Keep full semantic results for hydration + BM25 content for reranking
318
+ //
319
+ // TD-885 regression-guard fidelity: the classification post-filter (step 6.5)
320
+ // is exercised end-to-end by classification-enforcement.integration.test.ts via
321
+ // a fake provider that emits over-tier rows from EACH strategy below. If you add
322
+ // a NEW retrieval strategy here, add a fake over-tier row for it in that test's
323
+ // fakeProvider — otherwise its "0 over-tier rows across every path" assertion
324
+ // passes blind to the new path, and a classification leak ships green.
291
325
  let semanticFullResults = [];
292
326
  let bm25ContentMap = new Map();
293
327
  const strategyPromises = [];