@mmnto/totem 1.109.0 → 1.111.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.
- package/dist/config-schema.d.ts +22 -0
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +6 -0
- package/dist/config-schema.js.map +1 -1
- package/dist/config-schema.test.js +21 -0
- package/dist/config-schema.test.js.map +1 -1
- package/dist/embedders/embedder.d.ts +29 -0
- package/dist/embedders/embedder.d.ts.map +1 -1
- package/dist/embedders/embedder.js +26 -3
- package/dist/embedders/embedder.js.map +1 -1
- package/dist/embedders/embedder.test.js +51 -0
- package/dist/embedders/embedder.test.js.map +1 -1
- package/dist/embedders/gemini-embedder.d.ts +18 -1
- package/dist/embedders/gemini-embedder.d.ts.map +1 -1
- package/dist/embedders/gemini-embedder.js +98 -5
- package/dist/embedders/gemini-embedder.js.map +1 -1
- package/dist/embedders/gemini-embedder.test.js +153 -1
- package/dist/embedders/gemini-embedder.test.js.map +1 -1
- package/dist/embedders/openai-embedder.d.ts +2 -1
- package/dist/embedders/openai-embedder.d.ts.map +1 -1
- package/dist/embedders/openai-embedder.js +21 -4
- package/dist/embedders/openai-embedder.js.map +1 -1
- package/dist/embedders/openai-embedder.test.d.ts +2 -0
- package/dist/embedders/openai-embedder.test.d.ts.map +1 -0
- package/dist/embedders/openai-embedder.test.js +102 -0
- package/dist/embedders/openai-embedder.test.js.map +1 -0
- package/dist/embedders/pacing.d.ts +11 -0
- package/dist/embedders/pacing.d.ts.map +1 -0
- package/dist/embedders/pacing.js +23 -0
- package/dist/embedders/pacing.js.map +1 -0
- package/dist/embedders/pacing.test.d.ts +2 -0
- package/dist/embedders/pacing.test.d.ts.map +1 -0
- package/dist/embedders/pacing.test.js +50 -0
- package/dist/embedders/pacing.test.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/ingest/file-resolver.d.ts +14 -0
- package/dist/ingest/file-resolver.d.ts.map +1 -1
- package/dist/ingest/file-resolver.js +27 -9
- package/dist/ingest/file-resolver.js.map +1 -1
- package/dist/ingest/pipeline.d.ts +9 -0
- package/dist/ingest/pipeline.d.ts.map +1 -1
- package/dist/ingest/pipeline.js +356 -33
- package/dist/ingest/pipeline.js.map +1 -1
- package/dist/ingest/pipeline.test.js +456 -0
- package/dist/ingest/pipeline.test.js.map +1 -1
- package/dist/ingest/sync.d.ts +2 -2
- package/dist/ingest/sync.d.ts.map +1 -1
- package/dist/ingest/sync.js +2 -2
- package/dist/ingest/sync.js.map +1 -1
- package/dist/ledger.d.ts +4 -4
- package/dist/lock.d.ts +55 -6
- package/dist/lock.d.ts.map +1 -1
- package/dist/lock.js +180 -39
- package/dist/lock.js.map +1 -1
- package/dist/lock.test.js +201 -1
- package/dist/lock.test.js.map +1 -1
- package/dist/types.d.ts +45 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
1
2
|
import * as fs from 'node:fs';
|
|
2
3
|
import * as os from 'node:os';
|
|
3
4
|
import * as path from 'node:path';
|
|
@@ -144,6 +145,461 @@ describe('runSync embedding guard', () => {
|
|
|
144
145
|
await expect(runSync(config, { projectRoot: os.tmpdir(), incremental: false })).rejects.toThrow('No embedding provider configured');
|
|
145
146
|
});
|
|
146
147
|
});
|
|
148
|
+
// ─── Full-sync crash recovery (#2562, ADR-115 Train-1 induced regression) ───
|
|
149
|
+
//
|
|
150
|
+
// The defect: `--full` reset the store, crashed mid-embed, and left the
|
|
151
|
+
// previous SUCCESSFUL sync's baseline behind — so the next plain `totem sync`
|
|
152
|
+
// diffed from the old SHA, saw 0 changed files, and reported "Sync complete:
|
|
153
|
+
// 0 files" over the gutted store. These tests reproduce that state with a
|
|
154
|
+
// crash-at-flush-K embedder and lock in the checkpoint/resume contract.
|
|
155
|
+
const FULL_SYNC_CHECKPOINT_FILE = 'cache/full-sync-checkpoint.json';
|
|
156
|
+
const HEAVY_TIMEOUT_MS = 60_000;
|
|
157
|
+
/** Embeds deterministically; throws a quota-shaped 429 from call N onward. */
|
|
158
|
+
class ScriptedEmbedder {
|
|
159
|
+
dimensions;
|
|
160
|
+
embedCalls = [];
|
|
161
|
+
failFromCall = null;
|
|
162
|
+
onCall;
|
|
163
|
+
/** Awaited at embed entry — lets a cell hold the embed open while timers fire (#2564). */
|
|
164
|
+
onCallAsync;
|
|
165
|
+
describeEffective;
|
|
166
|
+
resolveEffective;
|
|
167
|
+
calls = 0;
|
|
168
|
+
constructor(dimensions = 4) {
|
|
169
|
+
this.dimensions = dimensions;
|
|
170
|
+
}
|
|
171
|
+
async embed(texts) {
|
|
172
|
+
this.calls++;
|
|
173
|
+
this.onCall?.();
|
|
174
|
+
if (this.onCallAsync)
|
|
175
|
+
await this.onCallAsync();
|
|
176
|
+
if (this.failFromCall !== null && this.calls >= this.failFromCall) {
|
|
177
|
+
throw Object.assign(new Error('quota exceeded: RESOURCE_EXHAUSTED'), { status: 429 });
|
|
178
|
+
}
|
|
179
|
+
this.embedCalls.push([...texts]);
|
|
180
|
+
return texts.map((_, i) => new Array(this.dimensions).fill(i % 7));
|
|
181
|
+
}
|
|
182
|
+
/** All text embedded across every call, joined for content assertions. */
|
|
183
|
+
allText() {
|
|
184
|
+
return this.embedCalls.flat().join('\n');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
describe('full-sync crash recovery (#2562)', () => {
|
|
188
|
+
let tmpDir;
|
|
189
|
+
let config;
|
|
190
|
+
const run = (embedder, incremental) => runSync(config, { projectRoot: tmpDir, incremental, embedder });
|
|
191
|
+
const checkpointPath = () => path.join(tmpDir, '.totem', FULL_SYNC_CHECKPOINT_FILE);
|
|
192
|
+
const syncStatePath = () => path.join(tmpDir, '.totem', 'cache/sync-state.json');
|
|
193
|
+
const git = (...args) => execFileSync('git', args, { cwd: tmpDir, stdio: 'pipe' });
|
|
194
|
+
/** Exactly 80 chunks per file (one per `##` section; the `#` preamble has
|
|
195
|
+
* no body text, so it yields no chunk) — 240 total. Two files overflow
|
|
196
|
+
* EMBED_BATCH_SIZE (100), so the first flush lands at a file boundary and
|
|
197
|
+
* the crash-at-flush-2 embedder dies on the third file's flush with two
|
|
198
|
+
* files already in the store. */
|
|
199
|
+
const TOTAL_CHUNKS = 240;
|
|
200
|
+
const writeCorpusFileTo = (dir, name, stem) => {
|
|
201
|
+
const sections = Array.from({ length: 80 }, (_, i) => `## ${stem} ${i}\n\n${stem}-content-${i}\n`).join('\n');
|
|
202
|
+
fs.writeFileSync(path.join(dir, name), `# ${stem}\n\n${sections}`, 'utf-8');
|
|
203
|
+
};
|
|
204
|
+
const writeCorpusFile = (name, stem) => writeCorpusFileTo(tmpDir, name, stem);
|
|
205
|
+
beforeEach(() => {
|
|
206
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-fullsync-'));
|
|
207
|
+
config = TotemConfigSchema.parse({
|
|
208
|
+
targets: [{ glob: '*.md', type: 'spec', strategy: 'markdown-heading' }],
|
|
209
|
+
embedding: { provider: 'gemini', model: 'test-model', dimensions: 4 },
|
|
210
|
+
});
|
|
211
|
+
writeCorpusFile('a.md', 'alpha');
|
|
212
|
+
writeCorpusFile('b.md', 'bravo');
|
|
213
|
+
writeCorpusFile('c.md', 'charlie');
|
|
214
|
+
git('init');
|
|
215
|
+
git('config', 'user.email', 'test@test.com');
|
|
216
|
+
git('config', 'user.name', 'Test');
|
|
217
|
+
git('add', '--', 'a.md', 'b.md', 'c.md');
|
|
218
|
+
git('commit', '-m', 'init');
|
|
219
|
+
});
|
|
220
|
+
afterEach(() => {
|
|
221
|
+
cleanTmpDir(tmpDir);
|
|
222
|
+
});
|
|
223
|
+
const ALL_FILES = ['a.md', 'b.md', 'c.md'];
|
|
224
|
+
const STEM = { 'a.md': 'alpha', 'b.md': 'bravo', 'c.md': 'charlie' };
|
|
225
|
+
const readCheckpoint = () => JSON.parse(fs.readFileSync(checkpointPath(), 'utf-8'));
|
|
226
|
+
/** The one file the crashed epoch never flushed (glob order is not guaranteed,
|
|
227
|
+
* so which file that is must be READ from the checkpoint, not assumed). */
|
|
228
|
+
const unflushedFile = () => {
|
|
229
|
+
const { completedFiles } = readCheckpoint();
|
|
230
|
+
const missing = ALL_FILES.filter((f) => !completedFiles.includes(f));
|
|
231
|
+
expect(missing).toHaveLength(1);
|
|
232
|
+
return missing[0];
|
|
233
|
+
};
|
|
234
|
+
/** Crash a full sync at the second flush: two files land, the third does not. */
|
|
235
|
+
async function crashFullSync() {
|
|
236
|
+
const crasher = new ScriptedEmbedder();
|
|
237
|
+
crasher.failFromCall = 2;
|
|
238
|
+
await expect(run(crasher, false)).rejects.toThrow('RESOURCE_EXHAUSTED');
|
|
239
|
+
return crasher;
|
|
240
|
+
}
|
|
241
|
+
it('#2564: a lock stolen mid-embed aborts loudly at the flush boundary, keeps the marker, and leaves the thief lock intact', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
242
|
+
const lockFile = path.join(tmpDir, '.totem', 'sync.lock');
|
|
243
|
+
const foreign = {
|
|
244
|
+
pid: 424242,
|
|
245
|
+
timestamp: Date.now(),
|
|
246
|
+
createdAt: Date.now(),
|
|
247
|
+
holderId: 'thief-holder',
|
|
248
|
+
};
|
|
249
|
+
const embedder = new ScriptedEmbedder();
|
|
250
|
+
let swapped = false;
|
|
251
|
+
embedder.onCallAsync = async () => {
|
|
252
|
+
// First flush (two files) lands clean; the theft hits during the
|
|
253
|
+
// second flush's embed — the paced multi-minute window from the issue.
|
|
254
|
+
if (embedder.embedCalls.length >= 1 && !swapped) {
|
|
255
|
+
swapped = true;
|
|
256
|
+
fs.writeFileSync(lockFile, JSON.stringify(foreign));
|
|
257
|
+
// Idle long enough for a 25ms heartbeat to observe and latch.
|
|
258
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
await expect(runSync(config, {
|
|
262
|
+
projectRoot: tmpDir,
|
|
263
|
+
incremental: false,
|
|
264
|
+
embedder,
|
|
265
|
+
lockOptions: { heartbeatIntervalMs: 25 },
|
|
266
|
+
})).rejects.toThrow('Sync lock was lost');
|
|
267
|
+
expect(swapped).toBe(true);
|
|
268
|
+
// The mutating degraded path preserved crash safety: the marker is
|
|
269
|
+
// intact...
|
|
270
|
+
expect(fs.existsSync(checkpointPath())).toBe(true);
|
|
271
|
+
// ...and the abort came from the flush EXIT probe, BEFORE the
|
|
272
|
+
// post-theft checkpoint append: only the two pre-theft files are
|
|
273
|
+
// checkpointed. Deleting the exit probe lets the last flush append the
|
|
274
|
+
// third file and fails here (leg MAJOR-1 — an existsSync check alone
|
|
275
|
+
// cannot tell WHICH probe fired). The ENTRY probe is not inducible
|
|
276
|
+
// in-process on the full path — no await exists between one flush's
|
|
277
|
+
// exit probe and the next flush's entry probe for a beat to latch in
|
|
278
|
+
// (leg MINOR-R1, disclosed); its marginal window is the incremental
|
|
279
|
+
// purge gap, and a miss converges at the next probe.
|
|
280
|
+
expect(readCheckpoint().completedFiles).toHaveLength(2);
|
|
281
|
+
// ...no completion-claiming baseline was written...
|
|
282
|
+
expect(fs.existsSync(syncStatePath())).toBe(false);
|
|
283
|
+
// ...and the thief's lock survived our release (no cascade theft).
|
|
284
|
+
expect(JSON.parse(fs.readFileSync(lockFile, 'utf-8'))).toEqual(foreign);
|
|
285
|
+
// Recovery control: with the thief gone, the next sync resumes the
|
|
286
|
+
// epoch and completes the full corpus — and actually re-embeds the
|
|
287
|
+
// un-checkpointed file (store.count() alone would pass on a zero-work
|
|
288
|
+
// resume, leg MAJOR-1).
|
|
289
|
+
fs.unlinkSync(lockFile);
|
|
290
|
+
const finisher = new ScriptedEmbedder();
|
|
291
|
+
const result = await run(finisher, false);
|
|
292
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
293
|
+
expect(finisher.embedCalls.length).toBeGreaterThan(0);
|
|
294
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
295
|
+
});
|
|
296
|
+
it('a crashed --full leaves the dirty marker with only fully-flushed files checkpointed', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
297
|
+
const crasher = new ScriptedEmbedder();
|
|
298
|
+
crasher.failFromCall = 2;
|
|
299
|
+
let markerSeenDuringEmbed = false;
|
|
300
|
+
crasher.onCall = () => {
|
|
301
|
+
markerSeenDuringEmbed ||= fs.existsSync(checkpointPath());
|
|
302
|
+
};
|
|
303
|
+
await expect(run(crasher, false)).rejects.toThrow('RESOURCE_EXHAUSTED');
|
|
304
|
+
// The marker was already on disk when the first embed call ran — no
|
|
305
|
+
// window exists where the store is reset but unmarked.
|
|
306
|
+
expect(markerSeenDuringEmbed).toBe(true);
|
|
307
|
+
// Exactly the two fully-flushed files are checkpointed; the file whose
|
|
308
|
+
// flush crashed is not (whole-file flush boundaries).
|
|
309
|
+
const cp = JSON.parse(fs.readFileSync(checkpointPath(), 'utf-8'));
|
|
310
|
+
expect(cp.completedFiles).toHaveLength(2);
|
|
311
|
+
expect(ALL_FILES.filter((f) => !cp.completedFiles.includes(f))).toHaveLength(1);
|
|
312
|
+
expect(cp.embedder).toEqual({ provider: 'gemini', model: 'test-model', dimensions: 4 });
|
|
313
|
+
expect(typeof cp.startedHeadSha).toBe('string');
|
|
314
|
+
// No successful sync ever completed — no baseline may exist.
|
|
315
|
+
expect(fs.existsSync(syncStatePath())).toBe(false);
|
|
316
|
+
});
|
|
317
|
+
it('INDUCED REGRESSION: the next plain sync resumes the full re-index instead of reporting complete over a partial store', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
318
|
+
// The lying sensor NEEDS a surviving baseline from a previous
|
|
319
|
+
// SUCCESSFUL sync: pre-fix, the crashed --full left this state file
|
|
320
|
+
// intact over the reset store, the next plain sync diffed
|
|
321
|
+
// lastSyncSha..HEAD, saw 0 changed files, and reported "Sync
|
|
322
|
+
// complete: 0 files" (falsification round 1, MAJOR 5 — without this
|
|
323
|
+
// baseline the pre-fix code fails via the git-diff fallback instead).
|
|
324
|
+
const first = await run(new ScriptedEmbedder(), false);
|
|
325
|
+
expect(first.totalChunks).toBe(TOTAL_CHUNKS);
|
|
326
|
+
const staleState = fs.readFileSync(syncStatePath(), 'utf-8');
|
|
327
|
+
await crashFullSync();
|
|
328
|
+
const missing = unflushedFile();
|
|
329
|
+
const flushed = ALL_FILES.filter((f) => f !== missing);
|
|
330
|
+
// The crash left the stale baseline byte-identical — the defect's
|
|
331
|
+
// exact precondition.
|
|
332
|
+
expect(fs.readFileSync(syncStatePath(), 'utf-8')).toBe(staleState);
|
|
333
|
+
const resumer = new ScriptedEmbedder();
|
|
334
|
+
const result = await run(resumer, true); // plain `totem sync`
|
|
335
|
+
// Pre-fix this reported 0 files processed over a partial store.
|
|
336
|
+
expect(result.filesProcessed).toBe(1);
|
|
337
|
+
expect(resumer.allText()).toContain(`${STEM[missing]}-content-1`);
|
|
338
|
+
for (const kept of flushed) {
|
|
339
|
+
expect(resumer.allText()).not.toContain(`${STEM[kept]}-content-1`);
|
|
340
|
+
}
|
|
341
|
+
// The store now holds the whole corpus, the marker is gone, and the
|
|
342
|
+
// baseline points at HEAD — the epoch completed for real.
|
|
343
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
344
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
345
|
+
const state = JSON.parse(fs.readFileSync(syncStatePath(), 'utf-8'));
|
|
346
|
+
const headSha = execFileSync('git', ['rev-parse', 'HEAD'], {
|
|
347
|
+
cwd: tmpDir,
|
|
348
|
+
encoding: 'utf-8',
|
|
349
|
+
}).trim();
|
|
350
|
+
expect(state.lastSyncSha).toBe(headSha);
|
|
351
|
+
});
|
|
352
|
+
it('a file changed since the crashed epoch re-embeds on resume', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
353
|
+
await crashFullSync();
|
|
354
|
+
const missing = unflushedFile();
|
|
355
|
+
const [mutated, untouched] = ALL_FILES.filter((f) => f !== missing);
|
|
356
|
+
fs.appendFileSync(path.join(tmpDir, mutated), `\n## ${STEM[mutated]} extra\n\n${STEM[mutated]}-mutated\n`, 'utf-8');
|
|
357
|
+
git('add', '--', mutated);
|
|
358
|
+
git('commit', '-m', 'mutate a flushed file');
|
|
359
|
+
const resumer = new ScriptedEmbedder();
|
|
360
|
+
const result = await run(resumer, true);
|
|
361
|
+
// The changed-since-epoch flushed file re-embeds alongside the
|
|
362
|
+
// never-flushed one; the untouched flushed file stays skipped.
|
|
363
|
+
expect(result.filesProcessed).toBe(2);
|
|
364
|
+
expect(resumer.allText()).toContain(`${STEM[mutated]}-mutated`);
|
|
365
|
+
expect(resumer.allText()).toContain(`${STEM[missing]}-content-1`);
|
|
366
|
+
expect(resumer.allText()).not.toContain(`${STEM[untouched]}-content-1`);
|
|
367
|
+
});
|
|
368
|
+
it('GT round: a completed file EMPTIED since the epoch purges its stale rows on resume', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
369
|
+
await crashFullSync();
|
|
370
|
+
const missing = unflushedFile();
|
|
371
|
+
const [emptied] = ALL_FILES.filter((f) => f !== missing);
|
|
372
|
+
// The file now yields ZERO chunks. Its old rows must still purge —
|
|
373
|
+
// after this run the baseline advances past the change, so no later
|
|
374
|
+
// incremental diff revisits it and stale rows would be searchable
|
|
375
|
+
// forever (#2569 Greptile P1).
|
|
376
|
+
fs.writeFileSync(path.join(tmpDir, emptied), `# ${STEM[emptied]}\n`, 'utf-8');
|
|
377
|
+
git('add', '--', emptied);
|
|
378
|
+
git('commit', '-m', 'empty a flushed file');
|
|
379
|
+
const resumer = new ScriptedEmbedder();
|
|
380
|
+
const result = await run(resumer, true);
|
|
381
|
+
// The emptied file's 80 rows are gone; the never-flushed file's 80 landed.
|
|
382
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS - 80);
|
|
383
|
+
expect(resumer.allText()).not.toContain(`${STEM[emptied]}-content-1`);
|
|
384
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
385
|
+
});
|
|
386
|
+
it('a corrupt checkpoint is dirty-but-unusable: the full re-index restarts from zero', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
387
|
+
await crashFullSync();
|
|
388
|
+
fs.writeFileSync(checkpointPath(), '{ not json !!', 'utf-8');
|
|
389
|
+
const resumer = new ScriptedEmbedder();
|
|
390
|
+
const result = await run(resumer, true);
|
|
391
|
+
expect(result.filesProcessed).toBe(3);
|
|
392
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
393
|
+
});
|
|
394
|
+
it('an embedder-config change makes checkpointed progress unusable — restart from zero', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
395
|
+
await crashFullSync();
|
|
396
|
+
const differentDims = new ScriptedEmbedder(8);
|
|
397
|
+
const result = await run(differentDims, true);
|
|
398
|
+
expect(result.filesProcessed).toBe(3);
|
|
399
|
+
expect(differentDims.allText()).toContain('alpha-content-1');
|
|
400
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
401
|
+
});
|
|
402
|
+
it('a marker-write failure aborts BEFORE the store is destroyed', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
403
|
+
const healthy = new ScriptedEmbedder();
|
|
404
|
+
const first = await run(healthy, false);
|
|
405
|
+
expect(first.totalChunks).toBe(TOTAL_CHUNKS);
|
|
406
|
+
// Occupy the checkpoint path with a directory. The run first reads it
|
|
407
|
+
// as a checkpoint (EISDIR → dirty-but-unusable), then the restart's
|
|
408
|
+
// marker write fails at the atomic rename — and the reset never runs.
|
|
409
|
+
fs.mkdirSync(checkpointPath(), { recursive: true });
|
|
410
|
+
await expect(run(new ScriptedEmbedder(), false)).rejects.toThrow();
|
|
411
|
+
fs.rmSync(checkpointPath(), { recursive: true, force: true });
|
|
412
|
+
fs.rmSync(`${checkpointPath()}.${process.pid}.tmp`, { force: true });
|
|
413
|
+
// The store survived the aborted run: a plain incremental sync sees a
|
|
414
|
+
// clean baseline and the full chunk count, not an empty or partial store.
|
|
415
|
+
const after = await run(new ScriptedEmbedder(), true);
|
|
416
|
+
expect(after.filesProcessed).toBe(0);
|
|
417
|
+
expect(after.totalChunks).toBe(first.totalChunks);
|
|
418
|
+
});
|
|
419
|
+
// ─── Falsification round 1 regressions ───
|
|
420
|
+
it('MAJOR 1: a store emptied under a live checkpoint is re-embedded in full, not trusted from paper', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
421
|
+
const first = await run(new ScriptedEmbedder(), false);
|
|
422
|
+
expect(first.totalChunks).toBe(TOTAL_CHUNKS);
|
|
423
|
+
await crashFullSync();
|
|
424
|
+
// Simulate the heal-by-nuke path (LanceStore.connect on a corrupt
|
|
425
|
+
// dataset): the store vanishes while the checkpoint still claims two
|
|
426
|
+
// files are embedded.
|
|
427
|
+
fs.rmSync(path.join(tmpDir, config.lanceDir), { recursive: true, force: true });
|
|
428
|
+
const resumer = new ScriptedEmbedder();
|
|
429
|
+
const result = await run(resumer, true);
|
|
430
|
+
// Pre-fold this embedded ONLY the unflushed file over an empty store
|
|
431
|
+
// and wrote a clean baseline — the #2562 lying sensor by another door.
|
|
432
|
+
expect(result.filesProcessed).toBe(3);
|
|
433
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
434
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
435
|
+
});
|
|
436
|
+
it('MAJOR 2: untracked corpus files stay checkpointed across a resume (quota convergence)', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
437
|
+
// Make the corpus untracked-but-live: git has no history for it, so it
|
|
438
|
+
// is a PERMANENT member of git's changed-union. Pre-fold that union
|
|
439
|
+
// evicted these files from the completed set on every resume — quota
|
|
440
|
+
// re-spent on the same files forever, never converging.
|
|
441
|
+
git('rm', '--cached', '--', 'a.md', 'b.md', 'c.md');
|
|
442
|
+
git('commit', '-m', 'untrack corpus');
|
|
443
|
+
await crashFullSync();
|
|
444
|
+
const missing = unflushedFile();
|
|
445
|
+
const resumer = new ScriptedEmbedder();
|
|
446
|
+
const result = await run(resumer, true);
|
|
447
|
+
expect(result.filesProcessed).toBe(1);
|
|
448
|
+
expect(resumer.allText()).toContain(`${STEM[missing]}-content-1`);
|
|
449
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
450
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
451
|
+
});
|
|
452
|
+
it('MAJOR 2: an untracked completed file MODIFIED after the crash still re-embeds (mtime arm)', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
453
|
+
git('rm', '--cached', '--', 'a.md', 'b.md', 'c.md');
|
|
454
|
+
git('commit', '-m', 'untrack corpus');
|
|
455
|
+
await crashFullSync();
|
|
456
|
+
const missing = unflushedFile();
|
|
457
|
+
const [mutated] = ALL_FILES.filter((f) => f !== missing);
|
|
458
|
+
// Ensure the edit's mtime lands measurably after the epoch start.
|
|
459
|
+
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
460
|
+
fs.appendFileSync(path.join(tmpDir, mutated), `\n## ${STEM[mutated]} extra\n\n${STEM[mutated]}-mutated\n`, 'utf-8');
|
|
461
|
+
const resumer = new ScriptedEmbedder();
|
|
462
|
+
const result = await run(resumer, true);
|
|
463
|
+
expect(result.filesProcessed).toBe(2); // mutated (mtime > epoch) + never-flushed
|
|
464
|
+
expect(resumer.allText()).toContain(`${STEM[mutated]}-mutated`);
|
|
465
|
+
expect(resumer.allText()).toContain(`${STEM[missing]}-content-1`);
|
|
466
|
+
});
|
|
467
|
+
it('MAJOR 3: a checkpoint stamped with a fallback embedder identity restarts instead of resuming', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
468
|
+
// The crashing run's embedder reports an EFFECTIVE identity (the
|
|
469
|
+
// LazyEmbedder Ollama-fallback shape) that differs from the configured
|
|
470
|
+
// gemini fingerprint — the checkpoint must record the effective one.
|
|
471
|
+
const crasher = new ScriptedEmbedder();
|
|
472
|
+
crasher.failFromCall = 2;
|
|
473
|
+
crasher.describeEffective = () => ({
|
|
474
|
+
provider: 'ollama',
|
|
475
|
+
model: 'nomic-embed-text',
|
|
476
|
+
dimensions: 4,
|
|
477
|
+
});
|
|
478
|
+
await expect(run(crasher, false)).rejects.toThrow('RESOURCE_EXHAUSTED');
|
|
479
|
+
const cp = JSON.parse(fs.readFileSync(checkpointPath(), 'utf-8'));
|
|
480
|
+
expect(cp.embedder.provider).toBe('ollama');
|
|
481
|
+
// The resume runs under the configured gemini fingerprint — the
|
|
482
|
+
// stamped ollama progress is unusable: vector spaces must not mix.
|
|
483
|
+
const resumer = new ScriptedEmbedder();
|
|
484
|
+
const result = await run(resumer, true);
|
|
485
|
+
expect(result.filesProcessed).toBe(3);
|
|
486
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
487
|
+
});
|
|
488
|
+
it('F2: a PERSISTENT fallback resumes as itself instead of restart-looping', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
489
|
+
const ollamaId = { provider: 'ollama', model: 'nomic-embed-text', dimensions: 4 };
|
|
490
|
+
const crasher = new ScriptedEmbedder();
|
|
491
|
+
crasher.failFromCall = 2;
|
|
492
|
+
crasher.describeEffective = () => ollamaId;
|
|
493
|
+
await expect(run(crasher, false)).rejects.toThrow('RESOURCE_EXHAUSTED');
|
|
494
|
+
const missing = unflushedFile();
|
|
495
|
+
// The fallback persists into the next run: it resolves to the SAME
|
|
496
|
+
// effective identity, so the epoch continues. Pre-fold, the gate
|
|
497
|
+
// compared the stamped ollama identity against the CONFIG (gemini)
|
|
498
|
+
// fingerprint and restart-looped forever, resetting the store on
|
|
499
|
+
// every attempt — a corpus needing more than one run never completed.
|
|
500
|
+
const resumer = new ScriptedEmbedder();
|
|
501
|
+
resumer.resolveEffective = () => Promise.resolve(ollamaId);
|
|
502
|
+
const result = await run(resumer, true);
|
|
503
|
+
expect(result.filesProcessed).toBe(1);
|
|
504
|
+
expect(resumer.allText()).toContain(`${STEM[missing]}-content-1`);
|
|
505
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
506
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
507
|
+
});
|
|
508
|
+
it('F1: a run falling back mid-resume restarts BEFORE inserting into the genuine epoch', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
509
|
+
await crashFullSync(); // checkpoint carries the genuine (gemini) fingerprint
|
|
510
|
+
// This run's embedder RESOLVES to an ollama fallback. The gate must
|
|
511
|
+
// compare effective-vs-effective and restart — pre-fold it compared
|
|
512
|
+
// config-vs-stamped (gemini vs gemini → match) and ollama vectors were
|
|
513
|
+
// inserted beside the epoch's gemini rows, mixing vector spaces.
|
|
514
|
+
const resumer = new ScriptedEmbedder();
|
|
515
|
+
resumer.resolveEffective = () => Promise.resolve({ provider: 'ollama', model: 'nomic-embed-text', dimensions: 4 });
|
|
516
|
+
const result = await run(resumer, true);
|
|
517
|
+
expect(result.filesProcessed).toBe(3);
|
|
518
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
519
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
520
|
+
});
|
|
521
|
+
it('MINOR 10: a zero-work resume clears the marker WITHOUT requiring an embedder', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
522
|
+
// Epoch crashed between its final flush and the marker delete: the
|
|
523
|
+
// store is complete but the marker survives. The resume has nothing to
|
|
524
|
+
// embed, so the identity gate must not force embedder resolution — a
|
|
525
|
+
// missing embedder would otherwise wedge the epoch closed forever.
|
|
526
|
+
const first = await run(new ScriptedEmbedder(), false);
|
|
527
|
+
expect(first.totalChunks).toBe(TOTAL_CHUNKS);
|
|
528
|
+
const headSha = execFileSync('git', ['rev-parse', 'HEAD'], {
|
|
529
|
+
cwd: tmpDir,
|
|
530
|
+
encoding: 'utf-8',
|
|
531
|
+
}).trim();
|
|
532
|
+
fs.writeFileSync(checkpointPath(), JSON.stringify({
|
|
533
|
+
startedHeadSha: headSha,
|
|
534
|
+
startedAt: Date.now(),
|
|
535
|
+
indexExclusionHash: 'whatever',
|
|
536
|
+
embedder: { provider: 'gemini', model: 'test-model', dimensions: 4 },
|
|
537
|
+
completedFiles: ALL_FILES,
|
|
538
|
+
}), 'utf-8');
|
|
539
|
+
const unresolvable = new ScriptedEmbedder();
|
|
540
|
+
unresolvable.resolveEffective = () => Promise.reject(new Error('no embedder available'));
|
|
541
|
+
const result = await run(unresolvable, true);
|
|
542
|
+
expect(result.filesProcessed).toBe(0);
|
|
543
|
+
expect(unresolvable.embedCalls).toHaveLength(0);
|
|
544
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
545
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
546
|
+
});
|
|
547
|
+
it('ROUND 4: a RESOLVABLE identity mismatch restarts even with zero work remaining', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
548
|
+
// The zero-work exemption is for RESOLUTION FAILURE only. A resolvable
|
|
549
|
+
// mismatch with nothing left to embed must still restart: clearing the
|
|
550
|
+
// marker would rewrite index-meta to the new identity and launder the
|
|
551
|
+
// DATABASE_MISMATCH evidence over a store built in the old space.
|
|
552
|
+
const first = await run(new ScriptedEmbedder(), false);
|
|
553
|
+
expect(first.totalChunks).toBe(TOTAL_CHUNKS);
|
|
554
|
+
const headSha = execFileSync('git', ['rev-parse', 'HEAD'], {
|
|
555
|
+
cwd: tmpDir,
|
|
556
|
+
encoding: 'utf-8',
|
|
557
|
+
}).trim();
|
|
558
|
+
fs.writeFileSync(checkpointPath(), JSON.stringify({
|
|
559
|
+
startedHeadSha: headSha,
|
|
560
|
+
startedAt: Date.now(),
|
|
561
|
+
indexExclusionHash: 'whatever',
|
|
562
|
+
embedder: { provider: 'ollama', model: 'nomic-embed-text', dimensions: 4 },
|
|
563
|
+
completedFiles: ALL_FILES,
|
|
564
|
+
}), 'utf-8');
|
|
565
|
+
// Plain resolvable embedder — falls back to the config (gemini)
|
|
566
|
+
// fingerprint, which mismatches the stamped ollama identity.
|
|
567
|
+
const resumer = new ScriptedEmbedder();
|
|
568
|
+
const result = await run(resumer, true);
|
|
569
|
+
expect(result.filesProcessed).toBe(3); // restarted, not cleared
|
|
570
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
571
|
+
expect(fs.existsSync(checkpointPath())).toBe(false);
|
|
572
|
+
});
|
|
573
|
+
it('MAJOR 4: a non-git project resumes via the mtime arm instead of restarting every run', { timeout: HEAVY_TIMEOUT_MS }, async () => {
|
|
574
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-nongit-'));
|
|
575
|
+
try {
|
|
576
|
+
writeCorpusFileTo(dir, 'a.md', 'alpha');
|
|
577
|
+
writeCorpusFileTo(dir, 'b.md', 'bravo');
|
|
578
|
+
writeCorpusFileTo(dir, 'c.md', 'charlie');
|
|
579
|
+
const crasher = new ScriptedEmbedder();
|
|
580
|
+
crasher.failFromCall = 2;
|
|
581
|
+
await expect(runSync(config, { projectRoot: dir, incremental: false, embedder: crasher })).rejects.toThrow('RESOURCE_EXHAUSTED');
|
|
582
|
+
const cpPath = path.join(dir, '.totem', FULL_SYNC_CHECKPOINT_FILE);
|
|
583
|
+
const cp = JSON.parse(fs.readFileSync(cpPath, 'utf-8'));
|
|
584
|
+
expect(cp.startedHeadSha).toBeNull();
|
|
585
|
+
expect(cp.completedFiles).toHaveLength(2);
|
|
586
|
+
const resumer = new ScriptedEmbedder();
|
|
587
|
+
const result = await runSync(config, {
|
|
588
|
+
projectRoot: dir,
|
|
589
|
+
incremental: true,
|
|
590
|
+
embedder: resumer,
|
|
591
|
+
});
|
|
592
|
+
// Pre-fold, null startedHeadSha mapped to restart-from-zero on every
|
|
593
|
+
// run — the population with no diff signal could never converge.
|
|
594
|
+
expect(result.filesProcessed).toBe(1);
|
|
595
|
+
expect(result.totalChunks).toBe(TOTAL_CHUNKS);
|
|
596
|
+
expect(fs.existsSync(cpPath)).toBe(false);
|
|
597
|
+
}
|
|
598
|
+
finally {
|
|
599
|
+
cleanTmpDir(dir);
|
|
600
|
+
}
|
|
601
|
+
});
|
|
602
|
+
});
|
|
147
603
|
describe('buildIndexManifest', () => {
|
|
148
604
|
const writtenAt = new Date('2026-05-07T00:00:00.000Z');
|
|
149
605
|
const docs = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../src/ingest/pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../src/ingest/pipeline.test.ts"],"names":[],"mappings":"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"}
|
package/dist/ingest/sync.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { ResolvedFile } from './file-resolver.js';
|
|
2
|
-
export { getChangedFiles, getHeadSha, resolveFiles } from './file-resolver.js';
|
|
2
|
+
export { getChangedFiles, getChangedFilesDetailed, getHeadSha, resolveFiles, } from './file-resolver.js';
|
|
3
3
|
export type { IndexManifest, ManifestDocument } from './pipeline.js';
|
|
4
|
-
export { buildIndexManifest, INDEX_MANIFEST_SCHEMA, runSync, verifyIndexMeta } from './pipeline.js';
|
|
4
|
+
export { buildIndexManifest, hasFullSyncCheckpoint, INDEX_MANIFEST_SCHEMA, runSync, verifyIndexMeta, } from './pipeline.js';
|
|
5
5
|
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/ingest/sync.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/ingest/sync.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,OAAO,EACP,eAAe,GAChB,MAAM,eAAe,CAAC"}
|
package/dist/ingest/sync.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { getChangedFiles, getHeadSha, resolveFiles } from './file-resolver.js';
|
|
2
|
-
export { buildIndexManifest, INDEX_MANIFEST_SCHEMA, runSync, verifyIndexMeta } from './pipeline.js';
|
|
1
|
+
export { getChangedFiles, getChangedFilesDetailed, getHeadSha, resolveFiles, } from './file-resolver.js';
|
|
2
|
+
export { buildIndexManifest, hasFullSyncCheckpoint, INDEX_MANIFEST_SCHEMA, runSync, verifyIndexMeta, } from './pipeline.js';
|
|
3
3
|
//# sourceMappingURL=sync.js.map
|
package/dist/ingest/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/ingest/sync.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/ingest/sync.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,OAAO,EACP,eAAe,GAChB,MAAM,eAAe,CAAC"}
|
package/dist/ledger.d.ts
CHANGED
|
@@ -164,9 +164,9 @@ export declare const LedgerEventSchema: z.ZodEffects<z.ZodObject<{
|
|
|
164
164
|
qbd_correlation_id: z.ZodOptional<z.ZodString>;
|
|
165
165
|
}, "strip", z.ZodTypeAny, {
|
|
166
166
|
type: "suppress" | "corpus_query" | "derive_action" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start" | "compile_run" | "claim_discipline_finding" | "compile_cache_decision";
|
|
167
|
+
timestamp: string;
|
|
167
168
|
justification: string;
|
|
168
169
|
source: "lint" | "shield" | "bot";
|
|
169
|
-
timestamp: string;
|
|
170
170
|
immutable?: boolean | undefined;
|
|
171
171
|
file?: string | undefined;
|
|
172
172
|
line?: number | undefined;
|
|
@@ -180,8 +180,8 @@ export declare const LedgerEventSchema: z.ZodEffects<z.ZodObject<{
|
|
|
180
180
|
qbd_correlation_id?: string | undefined;
|
|
181
181
|
}, {
|
|
182
182
|
type: "suppress" | "corpus_query" | "derive_action" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start" | "compile_run" | "claim_discipline_finding" | "compile_cache_decision";
|
|
183
|
-
source: "lint" | "shield" | "bot";
|
|
184
183
|
timestamp: string;
|
|
184
|
+
source: "lint" | "shield" | "bot";
|
|
185
185
|
immutable?: boolean | undefined;
|
|
186
186
|
file?: string | undefined;
|
|
187
187
|
line?: number | undefined;
|
|
@@ -196,9 +196,9 @@ export declare const LedgerEventSchema: z.ZodEffects<z.ZodObject<{
|
|
|
196
196
|
qbd_correlation_id?: string | undefined;
|
|
197
197
|
}>, {
|
|
198
198
|
type: "suppress" | "corpus_query" | "derive_action" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start" | "compile_run" | "claim_discipline_finding" | "compile_cache_decision";
|
|
199
|
+
timestamp: string;
|
|
199
200
|
justification: string;
|
|
200
201
|
source: "lint" | "shield" | "bot";
|
|
201
|
-
timestamp: string;
|
|
202
202
|
immutable?: boolean | undefined;
|
|
203
203
|
file?: string | undefined;
|
|
204
204
|
line?: number | undefined;
|
|
@@ -212,8 +212,8 @@ export declare const LedgerEventSchema: z.ZodEffects<z.ZodObject<{
|
|
|
212
212
|
qbd_correlation_id?: string | undefined;
|
|
213
213
|
}, {
|
|
214
214
|
type: "suppress" | "corpus_query" | "derive_action" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start" | "compile_run" | "claim_discipline_finding" | "compile_cache_decision";
|
|
215
|
-
source: "lint" | "shield" | "bot";
|
|
216
215
|
timestamp: string;
|
|
216
|
+
source: "lint" | "shield" | "bot";
|
|
217
217
|
immutable?: boolean | undefined;
|
|
218
218
|
file?: string | undefined;
|
|
219
219
|
line?: number | undefined;
|