instar 1.3.490 → 1.3.492

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 (121) hide show
  1. package/dashboard/index.html +30 -0
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +3 -0
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/server.d.ts.map +1 -1
  6. package/dist/commands/server.js +199 -1
  7. package/dist/commands/server.js.map +1 -1
  8. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  9. package/dist/config/ConfigDefaults.js +11 -0
  10. package/dist/config/ConfigDefaults.js.map +1 -1
  11. package/dist/core/CartographerSweepEngine.d.ts +55 -11
  12. package/dist/core/CartographerSweepEngine.d.ts.map +1 -1
  13. package/dist/core/CartographerSweepEngine.js +276 -95
  14. package/dist/core/CartographerSweepEngine.js.map +1 -1
  15. package/dist/core/CartographerTree.d.ts +77 -1
  16. package/dist/core/CartographerTree.d.ts.map +1 -1
  17. package/dist/core/CartographerTree.js +257 -5
  18. package/dist/core/CartographerTree.js.map +1 -1
  19. package/dist/core/GuardPostureStore.d.ts +38 -0
  20. package/dist/core/GuardPostureStore.d.ts.map +1 -0
  21. package/dist/core/GuardPostureStore.js +87 -0
  22. package/dist/core/GuardPostureStore.js.map +1 -0
  23. package/dist/core/MachinePoolRegistry.d.ts +16 -0
  24. package/dist/core/MachinePoolRegistry.d.ts.map +1 -1
  25. package/dist/core/MachinePoolRegistry.js +24 -1
  26. package/dist/core/MachinePoolRegistry.js.map +1 -1
  27. package/dist/core/PeerPresencePuller.d.ts +9 -0
  28. package/dist/core/PeerPresencePuller.d.ts.map +1 -1
  29. package/dist/core/PeerPresencePuller.js +1 -1
  30. package/dist/core/PeerPresencePuller.js.map +1 -1
  31. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  32. package/dist/core/PostUpdateMigrator.js +43 -2
  33. package/dist/core/PostUpdateMigrator.js.map +1 -1
  34. package/dist/core/cartographerDetect.d.ts +133 -0
  35. package/dist/core/cartographerDetect.d.ts.map +1 -0
  36. package/dist/core/cartographerDetect.js +431 -0
  37. package/dist/core/cartographerDetect.js.map +1 -0
  38. package/dist/core/cartographerDetect.worker.d.ts +2 -0
  39. package/dist/core/cartographerDetect.worker.d.ts.map +1 -0
  40. package/dist/core/cartographerDetect.worker.js +37 -0
  41. package/dist/core/cartographerDetect.worker.js.map +1 -0
  42. package/dist/core/types.d.ts +29 -0
  43. package/dist/core/types.d.ts.map +1 -1
  44. package/dist/core/types.js.map +1 -1
  45. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts +8 -0
  46. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts.map +1 -1
  47. package/dist/monitoring/ActiveWorkSilenceSentinel.js +8 -0
  48. package/dist/monitoring/ActiveWorkSilenceSentinel.js.map +1 -1
  49. package/dist/monitoring/ContextWedgeSentinel.d.ts +8 -0
  50. package/dist/monitoring/ContextWedgeSentinel.d.ts.map +1 -1
  51. package/dist/monitoring/ContextWedgeSentinel.js +8 -0
  52. package/dist/monitoring/ContextWedgeSentinel.js.map +1 -1
  53. package/dist/monitoring/GuardPostureTripwire.d.ts +3 -27
  54. package/dist/monitoring/GuardPostureTripwire.d.ts.map +1 -1
  55. package/dist/monitoring/GuardPostureTripwire.js +8 -76
  56. package/dist/monitoring/GuardPostureTripwire.js.map +1 -1
  57. package/dist/monitoring/GuardRegistry.d.ts +48 -0
  58. package/dist/monitoring/GuardRegistry.d.ts.map +1 -0
  59. package/dist/monitoring/GuardRegistry.js +49 -0
  60. package/dist/monitoring/GuardRegistry.js.map +1 -0
  61. package/dist/monitoring/SessionReaper.d.ts +7 -0
  62. package/dist/monitoring/SessionReaper.d.ts.map +1 -1
  63. package/dist/monitoring/SessionReaper.js +9 -0
  64. package/dist/monitoring/SessionReaper.js.map +1 -1
  65. package/dist/monitoring/SessionWatchdog.d.ts +8 -0
  66. package/dist/monitoring/SessionWatchdog.d.ts.map +1 -1
  67. package/dist/monitoring/SessionWatchdog.js +8 -0
  68. package/dist/monitoring/SessionWatchdog.js.map +1 -1
  69. package/dist/monitoring/SocketDisconnectSentinel.d.ts +8 -0
  70. package/dist/monitoring/SocketDisconnectSentinel.d.ts.map +1 -1
  71. package/dist/monitoring/SocketDisconnectSentinel.js +8 -0
  72. package/dist/monitoring/SocketDisconnectSentinel.js.map +1 -1
  73. package/dist/monitoring/guardManifest.d.ts +67 -0
  74. package/dist/monitoring/guardManifest.d.ts.map +1 -0
  75. package/dist/monitoring/guardManifest.js +536 -0
  76. package/dist/monitoring/guardManifest.js.map +1 -0
  77. package/dist/monitoring/guardPosture.d.ts +77 -0
  78. package/dist/monitoring/guardPosture.d.ts.map +1 -0
  79. package/dist/monitoring/guardPosture.js +198 -0
  80. package/dist/monitoring/guardPosture.js.map +1 -0
  81. package/dist/monitoring/guardPostureView.d.ts +100 -0
  82. package/dist/monitoring/guardPostureView.d.ts.map +1 -0
  83. package/dist/monitoring/guardPostureView.js +294 -0
  84. package/dist/monitoring/guardPostureView.js.map +1 -0
  85. package/dist/monitoring/probes/GuardPostureProbe.d.ts +82 -0
  86. package/dist/monitoring/probes/GuardPostureProbe.d.ts.map +1 -0
  87. package/dist/monitoring/probes/GuardPostureProbe.js +384 -0
  88. package/dist/monitoring/probes/GuardPostureProbe.js.map +1 -0
  89. package/dist/scaffold/templates.d.ts.map +1 -1
  90. package/dist/scaffold/templates.js +9 -0
  91. package/dist/scaffold/templates.js.map +1 -1
  92. package/dist/scheduler/JobScheduler.d.ts +10 -0
  93. package/dist/scheduler/JobScheduler.d.ts.map +1 -1
  94. package/dist/scheduler/JobScheduler.js +12 -0
  95. package/dist/scheduler/JobScheduler.js.map +1 -1
  96. package/dist/server/AgentServer.d.ts +8 -0
  97. package/dist/server/AgentServer.d.ts.map +1 -1
  98. package/dist/server/AgentServer.js +2 -0
  99. package/dist/server/AgentServer.js.map +1 -1
  100. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  101. package/dist/server/CapabilityIndex.js +11 -0
  102. package/dist/server/CapabilityIndex.js.map +1 -1
  103. package/dist/server/peerUrlGuard.d.ts +35 -0
  104. package/dist/server/peerUrlGuard.d.ts.map +1 -0
  105. package/dist/server/peerUrlGuard.js +93 -0
  106. package/dist/server/peerUrlGuard.js.map +1 -0
  107. package/dist/server/routes.d.ts +14 -0
  108. package/dist/server/routes.d.ts.map +1 -1
  109. package/dist/server/routes.js +239 -25
  110. package/dist/server/routes.js.map +1 -1
  111. package/package.json +3 -2
  112. package/scripts/lint-guard-manifest.js +264 -0
  113. package/scripts/lint-no-direct-destructive.js +4 -0
  114. package/scripts/lint-no-mainthread-cartographer-walk.js +101 -0
  115. package/src/data/builtin-manifest.json +65 -65
  116. package/src/data/state-coherence-registry.json +54 -18
  117. package/src/scaffold/templates.ts +9 -0
  118. package/upgrades/1.3.491.md +37 -0
  119. package/upgrades/1.3.492.md +31 -0
  120. package/upgrades/side-effects/cartographer-sweep-eventloop-safety.md +110 -0
  121. package/upgrades/side-effects/guard-posture-endpoint.md +101 -0
@@ -24,9 +24,32 @@
24
24
  */
25
25
  import fs from 'node:fs';
26
26
  import path from 'node:path';
27
+ import { Worker } from 'node:worker_threads';
27
28
  import { SafeFsExecutor } from './SafeFsExecutor.js';
29
+ import { runDetect, applyIndexDeltas, writeSnapshot, readSnapshot, } from './cartographerDetect.js';
28
30
  import { isSecretBearingPath, contentHasCredentialMaterial, extractCodeSymbols, validateSummaryDeterministic, neutralizeInstructionShapedContent, childDigestHash, delimitUntrusted, } from './cartographerSummary.js';
29
31
  export const CARTOGRAPHER_SWEEP_COMPONENT = 'CartographerSweep';
32
+ /**
33
+ * Slice 3 (fix instar#1069): resolve the sweep's effective routing framework +
34
+ * its source, EXPLICIT-SET-ONLY. Precedence: an explicit
35
+ * overrides.CartographerSweep wins; else an explicitly-configured categories.job
36
+ * wins (migration safety — never silently override an operator's choice); else
37
+ * cartographer.freshnessSweep.framework becomes the effective override (the
38
+ * off-Claude knob the field was always meant to be); else the router default.
39
+ * `injectOverride` tells the caller to write overrides.CartographerSweep so BOTH
40
+ * the routing probe AND the author call resolve consistently. Pure → unit-tested.
41
+ */
42
+ export function resolveSweepFrameworkRouting(cf, freshnessSweepFramework) {
43
+ const explicitOverride = cf?.overrides?.CartographerSweep;
44
+ if (explicitOverride)
45
+ return { framework: explicitOverride, source: 'overrides.CartographerSweep', injectOverride: false };
46
+ const explicitJob = cf?.categories?.job;
47
+ if (explicitJob)
48
+ return { framework: explicitJob, source: 'categories.job', injectOverride: false };
49
+ if (freshnessSweepFramework)
50
+ return { framework: freshnessSweepFramework, source: 'freshnessSweep.framework', injectOverride: true };
51
+ return { framework: undefined, source: 'default', injectOverride: false };
52
+ }
30
53
  export class SweepAbortedError extends Error {
31
54
  constructor() {
32
55
  super('cartographer author aborted by higher-priority lane');
@@ -38,6 +61,8 @@ export class CartographerSweepEngine {
38
61
  d;
39
62
  now;
40
63
  log;
64
+ /** Engine-level single-flight: one in-flight pass / one detect worker at a time. */
65
+ inflight = null;
41
66
  constructor(deps) {
42
67
  this.d = deps;
43
68
  this.now = deps.now ?? (() => Date.parse(new Date().toISOString()));
@@ -70,13 +95,23 @@ export class CartographerSweepEngine {
70
95
  return { ok: true, framework: r.framework };
71
96
  }
72
97
  async runPass() {
98
+ // Engine-level single-flight (Scalability Finding 7): every caller — the
99
+ // poller, or a future conformance audit reusing this engine — coalesces onto
100
+ // ONE in-flight pass / ONE detect worker, bounding peak host memory.
101
+ if (this.inflight)
102
+ return this.inflight;
103
+ this.inflight = this.runPassInner().finally(() => { this.inflight = null; });
104
+ return this.inflight;
105
+ }
106
+ async runPassInner() {
73
107
  const base = {
74
108
  ranAuthorPath: false, refused: false, candidateCount: 0, authored: 0,
75
109
  fingerprintRefreshed: 0, failed: 0, quarantined: 0, deferred: 0, skipped: 0,
76
110
  contentExcluded: 0, revalidated: 0, remaining: 0, centsSpent: 0,
77
111
  abortedBackpressure: false, reason: 'ok',
78
112
  };
79
- // Lease gate — standby machines do cheap detect for read-locality but author ZERO.
113
+ // Lease gate — standby machines do NOT spawn a detect worker (the snapshot is
114
+ // per-host; they serve /health + /stale as snapshot:'absent' honestly).
80
115
  if (!this.d.holdsLease()) {
81
116
  return { ...base, reason: 'not-lease-holder' };
82
117
  }
@@ -87,38 +122,53 @@ export class CartographerSweepEngine {
87
122
  return { ...base, refused: true, refusalReason: probe.reason, reason: 'routing-refused' };
88
123
  }
89
124
  const framework = probe.framework;
90
- // Cheap detect — ALWAYS re-derived from git, never served from the cursor.
91
- const stale = this.d.tree.staleNodes();
92
- const candidates = stale.filter((s) => s.status === 'stale' || s.status === 'never-authored');
93
- base.candidateCount = candidates.length;
94
- if (candidates.length === 0) {
125
+ const cfg = this.d.config;
126
+ // DETECT entirely off the main event loop (worker) or via the SAME bounded
127
+ // pure module synchronously (rollback). Never tree.staleNodes() on this thread.
128
+ const detect = await this.detect();
129
+ this.persistSnapshot(detect);
130
+ if (detect.refused) {
131
+ const reason = `detect-${detect.refusalReason?.replace(/^detect-/, '') ?? 'error'}`;
132
+ this.log(`[cartographer-sweep] detect refused: ${detect.refusalReason}`);
133
+ return {
134
+ ...base, refused: true, refusalReason: detect.refusalReason, reason,
135
+ candidateCount: detect.staleTotal, detectStatus: this.detectStatus(detect),
136
+ detectDurationMs: detect.durationMs,
137
+ };
138
+ }
139
+ base.candidateCount = detect.staleTotal;
140
+ base.detectStatus = 'ok';
141
+ base.detectDurationMs = detect.durationMs;
142
+ if (detect.candidates.length === 0) {
95
143
  this.clearCursor();
96
144
  // No stale work — but STILL re-validate a small sample of fresh nodes
97
145
  // (fresh ≠ correct: a one-time bad author shouldn't be immortal).
98
146
  const noWork = { ...base, ranAuthorPath: true, reason: 'no-candidates' };
99
147
  const tier = this.d.pressure().tier;
100
- if (tier !== 'critical' && this.d.config.revalidateSamplePerPass > 0) {
101
- noWork.revalidated = await this.revalidateSample(framework, this.d.config.revalidateSamplePerPass, noWork);
148
+ if (tier !== 'critical' && cfg.revalidateSamplePerPass > 0) {
149
+ const deltas = [];
150
+ noWork.revalidated = await this.revalidateSample(detect.revalidationSample, framework, noWork, deltas);
151
+ await this.applyDeltas(deltas);
102
152
  }
103
153
  return noWork;
104
154
  }
105
- // Order deepest-first; defer dirs whose stale/never descendants aren't fresh yet.
106
- const ordered = this.orderCandidates(candidates.map((c) => c.path));
107
155
  // Honor a within-tick cursor (crash recovery) — bounded, fail-soft to full rescan.
108
- const headSha = this.d.tree.currentHeadShort();
156
+ const headSha = detect.counts.headSha;
109
157
  const cursor = this.loadCursor(headSha);
110
158
  const alreadyAuthored = new Set(cursor?.authoredPaths ?? []);
111
- const cfg = this.d.config;
112
159
  const result = { ...base, ranAuthorPath: true };
113
160
  const authoredThisPass = [];
161
+ // fix instar#1069: all index updates this pass are batched into ONE off-thread
162
+ // write (closes the sixth starver — never a per-node main-thread 67MB write).
163
+ const deltas = [];
114
164
  let curtail = false;
115
- for (const nodePath of ordered.toAuthor) {
165
+ for (const nodePath of detect.candidates) {
116
166
  if (result.authored + result.fingerprintRefreshed >= cfg.maxNodesPerPass) {
117
- result.remaining = ordered.toAuthor.length - (result.authored + result.fingerprintRefreshed + result.skipped + result.failed);
167
+ result.remaining = detect.candidates.length - (result.authored + result.fingerprintRefreshed + result.skipped + result.failed);
118
168
  break;
119
169
  }
120
170
  if (result.centsSpent + cfg.estCentsPerAuthor > cfg.maxCentsPerPass) {
121
- result.remaining = ordered.toAuthor.length - (result.authored + result.fingerprintRefreshed + result.skipped + result.failed);
171
+ result.remaining = detect.candidates.length - (result.authored + result.fingerprintRefreshed + result.skipped + result.failed);
122
172
  break;
123
173
  }
124
174
  // Mid-tick CPU re-sample — critical breaks out immediately; moderate curtails.
@@ -149,7 +199,7 @@ export class CartographerSweepEngine {
149
199
  continue;
150
200
  }
151
201
  try {
152
- const outcome = await this.authorNode(node, framework);
202
+ const outcome = await this.authorNode(node, framework, deltas);
153
203
  switch (outcome.kind) {
154
204
  case 'authored':
155
205
  result.authored += 1;
@@ -168,7 +218,7 @@ export class CartographerSweepEngine {
168
218
  case 'failed':
169
219
  result.failed += 1;
170
220
  result.centsSpent += cfg.estCentsPerAuthor; // a rejected author still cost a call
171
- if (this.recordFailure(node))
221
+ if (this.recordFailure(node, deltas))
172
222
  result.quarantined += 1;
173
223
  break;
174
224
  case 'skipped':
@@ -185,22 +235,22 @@ export class CartographerSweepEngine {
185
235
  }
186
236
  // A genuine author error counts toward the node's quarantine.
187
237
  result.failed += 1;
188
- if (this.recordFailure(node))
238
+ if (this.recordFailure(node, deltas))
189
239
  result.quarantined += 1;
190
240
  }
191
241
  }
192
- // Bump defer-pass counters for dirs we deferred this pass (anti-starvation).
193
- for (const dp of ordered.deferred) {
194
- const n = this.d.tree.getNode(dp);
195
- this.d.tree.patchNodeMeta(dp, { staleSincePass: (n?.staleSincePass ?? 0) + 1 });
196
- }
197
- result.deferred = ordered.deferred.length;
242
+ // Defer increments were applied + persisted inside detect (write (a)); the
243
+ // main-thread defer loop is GONE (fix instar#1069 it walked an unbounded set).
244
+ result.deferred = detect.deferredApplied;
198
245
  // Re-validate a small sample of fresh nodes — skipped when curtailing/aborting.
199
246
  if (!curtail && !result.abortedBackpressure &&
200
247
  result.centsSpent + cfg.estCentsPerAuthor <= cfg.maxCentsPerPass &&
201
248
  result.authored + result.fingerprintRefreshed < cfg.maxNodesPerPass) {
202
- result.revalidated = await this.revalidateSample(framework, cfg.revalidateSamplePerPass, result);
249
+ result.revalidated = await this.revalidateSample(detect.revalidationSample, framework, result, deltas);
203
250
  }
251
+ // Author-phase index write (b): ONE off-thread re-read+apply+write of the
252
+ // ≤maxNodesPerPass summary deltas. Never a per-node main-thread index write.
253
+ await this.applyDeltas(deltas);
204
254
  if (result.remaining > 0) {
205
255
  this.log(`[cartographer-sweep] pass bounded: ${result.remaining} candidate(s) left for next tick`);
206
256
  }
@@ -209,57 +259,186 @@ export class CartographerSweepEngine {
209
259
  this.clearCursor();
210
260
  return result;
211
261
  }
212
- // ── ordering + defer ────────────────────────────────────────────────────────
213
- /**
214
- * Deepest-first ordering with dir-defer. A dir is authored only after its
215
- * currently-candidate descendants are scheduled earlier in this pass; otherwise
216
- * it is deferred (stays stale — honest). Anti-starvation: a dir deferred beyond
217
- * maxDeferredPasses is biased forward, but the front-bias lane consumes at most
218
- * half of maxNodesPerPass so a churny subtree can't starve the rest of the tree.
219
- */
220
- orderCandidates(paths) {
221
- const candidateSet = new Set(paths);
222
- // Deepest first: more path segments = deeper. '' (root) is shallowest.
223
- const byDepthDesc = [...paths].sort((a, b) => depth(b) - depth(a) || a.localeCompare(b));
224
- const scheduled = new Set();
225
- const toAuthor = [];
226
- const deferred = [];
227
- for (const p of byDepthDesc) {
228
- const node = this.d.tree.getNode(p);
229
- if (node && node.kind === 'dir') {
230
- // Any candidate descendant not yet scheduled defer this dir.
231
- const blockingChild = node.children.some((c) => candidateSet.has(c) && !scheduled.has(c));
232
- const staleSince = node.staleSincePass ?? 0;
233
- if (blockingChild && staleSince < this.d.config.maxDeferredPasses) {
234
- deferred.push(p);
235
- continue;
236
- }
262
+ // ── off-event-loop detect + batched index write (fix instar#1069) ────────────
263
+ detectInput() {
264
+ const cfg = this.d.config;
265
+ const maxNodesPerPass = cfg.maxNodesPerPass;
266
+ return {
267
+ indexPath: this.d.tree.indexFilePath(),
268
+ projectDir: this.d.tree.projectDirPath(),
269
+ maxIndexBytes: cfg.maxIndexBytes ?? 200 * 1024 * 1024,
270
+ maxCandidates: maxNodesPerPass * (cfg.detectCandidateHeadroom ?? 4),
271
+ maxNodesPerPass,
272
+ maxDeferredPasses: cfg.maxDeferredPasses,
273
+ revalidateSamplePerPass: cfg.revalidateSamplePerPass,
274
+ graceMs: cfg.detectGraceMs ?? 1_200_000,
275
+ gitMaxBuffer: cfg.gitMaxBuffer ?? 64 * 1024 * 1024,
276
+ snapshotSampleMax: cfg.snapshotSampleMax ?? 500,
277
+ nowMs: this.now(),
278
+ };
279
+ }
280
+ /** Run detect off-thread (worker) or synchronously (rollback) SAME bounded module. */
281
+ async detect() {
282
+ const input = this.detectInput();
283
+ if (this.d.config.detectInWorker === false) {
284
+ // Operator escape hatch: bounded pure module on the main thread (NEVER staleNodes()).
285
+ return runDetect(input);
286
+ }
287
+ const out = await this.runWorker('detect', input);
288
+ if (out.startFailed) {
289
+ return this.refusedDetect('detect-worker-start-failure', out.durationMs);
290
+ }
291
+ if (out.timedOut) {
292
+ return this.refusedDetect('detect-timeout', out.durationMs);
293
+ }
294
+ if (!out.ok || !out.result) {
295
+ // A worker crash/exit is treated as a refusal that feeds the breaker.
296
+ return this.refusedDetect('detect-worker-start-failure', out.durationMs);
297
+ }
298
+ return out.result;
299
+ }
300
+ refusedDetect(reason, durationMs) {
301
+ return {
302
+ refused: true, refusalReason: reason, candidates: [], deferredApplied: 0,
303
+ counts: { nodeCount: 0, authoredCount: 0, neverAuthored: 0, stale: 0, pathGone: 0, generatedAt: null, headSha: null },
304
+ freshness: {
305
+ nodeCount: 0, authorableCount: 0, freshCount: 0, staleCount: 0, neverAuthoredCount: 0,
306
+ neverAuthoredWithinGrace: 0, neverAuthoredPastGrace: 0, authorFailedCount: 0, freshRatio: 1, generatedAt: null,
307
+ },
308
+ revalidationSample: [], staleSample: [], staleTotal: 0, durationMs,
309
+ };
310
+ }
311
+ /** Apply the pass's batched summary deltas off-thread (worker) or synchronously (rollback). */
312
+ async applyDeltas(deltas) {
313
+ if (deltas.length === 0)
314
+ return;
315
+ const input = {
316
+ indexPath: this.d.tree.indexFilePath(),
317
+ maxIndexBytes: this.d.config.maxIndexBytes ?? 200 * 1024 * 1024,
318
+ deltas,
319
+ };
320
+ try {
321
+ if (this.d.config.detectInWorker === false) {
322
+ applyIndexDeltas(input);
323
+ return;
237
324
  }
238
- toAuthor.push(p);
239
- scheduled.add(p);
325
+ await this.runWorker('apply-deltas', input);
326
+ }
327
+ catch {
328
+ // @silent-fallback-ok — a failed index-delta write only means the node files
329
+ // (already written) are ahead of the index for one tick; the next detect
330
+ // re-derives staleness from git and re-converges. Never a freeze, never a loss.
331
+ }
332
+ }
333
+ detectStatus(r) {
334
+ if (!r.refused)
335
+ return 'ok';
336
+ switch (r.refusalReason) {
337
+ case 'detect-timeout': return 'timeout';
338
+ case 'detect-worker-start-failure': return 'worker-start-failed';
339
+ case 'detect-index-too-large': return 'index-too-large';
340
+ case 'detect-index-unreadable': return 'index-unreadable';
341
+ case 'detect-git-error': return 'git-error';
342
+ default: return 'ok';
343
+ }
344
+ }
345
+ /** Persist (or update) the per-host snapshot every /cartographer/* read route serves from. */
346
+ persistSnapshot(r) {
347
+ try {
348
+ const nowIso = new Date(this.now()).toISOString();
349
+ const status = this.detectStatus(r);
350
+ if (r.refused) {
351
+ // Keep the last-good sample/counts; only flip the detect-health fields so
352
+ // /stale serves snapshot:'detect-failing' with its prior sample (Slice 2).
353
+ const prior = readSnapshot(this.d.tree.snapshotPath());
354
+ const snap = prior
355
+ ? { ...prior, lastDetectStatus: status, lastDetectAt: nowIso, durationMs: r.durationMs }
356
+ : {
357
+ generatedAt: nowIso, headSha: null, counts: r.counts, freshness: r.freshness,
358
+ staleSample: [], staleTotal: 0, staleSampleTruncated: false,
359
+ lastDetectStatus: status, lastDetectAt: nowIso, durationMs: r.durationMs,
360
+ };
361
+ writeSnapshot(this.d.tree.snapshotPath(), snap);
362
+ return;
363
+ }
364
+ const snap = {
365
+ generatedAt: nowIso,
366
+ headSha: r.counts.headSha,
367
+ counts: r.counts,
368
+ freshness: r.freshness,
369
+ staleSample: r.staleSample,
370
+ staleTotal: r.staleTotal,
371
+ staleSampleTruncated: r.staleSample.length < r.staleTotal,
372
+ lastDetectStatus: 'ok',
373
+ lastDetectAt: nowIso,
374
+ durationMs: r.durationMs,
375
+ };
376
+ writeSnapshot(this.d.tree.snapshotPath(), snap);
377
+ }
378
+ catch {
379
+ // @silent-fallback-ok — the snapshot is an observability surface; a write
380
+ // failure only costs route freshness for one tick, never correctness/safety.
381
+ }
382
+ }
383
+ /** Minimal env allowlist for a spawned worker — NEVER the parent process.env. */
384
+ workerEnv() {
385
+ const env = {};
386
+ for (const k of ['PATH', 'HOME', 'LANG', 'LC_ALL', 'LC_CTYPE', 'TMPDIR', 'SystemRoot', 'TEMP', 'TMP']) {
387
+ if (process.env[k])
388
+ env[k] = process.env[k];
240
389
  }
241
- // Front-bias starved dirs (deferred too long), capped at half the per-pass budget.
242
- const frontCap = Math.max(1, Math.floor(this.d.config.maxNodesPerPass / 2));
243
- const starved = toAuthor
244
- .filter((p) => {
245
- const n = this.d.tree.getNode(p);
246
- return n?.kind === 'dir' && (n.staleSincePass ?? 0) >= this.d.config.maxDeferredPasses;
247
- })
248
- .slice(0, frontCap);
249
- if (starved.length > 0) {
250
- const starvedSet = new Set(starved);
251
- const rest = toAuthor.filter((p) => !starvedSet.has(p));
252
- return { toAuthor: [...starved, ...rest], deferred };
390
+ for (const k of Object.keys(process.env)) {
391
+ if (k.startsWith('GIT_'))
392
+ env[k] = process.env[k];
253
393
  }
254
- return { toAuthor, deferred };
394
+ return env;
395
+ }
396
+ /** Spawn the detect/write worker, await its single message, bound by detectTimeoutMs. */
397
+ runWorker(mode, input) {
398
+ const startedAt = this.now();
399
+ const timeoutMs = this.d.config.detectTimeoutMs ?? 120_000;
400
+ const heapMb = this.d.config.detectWorkerHeapMb ?? 1536;
401
+ return new Promise((resolve) => {
402
+ let worker;
403
+ try {
404
+ const workerUrl = new URL('./cartographerDetect.worker.js', import.meta.url);
405
+ worker = new Worker(workerUrl, {
406
+ workerData: { mode, input },
407
+ resourceLimits: { maxOldGenerationSizeMb: heapMb },
408
+ env: this.workerEnv(),
409
+ });
410
+ }
411
+ catch (err) {
412
+ resolve({ ok: false, startFailed: true, error: err instanceof Error ? err.message : String(err), durationMs: this.now() - startedAt });
413
+ return;
414
+ }
415
+ let settled = false;
416
+ const done = (r) => {
417
+ if (settled)
418
+ return;
419
+ settled = true;
420
+ clearTimeout(timer);
421
+ worker.terminate().catch(() => { });
422
+ resolve({ ...r, durationMs: this.now() - startedAt });
423
+ };
424
+ const timer = setTimeout(() => {
425
+ // terminate() (awaited inside done→terminate) reaps the worker + its child git.
426
+ done({ ok: false, timedOut: true });
427
+ }, timeoutMs);
428
+ worker.once('message', (msg) => done(msg));
429
+ worker.once('error', (err) => done({ ok: false, error: err.message }));
430
+ worker.once('exit', (code) => { if (!settled)
431
+ done({ ok: false, error: `worker exited (${code})` }); });
432
+ });
255
433
  }
256
434
  // ── authoring one node ──────────────────────────────────────────────────────
257
- async authorNode(node, framework) {
435
+ async authorNode(node, framework, deltas) {
258
436
  const cfg = this.d.config;
259
437
  if (node.kind === 'file') {
260
438
  // Secret exclusion — path glob first (cheapest), never read-and-send.
261
439
  if (isSecretBearingPath(node.path)) {
262
- this.d.tree.patchNodeMeta(node.path, { lastAuthoredBy: 'content-excluded' });
440
+ // lastAuthoredBy is node-file-only (not an index field) → no index delta.
441
+ this.d.tree.patchNodeMeta(node.path, { lastAuthoredBy: 'content-excluded' }, { deferIndexWrite: true });
263
442
  return { kind: 'content-excluded' };
264
443
  }
265
444
  const read = this.d.tree.committedContent(node.path, cfg.maxLeafBytes);
@@ -267,13 +446,13 @@ export class CartographerSweepEngine {
267
446
  return { kind: 'skipped' }; // path gone from HEAD between detect and now
268
447
  // Content tripwire — a credential-bearing file is excluded, not summarized.
269
448
  if (contentHasCredentialMaterial(read.content)) {
270
- this.d.tree.patchNodeMeta(node.path, { lastAuthoredBy: 'content-excluded' });
449
+ this.d.tree.patchNodeMeta(node.path, { lastAuthoredBy: 'content-excluded' }, { deferIndexWrite: true });
271
450
  return { kind: 'content-excluded' };
272
451
  }
273
452
  const coveredSymbols = extractCodeSymbols(read.content);
274
453
  const prompt = this.buildLeafPrompt(node.path, read.content, read.truncated);
275
454
  const summary = await this.callAuthor(prompt);
276
- return this.persistAuthored(node, summary, coveredSymbols, framework, {
455
+ return this.persistAuthored(node, summary, coveredSymbols, framework, deltas, {
277
456
  modelTier: 'light', truncated: read.truncated,
278
457
  });
279
458
  }
@@ -284,10 +463,12 @@ export class CartographerSweepEngine {
284
463
  // Dir re-author amplification guard: tree-oid flipped but child digest unchanged
285
464
  // ⇒ fingerprint-only refresh, NO LLM call.
286
465
  if (node.childDigestHash != null && node.childDigestHash === digest && node.summary.length > 0) {
287
- this.d.tree.patchNodeMeta(node.path, {
466
+ const refreshed = this.d.tree.patchNodeMeta(node.path, {
288
467
  codeHash: this.d.tree.currentNodeOid(node.path),
289
468
  codeRev: this.d.tree.currentHeadShort(),
290
- });
469
+ }, { deferIndexWrite: true });
470
+ // A fingerprint refresh changes codeHash → batch that index delta.
471
+ deltas.push({ path: node.path, codeHash: refreshed?.codeHash ?? node.codeHash });
291
472
  return { kind: 'fingerprint' };
292
473
  }
293
474
  if (childSummaries.length === 0)
@@ -296,11 +477,11 @@ export class CartographerSweepEngine {
296
477
  const coveredSymbols = extractCodeSymbols(coveredText);
297
478
  const prompt = this.buildDirPrompt(node.path, childSummaries, children.map((c) => basename(c.path)));
298
479
  const summary = await this.callAuthor(prompt);
299
- return this.persistAuthored(node, summary, coveredSymbols, framework, {
480
+ return this.persistAuthored(node, summary, coveredSymbols, framework, deltas, {
300
481
  modelTier: 'light', childDigestHash: digest,
301
482
  });
302
483
  }
303
- persistAuthored(node, rawSummary, coveredSymbols, framework, opts) {
484
+ persistAuthored(node, rawSummary, coveredSymbols, framework, deltas, opts) {
304
485
  // Neutralize instruction-shaped content BEFORE validation/persist (output-side injection guard).
305
486
  const { text: neutralized, neutralized: wasNeutralized } = neutralizeInstructionShapedContent(rawSummary);
306
487
  const validation = validateSummaryDeterministic({
@@ -314,13 +495,22 @@ export class CartographerSweepEngine {
314
495
  return { kind: 'failed' };
315
496
  }
316
497
  const confidence = opts.truncated || wasNeutralized ? 'low' : 'medium';
317
- this.d.tree.setSummary(node.path, neutralized.trim(), {
498
+ const written = this.d.tree.setSummary(node.path, neutralized.trim(), {
318
499
  provenance: { source: 'sweep', framework, modelTier: opts.modelTier },
319
500
  meta: {
320
501
  lastAuthoredBy: `sweep:${framework}`,
321
502
  confidence,
322
503
  childDigestHash: opts.childDigestHash,
323
504
  },
505
+ // fix instar#1069: write the small node file now; batch the 67MB index delta.
506
+ deferIndexWrite: true,
507
+ });
508
+ deltas.push({
509
+ path: node.path,
510
+ summaryUpdatedAt: written.summaryUpdatedAt,
511
+ codeHash: written.codeHash,
512
+ staleSincePass: 0,
513
+ authorFailed: false,
324
514
  });
325
515
  return { kind: 'authored' };
326
516
  }
@@ -331,27 +521,20 @@ export class CartographerSweepEngine {
331
521
  }), this.d.config.estCentsPerAuthor);
332
522
  }
333
523
  // ── re-validation sample (fresh ≠ correct) ──────────────────────────────────
334
- async revalidateSample(framework, sampleN, result) {
335
- if (sampleN <= 0)
524
+ async revalidateSample(samplePaths, framework, result, deltas) {
525
+ // fix instar#1069: the oldest-fresh nominees come from the off-thread detect
526
+ // payload — NO main-thread loadIndex() here (that was the second starver).
527
+ if (samplePaths.length === 0)
336
528
  return 0;
337
- const index = this.d.tree.loadIndex();
338
- if (!index)
339
- return 0;
340
- // Oldest summaryUpdatedAt first, among fresh (authored + not stale) nodes.
341
- const fresh = Object.entries(index.nodes)
342
- .filter(([, e]) => e.codeHash != null && e.summaryUpdatedAt != null)
343
- .sort((a, b) => Date.parse(a[1].summaryUpdatedAt) - Date.parse(b[1].summaryUpdatedAt))
344
- .slice(0, sampleN)
345
- .map(([p]) => p);
346
529
  let n = 0;
347
- for (const p of fresh) {
530
+ for (const p of samplePaths) {
348
531
  if (result.centsSpent + this.d.config.estCentsPerAuthor > this.d.config.maxCentsPerPass)
349
532
  break;
350
533
  const node = this.d.tree.getNode(p);
351
534
  if (!node)
352
535
  continue;
353
536
  try {
354
- const outcome = await this.authorNode(node, framework);
537
+ const outcome = await this.authorNode(node, framework, deltas);
355
538
  if (outcome.kind === 'authored' || outcome.kind === 'fingerprint') {
356
539
  n += 1;
357
540
  result.centsSpent += this.d.config.estCentsPerAuthor;
@@ -367,13 +550,16 @@ export class CartographerSweepEngine {
367
550
  }
368
551
  // ── quarantine ──────────────────────────────────────────────────────────────
369
552
  /** Record one author failure; returns true if the node just crossed into quarantine. */
370
- recordFailure(node) {
553
+ recordFailure(node, deltas) {
371
554
  const failures = (node.consecutiveAuthorFailures ?? 0) + 1;
372
555
  const quarantined = failures >= this.d.config.nodeFailQuarantineThreshold;
556
+ const authorFailed = quarantined ? true : node.authorFailed;
373
557
  this.d.tree.patchNodeMeta(node.path, {
374
558
  consecutiveAuthorFailures: failures,
375
- authorFailed: quarantined ? true : node.authorFailed,
376
- });
559
+ authorFailed,
560
+ }, { deferIndexWrite: true });
561
+ // authorFailed is mirrored on the index entry → batch the delta.
562
+ deltas.push({ path: node.path, authorFailed: authorFailed === true });
377
563
  return quarantined && !node.authorFailed;
378
564
  }
379
565
  // ── prompts ─────────────────────────────────────────────────────────────────
@@ -442,11 +628,6 @@ export class CartographerSweepEngine {
442
628
  (err instanceof Error && err.name === 'LlmAbortedError');
443
629
  }
444
630
  }
445
- function depth(p) {
446
- if (p === '')
447
- return 0;
448
- return p.split('/').length;
449
- }
450
631
  function basename(p) {
451
632
  const i = p.lastIndexOf('/');
452
633
  return i >= 0 ? p.slice(i + 1) : p;
@@ -1 +1 @@
1
- {"version":3,"file":"CartographerSweepEngine.js","sourceRoot":"","sources":["../../src/core/CartographerSweepEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CartographerSweepEngine.js","sourceRoot":"","sources":["../../src/core/CartographerSweepEngine.ts"],"names":[],"mappings":"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"}