fix: harden daemon and large-index recovery paths (#1562)

* fix: harden indexing recovery and daemon liveness

* test: cover daemon and recovery review gaps

* test: pin that a failure marker never blocks a later successful parse (#1557 retry-discard guard)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: danusha2345 <ewidusoc498@gmail.com>
Co-authored-by: Colby McHenry <me@colbymchenry.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Daniil
2026-08-20 12:53:49 -05:00
committed by GitHub
co-authored by Claude Fable 5 danusha2345 Colby McHenry
parent d8f2eeaddf
commit 81e1f4a92f
20 changed files with 680 additions and 83 deletions
+8
View File
@@ -976,6 +976,14 @@ export class CodeGraph {
}
} catch { /* vocab is advisory — never fail a sync over it */ }
// A killed full index leaves this marker at `indexing`. Sync repairs
// missing files, pending refs, and (on open) dropped indexes, so a
// successful recovery must also close the metadata state (#1556).
const fullReconcile = !options.paths || options.paths.length === 0;
if (fullReconcile && this.getIndexState() === 'indexing') {
try { this.queries.setMetadata('index_state', 'complete'); } catch { /* advisory */ }
}
return result;
} finally {
// Mirror indexAll's teardown: stop the valve, then restore the