@grafema/core 0.2.10 → 0.2.12-beta

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 (62) hide show
  1. package/dist/Orchestrator.d.ts +13 -0
  2. package/dist/Orchestrator.d.ts.map +1 -1
  3. package/dist/Orchestrator.js +84 -2
  4. package/dist/Orchestrator.js.map +1 -1
  5. package/dist/ParallelAnalysisRunner.d.ts.map +1 -1
  6. package/dist/ParallelAnalysisRunner.js +28 -41
  7. package/dist/ParallelAnalysisRunner.js.map +1 -1
  8. package/dist/PhaseRunner.d.ts +2 -0
  9. package/dist/PhaseRunner.d.ts.map +1 -1
  10. package/dist/PhaseRunner.js +8 -3
  11. package/dist/PhaseRunner.js.map +1 -1
  12. package/dist/core/IncrementalReanalyzer.d.ts +3 -3
  13. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -1
  14. package/dist/core/IncrementalReanalyzer.js +12 -12
  15. package/dist/core/IncrementalReanalyzer.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  21. package/dist/plugins/analysis/JSASTAnalyzer.js +35 -3
  22. package/dist/plugins/analysis/JSASTAnalyzer.js.map +1 -1
  23. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  24. package/dist/plugins/analysis/ast/GraphBuilder.js +8 -0
  25. package/dist/plugins/analysis/ast/GraphBuilder.js.map +1 -1
  26. package/dist/plugins/analysis/ast/builders/ModuleRuntimeBuilder.d.ts.map +1 -1
  27. package/dist/plugins/analysis/ast/builders/ModuleRuntimeBuilder.js +4 -2
  28. package/dist/plugins/analysis/ast/builders/ModuleRuntimeBuilder.js.map +1 -1
  29. package/dist/plugins/analysis/ast/handlers/NewExpressionHandler.d.ts.map +1 -1
  30. package/dist/plugins/analysis/ast/handlers/NewExpressionHandler.js +2 -1
  31. package/dist/plugins/analysis/ast/handlers/NewExpressionHandler.js.map +1 -1
  32. package/dist/plugins/analysis/ast/types.d.ts +3 -0
  33. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  34. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
  35. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +6 -2
  36. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js.map +1 -1
  37. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
  38. package/dist/plugins/enrichment/ImportExportLinker.js +15 -5
  39. package/dist/plugins/enrichment/ImportExportLinker.js.map +1 -1
  40. package/dist/storage/backends/RFDBServerBackend.d.ts +21 -7
  41. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  42. package/dist/storage/backends/RFDBServerBackend.js +48 -48
  43. package/dist/storage/backends/RFDBServerBackend.js.map +1 -1
  44. package/dist/utils/startRfdbServer.d.ts +44 -0
  45. package/dist/utils/startRfdbServer.d.ts.map +1 -0
  46. package/dist/utils/startRfdbServer.js +79 -0
  47. package/dist/utils/startRfdbServer.js.map +1 -0
  48. package/package.json +3 -3
  49. package/src/Orchestrator.ts +91 -2
  50. package/src/ParallelAnalysisRunner.ts +30 -48
  51. package/src/PhaseRunner.ts +10 -3
  52. package/src/core/IncrementalReanalyzer.ts +15 -15
  53. package/src/index.ts +4 -0
  54. package/src/plugins/analysis/JSASTAnalyzer.ts +40 -3
  55. package/src/plugins/analysis/ast/GraphBuilder.ts +9 -0
  56. package/src/plugins/analysis/ast/builders/ModuleRuntimeBuilder.ts +4 -2
  57. package/src/plugins/analysis/ast/handlers/NewExpressionHandler.ts +2 -1
  58. package/src/plugins/analysis/ast/types.ts +3 -0
  59. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +8 -2
  60. package/src/plugins/enrichment/ImportExportLinker.ts +15 -5
  61. package/src/storage/backends/RFDBServerBackend.ts +52 -60
  62. package/src/utils/startRfdbServer.ts +126 -0
@@ -18,11 +18,9 @@
18
18
  * await backend.flush();
19
19
  */
20
20
  import { RFDBClient } from '@grafema/rfdb-client';
21
- import { existsSync, unlinkSync } from 'fs';
22
- import { spawn } from 'child_process';
23
21
  import { join, dirname } from 'path';
24
- import { setTimeout as sleep } from 'timers/promises';
25
- import { findRfdbBinary } from '../../utils/findRfdbBinary.js';
22
+ import { startRfdbServer } from '../../utils/startRfdbServer.js';
23
+ import { GRAFEMA_VERSION, getSchemaVersion } from '../../version.js';
26
24
  import { brandNodeInternal } from '../../core/brandNodeInternal.js';
27
25
  export class RFDBServerBackend {
28
26
  socketPath;
@@ -122,54 +120,18 @@ export class RFDBServerBackend {
122
120
  return this.connect();
123
121
  }
124
122
  /**
125
- * Find RFDB server binary using shared utility.
126
- * Delegates to findRfdbBinary() for consistent search across all entry points.
127
- */
128
- _findServerBinary() {
129
- const binaryPath = findRfdbBinary();
130
- if (binaryPath) {
131
- this.log(`[RFDBServerBackend] Found binary: ${binaryPath}`);
132
- }
133
- return binaryPath;
134
- }
135
- /**
136
- * Start RFDB server process
123
+ * Start RFDB server process using shared utility.
137
124
  */
138
125
  async _startServer() {
139
126
  if (!this.dbPath) {
140
127
  throw new Error('dbPath required to start RFDB server');
141
128
  }
142
- // Find server binary - check multiple locations
143
- const binaryPath = this._findServerBinary();
144
- if (!binaryPath) {
145
- throw new Error('RFDB server binary not found.\n' +
146
- 'Install @grafema/rfdb: npm install @grafema/rfdb\n' +
147
- 'Or build from source: cargo build --release --bin rfdb-server');
148
- }
149
- // Remove stale socket
150
- if (existsSync(this.socketPath)) {
151
- unlinkSync(this.socketPath);
152
- }
153
- this.log(`[RFDBServerBackend] Starting: ${binaryPath} ${this.dbPath} --socket ${this.socketPath}`);
154
- this.serverProcess = spawn(binaryPath, [this.dbPath, '--socket', this.socketPath], {
155
- stdio: ['ignore', 'ignore', 'inherit'], // stdin/stdout ignored, stderr inherited
156
- detached: true, // Allow server to outlive this process
129
+ await startRfdbServer({
130
+ dbPath: this.dbPath,
131
+ socketPath: this.socketPath,
132
+ waitTimeoutMs: 5000,
133
+ logger: this.silent ? undefined : { debug: (m) => this.log(m) },
157
134
  });
158
- // Don't let server process prevent parent from exiting
159
- this.serverProcess.unref();
160
- this.serverProcess.on('error', (err) => {
161
- this.logError(`[RFDBServerBackend] Server process error:`, err);
162
- });
163
- // Wait for socket to appear
164
- let attempts = 0;
165
- while (!existsSync(this.socketPath) && attempts < 50) {
166
- await sleep(100);
167
- attempts++;
168
- }
169
- if (!existsSync(this.socketPath)) {
170
- throw new Error(`RFDB server failed to start (socket not created after ${attempts * 100}ms)`);
171
- }
172
- this.log(`[RFDBServerBackend] Server started on ${this.socketPath}`);
173
135
  }
174
136
  /**
175
137
  * Negotiate protocol version with server.
@@ -183,10 +145,27 @@ export class RFDBServerBackend {
183
145
  try {
184
146
  const hello = await this.client.hello(3);
185
147
  this.protocolVersion = hello.protocolVersion;
148
+ this._checkServerVersion(hello.serverVersion);
186
149
  }
187
150
  catch {
188
151
  // Server predates hello command or doesn't support v3 — safe v2 fallback
189
152
  this.protocolVersion = 2;
153
+ this.log('[RFDBServerBackend] WARNING: Server does not support version negotiation. Consider updating rfdb-server.');
154
+ }
155
+ }
156
+ /**
157
+ * Validate server version against expected client version.
158
+ * Warns on mismatch but never fails — version differences are informational.
159
+ */
160
+ _checkServerVersion(serverVersion) {
161
+ if (!serverVersion)
162
+ return;
163
+ const expected = getSchemaVersion(GRAFEMA_VERSION);
164
+ const actual = getSchemaVersion(serverVersion);
165
+ if (actual !== expected) {
166
+ this.log(`[RFDBServerBackend] WARNING: rfdb-server version mismatch — ` +
167
+ `server v${serverVersion}, expected v${GRAFEMA_VERSION}. ` +
168
+ `Update with: grafema server restart`);
190
169
  }
191
170
  }
192
171
  /**
@@ -644,11 +623,14 @@ export class RFDBServerBackend {
644
623
  /**
645
624
  * Commit the current batch to the server atomically.
646
625
  * Returns a CommitDelta describing what changed.
626
+ *
627
+ * @param tags - Optional tags for the commit
628
+ * @param deferIndex - When true, server writes data but skips index rebuild.
647
629
  */
648
- async commitBatch(tags) {
630
+ async commitBatch(tags, deferIndex, protectedTypes) {
649
631
  if (!this.client)
650
632
  throw new Error('Not connected to RFDB server');
651
- return this.client.commitBatch(tags);
633
+ return this.client.commitBatch(tags, deferIndex, protectedTypes);
652
634
  }
653
635
  /**
654
636
  * Synchronously batch a node. Must be inside beginBatch/commitBatch.
@@ -698,6 +680,24 @@ export class RFDBServerBackend {
698
680
  throw new Error('Not connected to RFDB server');
699
681
  this.client.abortBatch();
700
682
  }
683
+ /**
684
+ * Rebuild all secondary indexes after deferred-index commits (REG-487).
685
+ * Call this once after a series of commitBatch(tags, true) calls.
686
+ */
687
+ async rebuildIndexes() {
688
+ if (!this.client)
689
+ throw new Error('Not connected to RFDB server');
690
+ await this.client.rebuildIndexes();
691
+ }
692
+ /**
693
+ * Create an isolated batch handle for concurrent-safe batching (REG-487).
694
+ * Each handle has its own buffers — safe for parallel workers.
695
+ */
696
+ createBatch() {
697
+ if (!this.client)
698
+ throw new Error('Not connected to RFDB server');
699
+ return this.client.createBatch();
700
+ }
701
701
  // ===========================================================================
702
702
  // Export/Import
703
703
  // ===========================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"RFDBServerBackend.js","sourceRoot":"","sources":["../../../src/storage/backends/RFDBServerBackend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RFDBServerBackend.js","sourceRoot":"","sources":["../../../src/storage/backends/RFDBServerBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Shared utility for starting rfdb-server
3
+ *
4
+ * Single authoritative function for spawning rfdb-server. All spawn sites
5
+ * (RFDBServerBackend, CLI server command, ParallelAnalysisRunner) delegate here.
6
+ *
7
+ * Callers are responsible for checking if a server is already running before
8
+ * calling this function. This function always spawns a new server process.
9
+ */
10
+ import { spawn, type ChildProcess } from 'child_process';
11
+ export interface StartRfdbServerOptions {
12
+ dbPath: string;
13
+ socketPath: string;
14
+ /** Override binary path; if absent, findRfdbBinary() is called */
15
+ binaryPath?: string;
16
+ /** If provided, PID file is written after spawn */
17
+ pidPath?: string;
18
+ /** Socket poll timeout in ms (default: 5000) */
19
+ waitTimeoutMs?: number;
20
+ /** Optional logger for debug messages */
21
+ logger?: {
22
+ debug(msg: string): void;
23
+ };
24
+ /** Internal: dependency injection for testing */
25
+ _deps?: {
26
+ spawn?: typeof spawn;
27
+ findRfdbBinary?: () => string | null;
28
+ existsSync?: (path: string) => boolean;
29
+ unlinkSync?: (path: string) => void;
30
+ writeFileSync?: (path: string, data: string) => void;
31
+ };
32
+ }
33
+ /**
34
+ * Start an rfdb-server process.
35
+ *
36
+ * 1. Resolve binary (explicit or via findRfdbBinary)
37
+ * 2. Remove stale socket
38
+ * 3. Spawn detached process
39
+ * 4. Write PID file (if pidPath provided)
40
+ * 5. Poll for socket file up to waitTimeoutMs
41
+ * 6. Return ChildProcess (caller decides whether to kill later)
42
+ */
43
+ export declare function startRfdbServer(options: StartRfdbServerOptions): Promise<ChildProcess>;
44
+ //# sourceMappingURL=startRfdbServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startRfdbServer.d.ts","sourceRoot":"","sources":["../../src/utils/startRfdbServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAIzD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACtC,iDAAiD;IACjD,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;QACrC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QACvC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KACtD,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8E5F"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Shared utility for starting rfdb-server
3
+ *
4
+ * Single authoritative function for spawning rfdb-server. All spawn sites
5
+ * (RFDBServerBackend, CLI server command, ParallelAnalysisRunner) delegate here.
6
+ *
7
+ * Callers are responsible for checking if a server is already running before
8
+ * calling this function. This function always spawns a new server process.
9
+ */
10
+ import { existsSync, unlinkSync, writeFileSync } from 'fs';
11
+ import { dirname } from 'path';
12
+ import { spawn } from 'child_process';
13
+ import { setTimeout as sleep } from 'timers/promises';
14
+ import { findRfdbBinary } from './findRfdbBinary.js';
15
+ /**
16
+ * Start an rfdb-server process.
17
+ *
18
+ * 1. Resolve binary (explicit or via findRfdbBinary)
19
+ * 2. Remove stale socket
20
+ * 3. Spawn detached process
21
+ * 4. Write PID file (if pidPath provided)
22
+ * 5. Poll for socket file up to waitTimeoutMs
23
+ * 6. Return ChildProcess (caller decides whether to kill later)
24
+ */
25
+ export async function startRfdbServer(options) {
26
+ const { dbPath, socketPath, pidPath, waitTimeoutMs = 5000, logger, _deps, } = options;
27
+ const _spawn = _deps?.spawn ?? spawn;
28
+ const _findRfdbBinary = _deps?.findRfdbBinary ?? findRfdbBinary;
29
+ const _existsSync = _deps?.existsSync ?? existsSync;
30
+ const _unlinkSync = _deps?.unlinkSync ?? unlinkSync;
31
+ const _writeFileSync = _deps?.writeFileSync ?? writeFileSync;
32
+ // 1. Resolve binary
33
+ const binaryPath = options.binaryPath || _findRfdbBinary();
34
+ if (!binaryPath) {
35
+ throw new Error('RFDB server binary not found.\n' +
36
+ 'Install @grafema/rfdb: npm install @grafema/rfdb\n' +
37
+ 'Or build from source: cargo build --release --bin rfdb-server');
38
+ }
39
+ // 2. Remove stale socket
40
+ if (_existsSync(socketPath)) {
41
+ _unlinkSync(socketPath);
42
+ }
43
+ const dataDir = dirname(socketPath);
44
+ logger?.debug(`Starting rfdb-server: ${binaryPath} ${dbPath} --socket ${socketPath} --data-dir ${dataDir}`);
45
+ // 3. Spawn server (detached, survives parent exit)
46
+ // Mutable container to capture async spawn errors (Dijkstra amendment B)
47
+ const state = { spawnError: null };
48
+ const serverProcess = _spawn(binaryPath, [dbPath, '--socket', socketPath, '--data-dir', dataDir], {
49
+ stdio: ['ignore', 'ignore', 'inherit'],
50
+ detached: true,
51
+ });
52
+ serverProcess.unref();
53
+ // Wire error handler to capture ENOENT and other spawn failures
54
+ serverProcess.on('error', (err) => {
55
+ state.spawnError = err;
56
+ });
57
+ // 4. Write PID file if requested and pid is available
58
+ if (pidPath && serverProcess.pid) {
59
+ _writeFileSync(pidPath, String(serverProcess.pid));
60
+ }
61
+ // 5. Poll for socket file
62
+ const maxAttempts = Math.ceil(waitTimeoutMs / 100);
63
+ let attempts = 0;
64
+ while (!_existsSync(socketPath) && attempts < maxAttempts) {
65
+ if (state.spawnError) {
66
+ throw new Error(`RFDB server failed to start: ${state.spawnError.message} — check binary: ${binaryPath}`);
67
+ }
68
+ await sleep(100);
69
+ attempts++;
70
+ }
71
+ // 6. Final check
72
+ if (!_existsSync(socketPath)) {
73
+ const detail = state.spawnError ? `: ${state.spawnError.message}` : '';
74
+ throw new Error(`RFDB server failed to start after ${waitTimeoutMs}ms${detail} — check binary: ${binaryPath}`);
75
+ }
76
+ logger?.debug(`rfdb-server started on ${socketPath}`);
77
+ return serverProcess;
78
+ }
79
+ //# sourceMappingURL=startRfdbServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startRfdbServer.js","sourceRoot":"","sources":["../../src/utils/startRfdbServer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grafema/core",
3
- "version": "0.2.10",
3
+ "version": "0.2.12-beta",
4
4
  "description": "Core analysis engine for Grafema code analysis toolkit",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -42,8 +42,8 @@
42
42
  "node-source-walk": "^7.0.1",
43
43
  "oxc-parser": "^0.96.0",
44
44
  "yaml": "^2.8.2",
45
- "@grafema/rfdb-client": "0.2.10",
46
- "@grafema/types": "0.2.10"
45
+ "@grafema/rfdb-client": "0.2.12-beta",
46
+ "@grafema/types": "0.2.12-beta"
47
47
  },
48
48
  "optionalDependencies": {
49
49
  "@grafema/rfdb": "^0.1.0-alpha.2"
@@ -68,6 +68,8 @@ export class Orchestrator {
68
68
  private routing: RoutingRule[] | undefined;
69
69
  /** Phase executor (extracted from runPhase, RFD-16) */
70
70
  private phaseRunner!: PhaseRunner;
71
+ /** REG-487: Whether to defer index rebuilding during bulk load */
72
+ private _deferIndexing: boolean = false;
71
73
  /** Graph setup: plugin nodes, field declarations, meta node (REG-462) */
72
74
  private graphInitializer!: GraphInitializer;
73
75
  /** Service/entrypoint discovery (REG-462) */
@@ -181,6 +183,15 @@ export class Orchestrator {
181
183
  this.logger.info('Graph cleared successfully');
182
184
  }
183
185
 
186
+ // REG-487: Detect if we should defer indexing during bulk load.
187
+ // Defer when doing a full re-analysis (forceAnalysis or empty graph).
188
+ // Must check BEFORE graphInitializer.init() which adds plugin nodes to delta.
189
+ this._deferIndexing = this.forceAnalysis || await this._isEmptyGraph();
190
+ if (this._deferIndexing) {
191
+ this.logger.info('Deferred indexing enabled for bulk load');
192
+ this._updatePhaseRunnerDeferIndexing(true);
193
+ }
194
+
184
195
  // Initialize graph: plugin nodes, field declarations (REG-386, REG-398)
185
196
  await this.graphInitializer.init(absoluteProjectPath);
186
197
 
@@ -227,6 +238,13 @@ export class Orchestrator {
227
238
  await this.runBatchPhase('INDEXING', unitsToProcess, manifest);
228
239
  this.profiler.end('INDEXING');
229
240
 
241
+ // REG-487: Rebuild indexes after deferred INDEXING commits.
242
+ // MODULE nodes written by INDEXING must be queryable before ANALYSIS starts.
243
+ if (this._deferIndexing && this.graph.rebuildIndexes) {
244
+ this.logger.info('Rebuilding indexes after INDEXING phase...');
245
+ await this.graph.rebuildIndexes();
246
+ }
247
+
230
248
  // Skip remaining phases if indexOnly mode (for coverage)
231
249
  if (this.indexOnly) {
232
250
  const totalTime = ((Date.now() - totalStartTime) / 1000).toFixed(2);
@@ -243,11 +261,22 @@ export class Orchestrator {
243
261
  } else {
244
262
  // workerCount: 1 — JSASTAnalyzer uses WorkerPool(workerCount) for concurrent module analysis.
245
263
  // Sequential processing avoids concurrent graph writes that cause race conditions.
246
- await this.runPhase('ANALYSIS', { manifest, graph: this.graph, workerCount: 1 });
264
+ // REG-487: Pass deferIndexing so JSASTAnalyzer defers per-module index rebuilds.
265
+ await this.runPhase('ANALYSIS', {
266
+ manifest, graph: this.graph, workerCount: 1,
267
+ deferIndexing: this._deferIndexing,
268
+ });
247
269
  }
248
270
  this.profiler.end('ANALYSIS');
249
271
  this.logger.info('ANALYSIS phase complete', { duration: ((Date.now() - analysisStart) / 1000).toFixed(2) });
250
272
 
273
+ // REG-487: Reset deferred indexing before ENRICHMENT/VALIDATION phases.
274
+ // Those phases need immediate index consistency.
275
+ if (this._deferIndexing) {
276
+ this._deferIndexing = false;
277
+ this._updatePhaseRunnerDeferIndexing(false);
278
+ }
279
+
251
280
  // PHASES 3-4: ENRICHMENT → strict barrier → guarantee → VALIDATION → flush
252
281
  await this.runPipelineEpilogue(manifest, absoluteProjectPath);
253
282
 
@@ -275,6 +304,14 @@ export class Orchestrator {
275
304
  this.logger.info('Graph cleared successfully');
276
305
  }
277
306
 
307
+ // REG-487: Detect if we should defer indexing during bulk load.
308
+ // Must check BEFORE graphInitializer.init() which adds plugin nodes to delta.
309
+ this._deferIndexing = this.forceAnalysis || await this._isEmptyGraph();
310
+ if (this._deferIndexing) {
311
+ this.logger.info('Deferred indexing enabled for bulk load (multi-root)');
312
+ this._updatePhaseRunnerDeferIndexing(true);
313
+ }
314
+
278
315
  // Initialize graph: plugin nodes, field declarations, meta node (REG-386, REG-398, REG-408)
279
316
  await this.graphInitializer.init(workspacePath);
280
317
 
@@ -327,6 +364,12 @@ export class Orchestrator {
327
364
  projectPath: workspacePath,
328
365
  };
329
366
 
367
+ // REG-487: Rebuild indexes after all deferred INDEXING commits from all roots.
368
+ if (this._deferIndexing && this.graph.rebuildIndexes) {
369
+ this.logger.info('Rebuilding indexes after INDEXING phase (multi-root)...');
370
+ await this.graph.rebuildIndexes();
371
+ }
372
+
330
373
  // Skip remaining phases if indexOnly
331
374
  if (this.indexOnly) {
332
375
  const totalTime = ((Date.now() - totalStartTime) / 1000).toFixed(2);
@@ -343,11 +386,21 @@ export class Orchestrator {
343
386
  } else {
344
387
  // workerCount: 1 — JSASTAnalyzer uses WorkerPool(workerCount) for concurrent module analysis.
345
388
  // Sequential processing avoids concurrent graph writes that cause race conditions.
346
- await this.runPhase('ANALYSIS', { manifest: unifiedManifest, graph: this.graph, workerCount: 1 });
389
+ // REG-487: Pass deferIndexing so JSASTAnalyzer defers per-module index rebuilds.
390
+ await this.runPhase('ANALYSIS', {
391
+ manifest: unifiedManifest, graph: this.graph, workerCount: 1,
392
+ deferIndexing: this._deferIndexing,
393
+ });
347
394
  }
348
395
  this.profiler.end('ANALYSIS');
349
396
  this.logger.info('ANALYSIS phase complete', { duration: ((Date.now() - analysisStart) / 1000).toFixed(2) });
350
397
 
398
+ // REG-487: Reset deferred indexing before ENRICHMENT/VALIDATION phases.
399
+ if (this._deferIndexing) {
400
+ this._deferIndexing = false;
401
+ this._updatePhaseRunnerDeferIndexing(false);
402
+ }
403
+
351
404
  // ENRICHMENT → strict barrier → guarantee → VALIDATION → flush
352
405
  await this.runPipelineEpilogue(unifiedManifest, workspacePath);
353
406
 
@@ -513,6 +566,42 @@ export class Orchestrator {
513
566
  });
514
567
  }
515
568
 
569
+ /**
570
+ * REG-487: Check if the graph is empty (first run or after clear).
571
+ * Used to decide whether to enable deferred indexing.
572
+ */
573
+ private async _isEmptyGraph(): Promise<boolean> {
574
+ try {
575
+ const count = await this.graph.nodeCount();
576
+ return count === 0;
577
+ } catch {
578
+ // If nodeCount fails, assume empty for safety
579
+ return true;
580
+ }
581
+ }
582
+
583
+ /**
584
+ * REG-487: Update PhaseRunner's deferIndexing setting.
585
+ * Must be called before phases that should use deferred indexing.
586
+ * After ANALYSIS completes, reset to false so ENRICHMENT/VALIDATION get normal flush.
587
+ */
588
+ private _updatePhaseRunnerDeferIndexing(deferIndexing: boolean): void {
589
+ // PhaseRunner is constructed once in the constructor with initial deps.
590
+ // We need to recreate it with updated deps to change deferIndexing.
591
+ this.phaseRunner = new PhaseRunner({
592
+ plugins: this.plugins,
593
+ onProgress: this.onProgress,
594
+ forceAnalysis: this.forceAnalysis,
595
+ logger: this.logger,
596
+ strictMode: this.strictMode,
597
+ diagnosticCollector: this.diagnosticCollector,
598
+ resourceRegistry: this.resourceRegistry,
599
+ configServices: this.configServices,
600
+ routing: this.routing,
601
+ deferIndexing,
602
+ });
603
+ }
604
+
516
605
  /**
517
606
  * Build unified list of indexing units from manifest.
518
607
  * Delegates to DiscoveryManager. Public API for external callers.