@mmnto/totem 1.108.0 → 1.110.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.
Files changed (60) hide show
  1. package/dist/config-schema.d.ts +22 -0
  2. package/dist/config-schema.d.ts.map +1 -1
  3. package/dist/config-schema.js +6 -0
  4. package/dist/config-schema.js.map +1 -1
  5. package/dist/config-schema.test.js +21 -0
  6. package/dist/config-schema.test.js.map +1 -1
  7. package/dist/embedders/embedder.d.ts +29 -0
  8. package/dist/embedders/embedder.d.ts.map +1 -1
  9. package/dist/embedders/embedder.js +26 -3
  10. package/dist/embedders/embedder.js.map +1 -1
  11. package/dist/embedders/embedder.test.js +51 -0
  12. package/dist/embedders/embedder.test.js.map +1 -1
  13. package/dist/embedders/gemini-embedder.d.ts +18 -1
  14. package/dist/embedders/gemini-embedder.d.ts.map +1 -1
  15. package/dist/embedders/gemini-embedder.js +98 -5
  16. package/dist/embedders/gemini-embedder.js.map +1 -1
  17. package/dist/embedders/gemini-embedder.test.js +153 -1
  18. package/dist/embedders/gemini-embedder.test.js.map +1 -1
  19. package/dist/embedders/openai-embedder.d.ts +2 -1
  20. package/dist/embedders/openai-embedder.d.ts.map +1 -1
  21. package/dist/embedders/openai-embedder.js +21 -4
  22. package/dist/embedders/openai-embedder.js.map +1 -1
  23. package/dist/embedders/openai-embedder.test.d.ts +2 -0
  24. package/dist/embedders/openai-embedder.test.d.ts.map +1 -0
  25. package/dist/embedders/openai-embedder.test.js +102 -0
  26. package/dist/embedders/openai-embedder.test.js.map +1 -0
  27. package/dist/embedders/pacing.d.ts +11 -0
  28. package/dist/embedders/pacing.d.ts.map +1 -0
  29. package/dist/embedders/pacing.js +23 -0
  30. package/dist/embedders/pacing.js.map +1 -0
  31. package/dist/embedders/pacing.test.d.ts +2 -0
  32. package/dist/embedders/pacing.test.d.ts.map +1 -0
  33. package/dist/embedders/pacing.test.js +50 -0
  34. package/dist/embedders/pacing.test.js.map +1 -0
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/ingest/file-resolver.d.ts +14 -0
  40. package/dist/ingest/file-resolver.d.ts.map +1 -1
  41. package/dist/ingest/file-resolver.js +27 -9
  42. package/dist/ingest/file-resolver.js.map +1 -1
  43. package/dist/ingest/pipeline.d.ts +9 -0
  44. package/dist/ingest/pipeline.d.ts.map +1 -1
  45. package/dist/ingest/pipeline.js +315 -29
  46. package/dist/ingest/pipeline.js.map +1 -1
  47. package/dist/ingest/pipeline.test.js +397 -0
  48. package/dist/ingest/pipeline.test.js.map +1 -1
  49. package/dist/ingest/sync.d.ts +2 -2
  50. package/dist/ingest/sync.d.ts.map +1 -1
  51. package/dist/ingest/sync.js +2 -2
  52. package/dist/ingest/sync.js.map +1 -1
  53. package/dist/parity-detect.d.ts +12 -0
  54. package/dist/parity-detect.d.ts.map +1 -1
  55. package/dist/parity-detect.js +4 -3
  56. package/dist/parity-detect.js.map +1 -1
  57. package/dist/types.d.ts +39 -0
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/types.js.map +1 -1
  60. package/package.json +1 -1
@@ -11,6 +11,15 @@ import type { SyncOptions } from '../types.js';
11
11
  * Throws TotemDatabaseError if the provider has changed.
12
12
  */
13
13
  export declare function verifyIndexMeta(totemDir: string, config: TotemConfig): void;
14
+ /**
15
+ * Whether a full re-index epoch is in progress (its dirty marker exists) for
16
+ * the given totem dir (#2562). Exposed for callers that spawn or gate syncs
17
+ * under bounded budgets — e.g. the MCP add-lesson tool's 60s-killed
18
+ * convenience sync, which a promoted paced resume can never finish
19
+ * (falsification round 3, MAJOR 1): such callers should skip and defer to the
20
+ * running epoch instead of timing out against it.
21
+ */
22
+ export declare function hasFullSyncCheckpoint(totemDir: string): boolean;
14
23
  /**
15
24
  * One entry in the index-manifest `documents[]` array.
16
25
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/ingest/pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQvD,OAAO,KAAK,EAAS,WAAW,EAAa,MAAM,aAAa,CAAC;AAyCjE;;;GAGG;AACH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAuB3E;AAmCD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC;CACjB,GAAG,aAAa,CAUhB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAUD;AAYD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,EAAE,CAGV;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAIhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,EAAE,CAGV"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/ingest/pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQvD,OAAO,KAAK,EAA6B,WAAW,EAAa,MAAM,aAAa,CAAC;AA+CrF;;;GAGG;AACH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAuB3E;AAuFD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D;AAkBD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC;CACjB,GAAG,aAAa,CAUhB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAUD;AAYD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,EAAE,CAGV;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAIhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,EAAE,CAGV"}
@@ -9,10 +9,11 @@ import { withLock } from '../lock.js';
9
9
  import { sanitizeForIngestion } from '../sanitize.js';
10
10
  import { LanceStore } from '../store/lance-store.js';
11
11
  import { sanitizeForTerminal } from '../terminal-sanitize.js';
12
- import { getChangedFiles, getHeadSha, resolveFiles } from './file-resolver.js';
12
+ import { getChangedFiles, getChangedFilesDetailed, getHeadSha, resolveFiles, } from './file-resolver.js';
13
13
  const EMBED_BATCH_SIZE = 100;
14
14
  const SYNC_STATE_FILE = 'cache/sync-state.json';
15
15
  const INDEX_META_FILE = 'cache/index-meta.json';
16
+ const FULL_SYNC_CHECKPOINT_FILE = 'cache/full-sync-checkpoint.json';
16
17
  function readIndexMeta(totemDir) {
17
18
  const metaPath = path.join(totemDir, INDEX_META_FILE);
18
19
  try {
@@ -83,11 +84,79 @@ function readSyncState(totemDir, onProgress) {
83
84
  return null;
84
85
  }
85
86
  }
87
+ /**
88
+ * Atomic JSON write (tmp + rename): a crash mid-write must never leave a torn
89
+ * state file — sync state and the full-sync checkpoint are both trusted by the
90
+ * NEXT run's control flow (#2562), matching the index-manifest write pattern.
91
+ */
92
+ function writeJsonAtomic(filePath, value) {
93
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
94
+ // PID-unique tmp name: two writers racing under a stolen stale lock must
95
+ // not interleave through one tmp path (falsification round 1, MINOR 6).
96
+ const tmpPath = `${filePath}.${process.pid}.tmp`;
97
+ fs.writeFileSync(tmpPath, JSON.stringify(value, null, 2) + '\n', 'utf-8');
98
+ fs.renameSync(tmpPath, filePath);
99
+ }
86
100
  function writeSyncState(totemDir, state) {
87
- const statePath = path.join(totemDir, SYNC_STATE_FILE);
88
- const dir = path.dirname(statePath);
89
- fs.mkdirSync(dir, { recursive: true });
90
- fs.writeFileSync(statePath, JSON.stringify(state, null, 2) + '\n', 'utf-8');
101
+ writeJsonAtomic(path.join(totemDir, SYNC_STATE_FILE), state);
102
+ }
103
+ /**
104
+ * Read the full-sync checkpoint (#2562). The caller has already established
105
+ * the file EXISTS (existence = the dirty marker); a parse/shape failure here
106
+ * means "dirty but unusable" — the caller restarts the full re-index from
107
+ * zero. A present-but-corrupt checkpoint is never treated as a clean state.
108
+ */
109
+ function readFullSyncCheckpoint(totemDir, onProgress) {
110
+ const cpPath = path.join(totemDir, FULL_SYNC_CHECKPOINT_FILE);
111
+ try {
112
+ const parsed = JSON.parse(fs.readFileSync(cpPath, 'utf-8'));
113
+ if (parsed &&
114
+ (parsed.startedHeadSha === null || typeof parsed.startedHeadSha === 'string') &&
115
+ typeof parsed.startedAt === 'number' &&
116
+ typeof parsed.indexExclusionHash === 'string' &&
117
+ typeof parsed.embedder?.provider === 'string' &&
118
+ typeof parsed.embedder?.model === 'string' &&
119
+ typeof parsed.embedder?.dimensions === 'number' &&
120
+ Array.isArray(parsed.completedFiles) &&
121
+ parsed.completedFiles.every((f) => typeof f === 'string')) {
122
+ return parsed;
123
+ }
124
+ onProgress?.(`Warning: malformed full-sync checkpoint at ${cpPath} — ignoring its progress.`);
125
+ return null;
126
+ // totem-context: intentional warn+null on an unreadable checkpoint (mmnto-ai/totem#2562) — dirty-but-unusable restarts the full re-index from zero; failing the sync over a torn checkpoint would wedge every subsequent run.
127
+ }
128
+ catch (err) {
129
+ onProgress?.(`Warning: failed to read full-sync checkpoint: ${err instanceof Error ? err.message : String(err)}`);
130
+ return null;
131
+ }
132
+ }
133
+ function writeFullSyncCheckpoint(totemDir, checkpoint) {
134
+ writeJsonAtomic(path.join(totemDir, FULL_SYNC_CHECKPOINT_FILE), checkpoint);
135
+ }
136
+ /**
137
+ * Whether a full re-index epoch is in progress (its dirty marker exists) for
138
+ * the given totem dir (#2562). Exposed for callers that spawn or gate syncs
139
+ * under bounded budgets — e.g. the MCP add-lesson tool's 60s-killed
140
+ * convenience sync, which a promoted paced resume can never finish
141
+ * (falsification round 3, MAJOR 1): such callers should skip and defer to the
142
+ * running epoch instead of timing out against it.
143
+ */
144
+ export function hasFullSyncCheckpoint(totemDir) {
145
+ return fs.existsSync(path.join(totemDir, FULL_SYNC_CHECKPOINT_FILE));
146
+ }
147
+ /**
148
+ * Best-effort marker delete at successful completion. A failed delete is loud
149
+ * but non-fatal: the next run resumes-full as a near-noop and retries the
150
+ * delete, so correctness converges (#2562).
151
+ */
152
+ function deleteFullSyncCheckpoint(totemDir, onProgress) {
153
+ try {
154
+ fs.rmSync(path.join(totemDir, FULL_SYNC_CHECKPOINT_FILE), { force: true });
155
+ // totem-context: intentional best-effort delete (mmnto-ai/totem#2562) — a failed marker delete only makes the next run resume-full as a near-noop and retry it; aborting a fully-successful sync over it would be the drift.
156
+ }
157
+ catch (err) {
158
+ onProgress?.(`Warning: failed to delete full-sync checkpoint: ${err instanceof Error ? err.message : String(err)}`);
159
+ }
91
160
  }
92
161
  /** Current schema identifier persisted to `.totem/index-manifest.json`. */
93
162
  export const INDEX_MANIFEST_SCHEMA = 'totem-index-manifest-v0.2';
@@ -175,15 +244,38 @@ async function runSyncInner(config, options) {
175
244
  const log = onProgress ?? (() => { });
176
245
  // 0. Capture HEAD SHA early — before any async work that might race with new commits
177
246
  const headSha = getHeadSha(projectRoot, log);
178
- // 1. Create embedder
247
+ // 1. Create embedder (or take the injected one — tests / embedding hosts).
248
+ // `log` is threaded through so a LazyEmbedder Ollama fallback is AUDIBLE —
249
+ // a silent vector-space switch mid-sync is sensor degradation (#2562).
179
250
  const embedding = requireEmbedding(config);
180
251
  log('Initializing embedding provider...');
181
- const embedder = createEmbedder(embedding);
252
+ const embedder = options.embedder ?? createEmbedder(embedding, log);
253
+ // Resume-compatibility fingerprint (#2562): a checkpointed epoch may only
254
+ // continue under the embedder configuration that started it — vectors from
255
+ // two configurations must never mix in one store. Mirrors writeIndexMeta.
256
+ const embedderFingerprint = {
257
+ provider: embedding.provider,
258
+ model: embedding.model ?? 'default',
259
+ dimensions: embedder.dimensions,
260
+ };
182
261
  // 2. Connect to store
183
262
  const storePath = path.join(projectRoot, config.lanceDir);
184
263
  const store = new LanceStore(storePath, embedder, { absolutePathRoot: projectRoot });
185
264
  await store.connect();
186
- // 2b. Auto-heal: force full sync when incremental is requested but DB is empty
265
+ const totemDir = path.join(projectRoot, config.totemDir);
266
+ // 2b (#2562). A live checkpoint marks an unfinished full re-index. It takes
267
+ // precedence over the requested mode — the partial store must complete
268
+ // before any incremental diff can be trusted again — and it subsumes the
269
+ // empty-store heal below (an interrupted full that never flushed).
270
+ let resumeFrom = null;
271
+ if (hasFullSyncCheckpoint(totemDir)) {
272
+ incremental = false;
273
+ resumeFrom = readFullSyncCheckpoint(totemDir, log);
274
+ log(resumeFrom
275
+ ? `Previous full re-index did not complete — resuming it (${resumeFrom.completedFiles.length} file(s) checkpointed).`
276
+ : 'Previous full re-index did not complete — restarting it from zero.');
277
+ }
278
+ // 2c. Auto-heal: force full sync when incremental is requested but DB is empty
187
279
  if (incremental && (await store.isEmpty())) {
188
280
  log('Empty database detected. Forcing full sync...');
189
281
  incremental = false;
@@ -191,7 +283,6 @@ async function runSyncInner(config, options) {
191
283
  // 3. Resolve files to process. Index exclusion unions both keys:
192
284
  // `ignorePatterns` (legacy dual-scope) + `indexIgnorePatterns` (index-only,
193
285
  // mmnto-ai/totem#1748) — only the former also gates lint/shield scope.
194
- const totemDir = path.join(projectRoot, config.totemDir);
195
286
  const exclusionPatterns = [...config.ignorePatterns, ...config.indexIgnorePatterns];
196
287
  const allFiles = resolveFiles(config.targets, projectRoot, exclusionPatterns, log);
197
288
  // Order-normalized hash of the effective exclusion set — persisted below and
@@ -199,6 +290,26 @@ async function runSyncInner(config, options) {
199
290
  const indexExclusionHash = hashIndexExclusionSet(exclusionPatterns);
200
291
  let filesToProcess;
201
292
  let deletedPaths = [];
293
+ // #2562: active-epoch checkpoint (full mode only) — written before the store
294
+ // is destroyed, appended after each successful flush, deleted on success.
295
+ let checkpoint = null;
296
+ let resumedWithoutReset = false;
297
+ const freshCheckpoint = () => ({
298
+ startedHeadSha: headSha,
299
+ startedAt: Date.now(),
300
+ indexExclusionHash,
301
+ embedder: embedderFingerprint,
302
+ completedFiles: [],
303
+ });
304
+ // The dirty marker MUST hit disk before the store is destroyed: a marker
305
+ // write failure aborts loudly with the store intact, so no window exists in
306
+ // which a reset store is unmarked (#2562).
307
+ async function beginFullSync(cp) {
308
+ writeFullSyncCheckpoint(totemDir, cp);
309
+ checkpoint = cp;
310
+ log('Full sync: resetting index...');
311
+ await store.reset();
312
+ }
202
313
  if (incremental) {
203
314
  // Persisted sync state carries both the diff baseline (lastSyncSha) and the
204
315
  // exclusion-set hash used for removal reconciliation (mmnto-ai/totem#2366).
@@ -212,7 +323,7 @@ async function runSyncInner(config, options) {
212
323
  const changedPaths = options.changedFiles ?? getChangedFiles(projectRoot, sinceRef, log);
213
324
  if (changedPaths === null) {
214
325
  log('Git diff failed, falling back to full sync...');
215
- await store.reset();
326
+ await beginFullSync(freshCheckpoint());
216
327
  filesToProcess = allFiles;
217
328
  log(`Full sync (fallback): ${filesToProcess.length} files to process`);
218
329
  }
@@ -261,9 +372,126 @@ async function runSyncInner(config, options) {
261
372
  ` (of ${allFiles.length} total)`);
262
373
  }
263
374
  }
375
+ else if (resumeFrom) {
376
+ // #2562 resume: NO reset — the interrupted epoch continues. Already-done
377
+ // derives from FOUR signals, not the checkpoint alone:
378
+ // 1. checkpointed (the epoch flushed it);
379
+ // 2. ∩ live (still resolved by the current target set);
380
+ // 3. ∩ actually-in-the-store — the store is ground truth: a store
381
+ // healed/nuked under a live checkpoint must not be trusted from
382
+ // paper (falsification round 1, MAJOR 1);
383
+ // 4. − moved-since-epoch: anything in git's tracked diff against
384
+ // startedHeadSha, PLUS anything whose mtime postdates the epoch
385
+ // start. The mtime arm applies to EVERY file, not only untracked
386
+ // ones (falsification round 2, F3: submodule and assume-unchanged
387
+ // files appear in neither git list, so an untracked-only mtime arm
388
+ // silently kept them stale) — a false-positive eviction is just a
389
+ // harmless re-embed. Untracked files are deliberately NOT evicted by
390
+ // git-list membership (it is permanent — round 1, MAJOR 2), and a
391
+ // non-git epoch (null startedHeadSha) has an empty tracked set, so
392
+ // the mtime arm carries it alone (MAJOR 4).
393
+ // The epoch diff never derives from options.changedFiles — a caller's
394
+ // diff window says nothing about what the crashed epoch covered.
395
+ const detailed = resumeFrom.startedHeadSha
396
+ ? getChangedFilesDetailed(projectRoot, resumeFrom.startedHeadSha, log)
397
+ : { tracked: [], untracked: [] };
398
+ if (detailed === null) {
399
+ log('Cannot diff against the interrupted epoch — restarting the full re-index from zero.');
400
+ await beginFullSync(freshCheckpoint());
401
+ filesToProcess = allFiles;
402
+ log(`Full sync: ${filesToProcess.length} files to process`);
403
+ }
404
+ else {
405
+ let indexedRaw = null;
406
+ try {
407
+ indexedRaw = await store.getDistinctPaths();
408
+ // totem-context: intentional warn+degrade on a getDistinctPaths failure (mmnto-ai/totem#2562, falsification round 2 F7 + round 3 MINOR 9a) — the completed set collapses to EMPTY below (every file re-embeds via delete-first, same cost as a reset-restart) but the table is NOT destroyed over a possibly-transient read failure, and the checkpoint's paper progress is RETAINED untrusted so a second crash does not erase a prior epoch's flushed work.
409
+ }
410
+ catch (err) {
411
+ log(`Warning: cannot verify the checkpoint against the store (getDistinctPaths failed: ${err instanceof Error ? err.message : String(err)}) — re-embedding everything without trusting the checkpoint.`);
412
+ }
413
+ const epochStart = resumeFrom.startedAt;
414
+ const byRel = new Map(allFiles.map((f) => [normalizeRel(f.relativePath), f]));
415
+ const tracked = new Set(detailed.tracked.map(normalizeRel));
416
+ const movedSinceEpoch = (rel) => {
417
+ if (tracked.has(rel))
418
+ return true;
419
+ const file = byRel.get(rel);
420
+ if (!file)
421
+ return true;
422
+ try {
423
+ return fs.statSync(file.absolutePath).mtimeMs > epochStart;
424
+ // totem-context: intentional treat-as-moved on a stat failure (mmnto-ai/totem#2562) — the file re-embeds (idempotent via delete-first) or the read site skips a vanished file loudly.
425
+ }
426
+ catch {
427
+ return true;
428
+ }
429
+ };
430
+ const indexed = indexedRaw === null ? null : new Set(indexedRaw.map(normalizeRel));
431
+ const completed = new Set(indexed === null
432
+ ? []
433
+ : resumeFrom.completedFiles
434
+ .map(normalizeRel)
435
+ .filter((rel) => byRel.has(rel) && indexed.has(rel) && !movedSinceEpoch(rel)));
436
+ filesToProcess = allFiles.filter((f) => !completed.has(normalizeRel(f.relativePath)));
437
+ // EFFECTIVE-vs-effective identity gate (falsification rounds 2–4). The
438
+ // epoch may only continue under the embedder identity that will
439
+ // ACTUALLY serve this run's embeds — config-vs-stamped is wrong in both
440
+ // directions (a silent fallback would mix vector spaces at the first
441
+ // insert; a persistent fallback would restart-loop forever). The
442
+ // exemption is RESOLUTION FAILURE with zero work remaining (round 3
443
+ // MINOR 10: an epoch that merely needs its marker cleared must not
444
+ // wedge behind a missing embedder) — NOT zero work itself: a resolvable
445
+ // mismatch must restart even with nothing left, or clearing the marker
446
+ // would rewrite index-meta to the new identity and launder the
447
+ // DATABASE_MISMATCH evidence the next incremental needs (round 4,
448
+ // MAJOR 1 — probed: dimension change + zero-work resume ⇒ silent mixed
449
+ // store).
450
+ let identityOk = true;
451
+ let effectiveNow = null;
452
+ try {
453
+ effectiveNow = (await embedder.resolveEffective?.()) ?? embedderFingerprint;
454
+ }
455
+ catch (err) {
456
+ if (filesToProcess.length > 0)
457
+ throw err; // work remains ⇒ fail loud, state intact
458
+ log(`Nothing left to embed and no embedder resolved (${err instanceof Error ? err.message : String(err)}) — clearing the marker unverified.`);
459
+ }
460
+ if (effectiveNow !== null) {
461
+ const fp = resumeFrom.embedder;
462
+ if (fp.provider !== effectiveNow.provider ||
463
+ fp.model !== effectiveNow.model ||
464
+ fp.dimensions !== effectiveNow.dimensions) {
465
+ log(`The embedder serving this run (${effectiveNow.provider}/${effectiveNow.model}) differs from the interrupted epoch's (${fp.provider}/${fp.model}) — its progress is unusable; restarting from zero.`);
466
+ identityOk = false;
467
+ }
468
+ }
469
+ if (!identityOk) {
470
+ await beginFullSync(freshCheckpoint());
471
+ filesToProcess = allFiles;
472
+ log(`Full sync: ${filesToProcess.length} files to process`);
473
+ }
474
+ else {
475
+ // Carry forward the verified entries, re-keyed to the current run's
476
+ // resolved paths — EXCEPT when the store was unreadable: then the
477
+ // paper progress is retained untrusted (round 3, MINOR 9a) so a
478
+ // second crash does not erase a prior epoch's flushed work; the next
479
+ // resume re-verifies it against a hopefully-readable store.
480
+ // startedHeadSha stays the ORIGINAL epoch SHA so every later resume
481
+ // re-diffs the full window (superset-safe).
482
+ const carried = indexed === null
483
+ ? [...resumeFrom.completedFiles]
484
+ : allFiles.map((f) => f.relativePath).filter((rel) => completed.has(normalizeRel(rel)));
485
+ checkpoint = { ...resumeFrom, indexExclusionHash, completedFiles: carried };
486
+ writeFullSyncCheckpoint(totemDir, checkpoint);
487
+ resumedWithoutReset = true;
488
+ log(`Resuming full re-index: ${filesToProcess.length} file(s) remaining of ${allFiles.length} ` +
489
+ `(${completed.size} verified already embedded). Delete ${config.totemDir}/${FULL_SYNC_CHECKPOINT_FILE} to restart from scratch.`);
490
+ }
491
+ }
492
+ }
264
493
  else {
265
- log('Full sync: resetting index...');
266
- await store.reset();
494
+ await beginFullSync(freshCheckpoint());
267
495
  filesToProcess = allFiles;
268
496
  log(`Full sync: ${filesToProcess.length} files to process`);
269
497
  }
@@ -288,6 +516,7 @@ async function runSyncInner(config, options) {
288
516
  // 4. Chunk files and stream to LanceDB in batches (bounded memory)
289
517
  let totalChunks = 0;
290
518
  let buffer = [];
519
+ let pendingFiles = [];
291
520
  async function flushBuffer() {
292
521
  if (buffer.length === 0)
293
522
  return;
@@ -295,21 +524,71 @@ async function runSyncInner(config, options) {
295
524
  totalChunks += buffer.length;
296
525
  log(` Embedded ${totalChunks} chunks so far`);
297
526
  buffer = [];
527
+ // #2562: chunks buffer at whole-file boundaries and store.insert embeds
528
+ // before any row lands, so a successful flush means every pending file is
529
+ // complete in the store — checkpoint them. An append failure is
530
+ // survivable: the file re-embeds on resume via the delete-first path.
531
+ const cp = checkpoint;
532
+ if (cp && pendingFiles.length > 0) {
533
+ cp.completedFiles.push(...pendingFiles);
534
+ // Persist the EFFECTIVE embedder identity once known (falsification
535
+ // round 1, MAJOR 3): a LazyEmbedder that silently fell back to Ollama
536
+ // must not leave a checkpoint fingerprinted as the configured provider,
537
+ // or the next resume would mix vector spaces across the epoch.
538
+ const effective = embedder.describeEffective?.();
539
+ if (effective)
540
+ cp.embedder = effective;
541
+ try {
542
+ writeFullSyncCheckpoint(totemDir, cp);
543
+ // totem-context: intentional warn+continue on a checkpoint-append failure (mmnto-ai/totem#2562) — the flushed chunks are safe in the store; worst case the file re-embeds on resume via the delete-first path.
544
+ }
545
+ catch (err) {
546
+ log(` Warning: failed to update full-sync checkpoint: ${err instanceof Error ? err.message : String(err)}`);
547
+ }
548
+ }
549
+ pendingFiles = [];
298
550
  }
299
551
  for (const file of filesToProcess) {
300
552
  const safeRel = sanitizeForTerminal(file.relativePath);
301
553
  log(`Chunking ${safeRel}...`);
554
+ // A file whose CURRENT state legitimately yields no rows (emptied of
555
+ // chunkable content, or swapped to a symlink the guard refuses) must
556
+ // still purge its OLD rows when re-processing in place — the baseline
557
+ // advances past the change at the end of this run, so no later
558
+ // incremental diff revisits it and the stale rows would be searchable
559
+ // forever (#2569 Greptile round: stale-rows-on-skip). The transient
560
+ // read-error skip below deliberately does NOT purge: deleting on a
561
+ // maybe-transient failure would LOSE good rows, worse than stale ones.
562
+ const purgeStaleRows = async () => {
563
+ if (incremental || resumedWithoutReset) {
564
+ await store.deleteByFile(file.relativePath);
565
+ }
566
+ };
567
+ // Symlink guard at the READ site (mmnto-ai/totem#2354, #2356 review):
568
+ // resolveFiles skips symlinks at discovery, but this read happens later,
569
+ // so a path swapped to a symlink after resolution would still be followed
570
+ // by readFileSync. Re-check here and skip — closes the discovery→read
571
+ // TOCTOU gap. The purge runs OUTSIDE the read-error catches (#2569 CR
572
+ // round 2): caught there, a purge failure would be mislabeled a read
573
+ // error and silently downgraded to a skip — permanent staleness. Outside
574
+ // them it fails loud and CONVERGES: the marker/stale baseline makes the
575
+ // next run re-evict the file and retry the delete.
576
+ let isSymlink;
577
+ try {
578
+ isSymlink = fs.lstatSync(file.absolutePath).isSymbolicLink();
579
+ // totem-context: intentional skip — a per-file stat failure (vanished/raced file, permission) logs and skips just that file so sync continues over the rest; aborting the whole sync over one unreadable file would be the drift, not the skip.
580
+ }
581
+ catch (err) {
582
+ log(` Skipping (read error: ${sanitizeForTerminal(err instanceof Error ? err.message : String(err))}): ${safeRel}`);
583
+ continue;
584
+ }
585
+ if (isSymlink) {
586
+ log(` Skipping symlink (not indexed): ${safeRel}`);
587
+ await purgeStaleRows();
588
+ continue;
589
+ }
302
590
  let content;
303
591
  try {
304
- // Symlink guard at the READ site (mmnto-ai/totem#2354, #2356 review):
305
- // resolveFiles skips symlinks at discovery, but this read happens later,
306
- // so a path swapped to a symlink after resolution would still be followed
307
- // by readFileSync. Re-check here and skip — closes the discovery→read
308
- // TOCTOU gap.
309
- if (fs.lstatSync(file.absolutePath).isSymbolicLink()) {
310
- log(` Skipping symlink (not indexed): ${safeRel}`);
311
- continue;
312
- }
313
592
  content = fs.readFileSync(file.absolutePath, 'utf-8');
314
593
  // totem-context: intentional skip — a per-file read failure (vanished/raced file, permission, decode) logs and skips just that file so sync continues over the rest; aborting the whole sync over one unreadable file would be the drift, not the skip.
315
594
  }
@@ -321,12 +600,14 @@ async function runSyncInner(config, options) {
321
600
  const chunks = chunker.chunk(content, file.relativePath, file.target.type);
322
601
  if (chunks.length === 0) {
323
602
  log(` No chunks extracted from ${file.relativePath}`);
603
+ await purgeStaleRows();
324
604
  continue;
325
605
  }
326
- // For incremental: delete old chunks for this file before inserting new ones
327
- if (incremental) {
328
- await store.deleteByFile(file.relativePath);
329
- }
606
+ // Delete old chunks for this file before inserting new ones — incremental
607
+ // re-embeds in place, and a #2562 resume (no reset) can hold this file's
608
+ // chunks already (changed-since-epoch, or a flush whose checkpoint append
609
+ // failed). Idempotent either way.
610
+ await purgeStaleRows();
330
611
  // Sanitize chunk content before embedding (adversarial ingestion scrubbing)
331
612
  // Deduplicate warnings per file to avoid log spam on files with widespread issues
332
613
  const warnedMessages = new Set();
@@ -346,6 +627,7 @@ async function runSyncInner(config, options) {
346
627
  chunk.contextPrefix = sanitizeForIngestion(chunk.contextPrefix, sanitizeOpts);
347
628
  }
348
629
  buffer.push(...chunks);
630
+ pendingFiles.push(file.relativePath);
349
631
  log(` ${chunks.length} chunks from ${file.relativePath}`);
350
632
  // Flush when buffer reaches batch size to keep memory bounded
351
633
  if (buffer.length >= EMBED_BATCH_SIZE) {
@@ -372,6 +654,13 @@ async function runSyncInner(config, options) {
372
654
  if (headSha) {
373
655
  writeSyncState(totemDir, { lastSyncSha: headSha, timestamp: Date.now(), indexExclusionHash });
374
656
  }
657
+ // #2562: the epoch is complete — clear the dirty marker only AFTER the fresh
658
+ // baseline is on disk. A crash between the two writes leaves marker + fresh
659
+ // baseline, which the next run resumes as a near-noop; the reverse order
660
+ // would leave a clean-claiming baseline over a still-marked store.
661
+ if (checkpoint) {
662
+ deleteFullSyncCheckpoint(totemDir, log);
663
+ }
375
664
  // Persist index metadata for dimension mismatch detection
376
665
  writeIndexMeta(totemDir, {
377
666
  provider: embedding.provider,
@@ -386,10 +675,7 @@ async function runSyncInner(config, options) {
386
675
  const writtenAt = new Date();
387
676
  const docs = await store.manifestDocuments(writtenAt);
388
677
  const manifest = buildIndexManifest({ documents: docs, headSha, writtenAt });
389
- const manifestPath = path.join(totemDir, 'index-manifest.json');
390
- const tmpManifestPath = manifestPath + '.tmp';
391
- fs.writeFileSync(tmpManifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
392
- fs.renameSync(tmpManifestPath, manifestPath);
678
+ writeJsonAtomic(path.join(totemDir, 'index-manifest.json'), manifest);
393
679
  }
394
680
  catch (err) {
395
681
  const detail = err instanceof Error ? err.message : typeof err === 'string' ? err : 'unknown error';
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/ingest/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/ingest/pipeline.ts"],"names":[],"mappings":"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"}