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
@@ -58,6 +58,12 @@ export interface CartographerIndexEntry {
58
58
  summaryUpdatedAt: string | null;
59
59
  codeHash: string | null;
60
60
  hasChildren: boolean;
61
+ /** Anti-starvation defer counter (mirrors CartographerNode.staleSincePass). */
62
+ staleSincePass?: number;
63
+ /** Grace-clock anchor for the never-authored-past-grace freshness split. */
64
+ firstSeenAt?: string;
65
+ /** Quarantine flag (mirrors CartographerNode.authorFailed) for the freshness aggregate. */
66
+ authorFailed?: boolean;
61
67
  }
62
68
  export interface CartographerIndex {
63
69
  schemaVersion: number;
@@ -116,14 +122,54 @@ export declare class CartographerTree {
116
122
  * guard (visited real paths).
117
123
  */
118
124
  scaffold(): CartographerIndex;
125
+ /**
126
+ * fix instar#1069 — the BOOT-PATH chunked scaffold. Same result as scaffold()
127
+ * but the directory walk AND the per-node writes YIELD the event loop every
128
+ * `chunkNodes` operations (via the injected `onYield`, e.g. setImmediate), so a
129
+ * huge tree's structural build never freezes /health (the ~2-minute freeze the
130
+ * incident observed). The ONLY sanctioned caller is AgentServer/boot — never a
131
+ * request handler. P19: `shouldAbort` lets the caller bound total time; on abort
132
+ * the partial state is discarded by NOT writing the index (atomic; a half-built
133
+ * index is never read — routes serve indexState:'not-built' until a full run).
134
+ */
135
+ scaffoldChunked(opts: {
136
+ chunkNodes: number;
137
+ onYield: () => Promise<void>;
138
+ shouldAbort?: () => boolean;
139
+ }): Promise<{
140
+ nodeCount: number;
141
+ }>;
119
142
  /** Merge structure into a node, preserving any existing authored fields. */
120
143
  private upsertNode;
121
144
  private rewriteAll;
122
145
  private buildIndex;
123
146
  private nowIso;
124
147
  private readNodeFile;
148
+ /**
149
+ * Load + parse the whole index.
150
+ *
151
+ * ⚠ O(67MB) SYNCHRONOUS JSON.parse — FORBIDDEN on the server hot path (fix
152
+ * instar#1069). On a real tree this blocks the event loop for seconds. The
153
+ * off-event-loop detect parses the index inside a worker; routes serve the
154
+ * snapshot. The Slice-5 lint forbids calling it from routes.ts and
155
+ * CartographerSweepEngine.ts. NO version-gate here: a v1 index (without the
156
+ * staleSincePass/firstSeenAt/authorFailed entry fields) parses unchanged.
157
+ */
125
158
  loadIndex(): CartographerIndex | null;
126
159
  getNode(nodePath: string): CartographerNode | null;
160
+ /**
161
+ * fix instar#1069 — the LINT-CLEAN, BYTE-BOUNDED index loader for the
162
+ * `/cartographer/tree` request path. It stats the file FIRST and refuses
163
+ * ('too-large') above `maxBytes` BEFORE attempting the parse, so a request can
164
+ * never trigger the 67MB sync parse/serialize that froze the event loop. Small
165
+ * trees parse + serve as before. (Distinct method name so the Slice-5 callsite
166
+ * lint — which bans the unbounded `.loadIndex(` — does not flag this.)
167
+ */
168
+ loadIndexBounded(maxBytes: number): {
169
+ state: 'ok' | 'not-built' | 'too-large';
170
+ index?: CartographerIndex;
171
+ nodeCount?: number;
172
+ };
127
173
  getChildren(nodePath: string): CartographerNode[];
128
174
  /**
129
175
  * Author/refresh a node's summary, capturing the current code oid so future
@@ -140,6 +186,14 @@ export declare class CartographerTree {
140
186
  confidence?: CartographerConfidence;
141
187
  childDigestHash?: string | null;
142
188
  };
189
+ /**
190
+ * fix instar#1069 — index-write discipline. When true, write ONLY the small
191
+ * node file and skip the 67MB index parse+serialize; the caller (the sweep
192
+ * engine) batches all of a pass's index updates into ONE off-thread write.
193
+ * The returned node carries the delta the caller persists. Default false
194
+ * (the inline-refresh route + tests keep today's single-call behavior).
195
+ */
196
+ deferIndexWrite?: boolean;
143
197
  }): CartographerNode;
144
198
  /**
145
199
  * Spec #2: patch a node's freshness METADATA without re-authoring its summary.
@@ -160,6 +214,10 @@ export declare class CartographerTree {
160
214
  consecutiveAuthorFailures?: number;
161
215
  authorFailed?: boolean;
162
216
  provenance?: CartographerNodeProvenance;
217
+ },
218
+ /** fix instar#1069 — when true, write ONLY the node file; the caller batches the index delta off-thread. */
219
+ opts?: {
220
+ deferIndexWrite?: boolean;
163
221
  }): CartographerNode | null;
164
222
  /**
165
223
  * Spec #2: read the COMMITTED content of a leaf node's covered file, bounded to
@@ -185,7 +243,25 @@ export declare class CartographerTree {
185
243
  * call — keeping the "cheap on a wide frontier" guarantee.
186
244
  */
187
245
  currentOidMap(): Map<string, string>;
188
- /** Derive staleness for the whole tree from ONE batched git read. */
246
+ /** Absolute path to index.json (the worker reads/writes it off-thread). */
247
+ indexFilePath(): string;
248
+ /** The repo root the detect git plumbing runs against. */
249
+ projectDirPath(): string;
250
+ /** Absolute path to the per-host snapshot every /cartographer/* read route serves from. */
251
+ snapshotPath(): string;
252
+ /** Read the per-host snapshot (null when absent/corrupt). Cheap — no index parse. */
253
+ readSnapshot(): import('./cartographerDetect.js').CartographerSnapshot | null;
254
+ /**
255
+ * Derive staleness for the whole tree from ONE batched git read.
256
+ *
257
+ * ⚠ O(nodeCount)/67MB SYNCHRONOUS — FORBIDDEN on the server hot path (fix
258
+ * instar#1069). It loads the full 67MB index and a full git ls-tree on the
259
+ * calling thread; on a real tree that starves the event loop for tens of
260
+ * seconds. Use the off-event-loop detect (cartographerDetect.runDetect) on the
261
+ * sweep path and serve routes from the snapshot. Retained only for small trees,
262
+ * the pure module, and tests; the Slice-5 lint forbids calling it from
263
+ * routes.ts and CartographerSweepEngine.ts.
264
+ */
189
265
  staleNodes(): CartographerStaleEntry[];
190
266
  /** Derive staleness for a single node. */
191
267
  computeStaleness(nodePath: string): StalenessStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"CartographerTree.d.ts","sourceRoot":"","sources":["../../src/core/CartographerTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CartographerTree.d.ts","sourceRoot":"","sources":["../../src/core/CartographerTree.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,14 @@ import crypto from 'node:crypto';
20
20
  import { SafeGitExecutor } from './SafeGitExecutor.js';
21
21
  import { SafeFsExecutor } from './SafeFsExecutor.js';
22
22
  import { DEFAULT_SKIP_DIRS } from './skipDirs.js';
23
- const SCHEMA_VERSION = 1;
23
+ // Value import is runtime-cycle-free: cartographerDetect imports from this module
24
+ // type-ONLY (erased at compile), so its runtime deps are git/fs/summary helpers only.
25
+ import { readSnapshot as readDetectSnapshot } from './cartographerDetect.js';
26
+ // v2 (fix instar#1069): index entries gained the optional staleSincePass /
27
+ // firstSeenAt / authorFailed fields so the off-event-loop detect reads zero node
28
+ // files. This bump is a DOCUMENTATION/observability signal only — loadIndex does
29
+ // NOT version-gate (a v1 index parses and works unchanged via field coalesce).
30
+ const SCHEMA_VERSION = 2;
24
31
  const DEFAULT_MAX_DEPTH = 12;
25
32
  const DEFAULT_LEAF_EXTENSIONS = ['.ts', '.js', '.mjs', '.cjs'];
26
33
  const DEFAULT_EXCLUDE_SUBSTRINGS = ['.test.', '.spec.', '.d.ts'];
@@ -120,6 +127,12 @@ export class CartographerTree {
120
127
  * never-authored (codeHash null). Honors skip-set, maxDepth, and a symlink-loop
121
128
  * guard (visited real paths).
122
129
  */
130
+ // ⚠ O(nodeCount) SYNCHRONOUS directory walk + per-node atomic writes — FORBIDDEN
131
+ // on the server hot path (fix instar#1069). On a real tree this is the ~2-minute
132
+ // freeze the incident observed. Run it OFF any request handler — the boot-path
133
+ // chunked scaffold (AgentServer.start) is the only sanctioned caller; routes must
134
+ // serve indexState:'not-built' instead. The Slice-5 lint forbids calling it from
135
+ // routes.ts and CartographerSweepEngine.ts.
123
136
  scaffold() {
124
137
  this.ensureDirs();
125
138
  const visitedReal = new Set();
@@ -176,6 +189,156 @@ export class CartographerTree {
176
189
  this.rewriteAll(nodes);
177
190
  return this.buildIndex(nodes);
178
191
  }
192
+ /**
193
+ * fix instar#1069 — the BOOT-PATH chunked scaffold. Same result as scaffold()
194
+ * but the directory walk AND the per-node writes YIELD the event loop every
195
+ * `chunkNodes` operations (via the injected `onYield`, e.g. setImmediate), so a
196
+ * huge tree's structural build never freezes /health (the ~2-minute freeze the
197
+ * incident observed). The ONLY sanctioned caller is AgentServer/boot — never a
198
+ * request handler. P19: `shouldAbort` lets the caller bound total time; on abort
199
+ * the partial state is discarded by NOT writing the index (atomic; a half-built
200
+ * index is never read — routes serve indexState:'not-built' until a full run).
201
+ */
202
+ async scaffoldChunked(opts) {
203
+ this.ensureDirs();
204
+ const chunk = Math.max(1, opts.chunkNodes);
205
+ let ops = 0;
206
+ const tick = async () => {
207
+ ops += 1;
208
+ if (ops % chunk === 0) {
209
+ await opts.onYield();
210
+ if (opts.shouldAbort?.())
211
+ throw new Error('cartographer-scaffold-aborted');
212
+ }
213
+ };
214
+ const relPosix = (abs) => path.relative(this.projectDir, abs).split(path.sep).join('/');
215
+ // ── Pass 1: iterative pre-order walk collecting structure (yields per chunk). ──
216
+ const visitedReal = new Set();
217
+ const childrenByDir = new Map(); // dir relPath → child relPaths
218
+ const kindByPath = new Map();
219
+ kindByPath.set('', 'dir');
220
+ childrenByDir.set('', []);
221
+ const stack = [{ abs: this.projectDir, rel: '', depth: 0 }];
222
+ while (stack.length > 0) {
223
+ const { abs, rel, depth } = stack.pop();
224
+ let real;
225
+ try {
226
+ real = fs.realpathSync(abs);
227
+ }
228
+ catch {
229
+ continue;
230
+ }
231
+ if (visitedReal.has(real))
232
+ continue;
233
+ visitedReal.add(real);
234
+ if (depth > this.maxDepth)
235
+ continue;
236
+ let entries;
237
+ try {
238
+ entries = fs.readdirSync(abs, { withFileTypes: true });
239
+ }
240
+ catch {
241
+ continue;
242
+ }
243
+ const kids = [];
244
+ for (const e of entries.sort((a, b) => a.name.localeCompare(b.name))) {
245
+ if (e.isDirectory()) {
246
+ if (DEFAULT_SKIP_DIRS.has(e.name))
247
+ continue;
248
+ const childAbs = path.join(abs, e.name);
249
+ const childRel = relPosix(childAbs);
250
+ kindByPath.set(childRel, 'dir');
251
+ childrenByDir.set(childRel, []);
252
+ kids.push(childRel);
253
+ stack.push({ abs: childAbs, rel: childRel, depth: depth + 1 });
254
+ }
255
+ else if (e.isFile() && this.isLeafFile(e.name)) {
256
+ const childRel = relPosix(path.join(abs, e.name));
257
+ kindByPath.set(childRel, 'file');
258
+ kids.push(childRel);
259
+ }
260
+ await tick();
261
+ }
262
+ childrenByDir.set(rel, kids);
263
+ }
264
+ // ── Pass 2: write each node file (preserving authored fields), yielding. ──
265
+ const nodes = new Map();
266
+ const keep = new Set();
267
+ for (const [p, kind] of kindByPath) {
268
+ const existing = this.readNodeFile(p);
269
+ const node = {
270
+ path: p, kind, summary: existing?.summary ?? '',
271
+ summaryUpdatedAt: existing?.summaryUpdatedAt ?? null,
272
+ codeHash: existing?.codeHash ?? null, codeRev: existing?.codeRev ?? null,
273
+ children: childrenByDir.get(p) ?? [],
274
+ builtinKind: 'cartographer-node', provenance: existing?.provenance, dirtyAtAuthor: existing?.dirtyAtAuthor,
275
+ firstSeenAt: existing?.firstSeenAt ?? this.nowIso(),
276
+ lastAuthoredBy: existing?.lastAuthoredBy, confidence: existing?.confidence,
277
+ childDigestHash: existing?.childDigestHash, staleSincePass: existing?.staleSincePass,
278
+ consecutiveAuthorFailures: existing?.consecutiveAuthorFailures, authorFailed: existing?.authorFailed,
279
+ };
280
+ nodes.set(p, node);
281
+ keep.add(`${this.slug(p)}.json`);
282
+ this.atomicWrite(this.nodeFilePath(p), JSON.stringify(node, null, 2));
283
+ await tick();
284
+ }
285
+ // Prune node files for paths that disappeared.
286
+ if (fs.existsSync(this.nodesDir)) {
287
+ for (const f of fs.readdirSync(this.nodesDir)) {
288
+ if (f.endsWith('.json') && !keep.has(f)) {
289
+ try {
290
+ SafeFsExecutor.safeUnlinkSync(path.join(this.nodesDir, f), { operation: 'cartographer-prune-stale-node' });
291
+ }
292
+ catch { /* best-effort prune */ }
293
+ }
294
+ await tick();
295
+ }
296
+ }
297
+ // ── Pass 3: STREAM the index to a tmp file incrementally (bounded per-yield),
298
+ // then atomic-rename. NOT a single 67MB JSON.stringify — that one synchronous
299
+ // serialize would block the event loop on a real tree (the boot half of the
300
+ // #1069 invariant). A partial write lives only in the tmp file and is never
301
+ // renamed into place, so an aborted run leaves no readable index. ──
302
+ const tmp = `${this.indexPath}.${process.pid}.${crypto.randomBytes(6).toString('hex')}.tmp`;
303
+ const fd = fs.openSync(tmp, 'w');
304
+ try {
305
+ fs.writeSync(fd, `{\n "schemaVersion": ${SCHEMA_VERSION},\n "root": "",\n "generatedAt": ${JSON.stringify(this.nowIso())},\n "nodes": {`);
306
+ let first = true;
307
+ let buf = '';
308
+ let bufCount = 0;
309
+ for (const node of nodes.values()) {
310
+ const entry = {
311
+ kind: node.kind,
312
+ summaryUpdatedAt: node.summaryUpdatedAt,
313
+ codeHash: node.codeHash,
314
+ hasChildren: node.children.length > 0,
315
+ ...(node.staleSincePass ? { staleSincePass: node.staleSincePass } : {}),
316
+ ...(node.firstSeenAt ? { firstSeenAt: node.firstSeenAt } : {}),
317
+ ...(node.authorFailed ? { authorFailed: true } : {}),
318
+ };
319
+ buf += `${first ? '\n' : ',\n'} ${JSON.stringify(node.path)}: ${JSON.stringify(entry)}`;
320
+ first = false;
321
+ bufCount += 1;
322
+ if (bufCount >= chunk) {
323
+ fs.writeSync(fd, buf);
324
+ buf = '';
325
+ bufCount = 0;
326
+ await opts.onYield();
327
+ if (opts.shouldAbort?.())
328
+ throw new Error('cartographer-scaffold-aborted');
329
+ }
330
+ }
331
+ if (buf)
332
+ fs.writeSync(fd, buf);
333
+ fs.writeSync(fd, '\n }\n}\n');
334
+ fs.fsyncSync(fd);
335
+ }
336
+ finally {
337
+ fs.closeSync(fd);
338
+ }
339
+ fs.renameSync(tmp, this.indexPath);
340
+ return { nodeCount: nodes.size };
341
+ }
179
342
  /** Merge structure into a node, preserving any existing authored fields. */
180
343
  upsertNode(nodes, nodePath, kind, children) {
181
344
  const existing = this.readNodeFile(nodePath);
@@ -235,6 +398,12 @@ export class CartographerTree {
235
398
  summaryUpdatedAt: node.summaryUpdatedAt,
236
399
  codeHash: node.codeHash,
237
400
  hasChildren: node.children.length > 0,
401
+ // fix instar#1069: mirror the accumulated-history fields onto the index so
402
+ // the off-event-loop detect needs no node-file reads. Omit-when-absent so a
403
+ // never-deferred / never-failed node keeps the entry minimal.
404
+ ...(node.staleSincePass ? { staleSincePass: node.staleSincePass } : {}),
405
+ ...(node.firstSeenAt ? { firstSeenAt: node.firstSeenAt } : {}),
406
+ ...(node.authorFailed ? { authorFailed: true } : {}),
238
407
  };
239
408
  }
240
409
  this.atomicWrite(this.indexPath, JSON.stringify(index, null, 2));
@@ -258,6 +427,16 @@ export class CartographerTree {
258
427
  return null;
259
428
  }
260
429
  }
430
+ /**
431
+ * Load + parse the whole index.
432
+ *
433
+ * ⚠ O(67MB) SYNCHRONOUS JSON.parse — FORBIDDEN on the server hot path (fix
434
+ * instar#1069). On a real tree this blocks the event loop for seconds. The
435
+ * off-event-loop detect parses the index inside a worker; routes serve the
436
+ * snapshot. The Slice-5 lint forbids calling it from routes.ts and
437
+ * CartographerSweepEngine.ts. NO version-gate here: a v1 index (without the
438
+ * staleSincePass/firstSeenAt/authorFailed entry fields) parses unchanged.
439
+ */
261
440
  loadIndex() {
262
441
  if (!fs.existsSync(this.indexPath))
263
442
  return null;
@@ -273,6 +452,30 @@ export class CartographerTree {
273
452
  getNode(nodePath) {
274
453
  return this.readNodeFile(nodePath);
275
454
  }
455
+ /**
456
+ * fix instar#1069 — the LINT-CLEAN, BYTE-BOUNDED index loader for the
457
+ * `/cartographer/tree` request path. It stats the file FIRST and refuses
458
+ * ('too-large') above `maxBytes` BEFORE attempting the parse, so a request can
459
+ * never trigger the 67MB sync parse/serialize that froze the event loop. Small
460
+ * trees parse + serve as before. (Distinct method name so the Slice-5 callsite
461
+ * lint — which bans the unbounded `.loadIndex(` — does not flag this.)
462
+ */
463
+ loadIndexBounded(maxBytes) {
464
+ if (!fs.existsSync(this.indexPath))
465
+ return { state: 'not-built' };
466
+ try {
467
+ const size = fs.statSync(this.indexPath).size;
468
+ if (size > maxBytes)
469
+ return { state: 'too-large' };
470
+ const index = JSON.parse(fs.readFileSync(this.indexPath, 'utf8'));
471
+ return { state: 'ok', index, nodeCount: Object.keys(index.nodes).length };
472
+ }
473
+ catch {
474
+ // @silent-fallback-ok — a corrupt/missing index reads as not-built; the route
475
+ // serves indexState:'not-built' and the boot scaffold rebuilds it.
476
+ return { state: 'not-built' };
477
+ }
478
+ }
276
479
  getChildren(nodePath) {
277
480
  const node = this.readNodeFile(nodePath);
278
481
  if (!node)
@@ -310,11 +513,19 @@ export class CartographerTree {
310
513
  authorFailed: false,
311
514
  };
312
515
  this.atomicWrite(this.nodeFilePath(nodePath), JSON.stringify(node, null, 2));
516
+ // fix instar#1069: when deferred, the caller batches the index update off-thread.
517
+ if (opts.deferIndexWrite)
518
+ return node;
313
519
  // Patch the index entry (node file already on disk).
314
520
  const index = this.loadIndex();
315
521
  if (index && index.nodes[nodePath]) {
316
522
  index.nodes[nodePath].summaryUpdatedAt = node.summaryUpdatedAt;
317
523
  index.nodes[nodePath].codeHash = node.codeHash;
524
+ // A successful author clears the defer/quarantine state on the index entry too.
525
+ index.nodes[nodePath].staleSincePass = 0;
526
+ index.nodes[nodePath].authorFailed = false;
527
+ if (node.firstSeenAt)
528
+ index.nodes[nodePath].firstSeenAt = node.firstSeenAt;
318
529
  this.atomicWrite(this.indexPath, JSON.stringify(index, null, 2));
319
530
  }
320
531
  return node;
@@ -328,7 +539,9 @@ export class CartographerTree {
328
539
  * `codeHash` is supplied (a fingerprint refresh) — then the index entry is
329
540
  * patched too so staleness derives correctly. No-op (returns null) if absent.
330
541
  */
331
- patchNodeMeta(nodePath, partial) {
542
+ patchNodeMeta(nodePath, partial,
543
+ /** fix instar#1069 — when true, write ONLY the node file; the caller batches the index delta off-thread. */
544
+ opts = {}) {
332
545
  const existing = this.readNodeFile(nodePath);
333
546
  if (!existing)
334
547
  return null;
@@ -346,10 +559,21 @@ export class CartographerTree {
346
559
  provenance: partial.provenance ?? existing.provenance,
347
560
  };
348
561
  this.atomicWrite(this.nodeFilePath(nodePath), JSON.stringify(node, null, 2));
349
- if (codeHashChanged) {
562
+ if (opts.deferIndexWrite)
563
+ return node;
564
+ // The index entry now also mirrors staleSincePass/authorFailed, so a non-deferred
565
+ // patch that changes any index-mirrored field re-syncs the entry in one write.
566
+ const staleChanged = partial.staleSincePass !== undefined;
567
+ const failedChanged = partial.authorFailed !== undefined;
568
+ if (codeHashChanged || staleChanged || failedChanged) {
350
569
  const index = this.loadIndex();
351
570
  if (index && index.nodes[nodePath]) {
352
- index.nodes[nodePath].codeHash = node.codeHash;
571
+ if (codeHashChanged)
572
+ index.nodes[nodePath].codeHash = node.codeHash;
573
+ if (staleChanged)
574
+ index.nodes[nodePath].staleSincePass = node.staleSincePass;
575
+ if (failedChanged)
576
+ index.nodes[nodePath].authorFailed = node.authorFailed;
353
577
  this.atomicWrite(this.indexPath, JSON.stringify(index, null, 2));
354
578
  }
355
579
  }
@@ -395,7 +619,30 @@ export class CartographerTree {
395
619
  currentOidMap() {
396
620
  return this.currentOids();
397
621
  }
398
- /** Derive staleness for the whole tree from ONE batched git read. */
622
+ // ---- fix instar#1069: off-event-loop detect accessors --------------------
623
+ // The sweep engine builds its worker/sync DetectInput from these instead of
624
+ // calling the O(67MB) methods below on the main thread.
625
+ /** Absolute path to index.json (the worker reads/writes it off-thread). */
626
+ indexFilePath() { return this.indexPath; }
627
+ /** The repo root the detect git plumbing runs against. */
628
+ projectDirPath() { return this.projectDir; }
629
+ /** Absolute path to the per-host snapshot every /cartographer/* read route serves from. */
630
+ snapshotPath() { return path.join(this.cartoDir, 'snapshot.json'); }
631
+ /** Read the per-host snapshot (null when absent/corrupt). Cheap — no index parse. */
632
+ readSnapshot() {
633
+ return readDetectSnapshot(this.snapshotPath());
634
+ }
635
+ /**
636
+ * Derive staleness for the whole tree from ONE batched git read.
637
+ *
638
+ * ⚠ O(nodeCount)/67MB SYNCHRONOUS — FORBIDDEN on the server hot path (fix
639
+ * instar#1069). It loads the full 67MB index and a full git ls-tree on the
640
+ * calling thread; on a real tree that starves the event loop for tens of
641
+ * seconds. Use the off-event-loop detect (cartographerDetect.runDetect) on the
642
+ * sweep path and serve routes from the snapshot. Retained only for small trees,
643
+ * the pure module, and tests; the Slice-5 lint forbids calling it from
644
+ * routes.ts and CartographerSweepEngine.ts.
645
+ */
399
646
  staleNodes() {
400
647
  const index = this.loadIndex();
401
648
  if (!index)
@@ -458,6 +705,11 @@ export class CartographerTree {
458
705
  * never-authored "past grace" when it has no summary AND was first seen longer
459
706
  * ago than `graceMs`.
460
707
  */
708
+ // ⚠ O(nodeCount)/67MB SYNCHRONOUS — loads the full index AND reads one node file
709
+ // per authorable node — FORBIDDEN on the server hot path (fix instar#1069). The
710
+ // off-event-loop detect computes this aggregate from the index alone (zero node
711
+ // files) and the /health route serves it from the snapshot. The Slice-5 lint
712
+ // forbids calling it from routes.ts and CartographerSweepEngine.ts.
461
713
  freshnessHealth(opts = { graceMs: 0 }) {
462
714
  const index = this.loadIndex();
463
715
  const empty = {
@@ -1 +1 @@
1
- {"version":3,"file":"CartographerTree.js","sourceRoot":"","sources":["../../src/core/CartographerTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CartographerTree.js","sourceRoot":"","sources":["../../src/core/CartographerTree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * GuardPostureStore — durable last-known guard posture per machine
3
+ * (GUARD-POSTURE-ENDPOINT-SPEC §2.3(c)).
4
+ *
5
+ * The in-memory pool registry is rebuilt from heartbeats, so last-known
6
+ * posture would evaporate on a local server restart — defeating dark-peer
7
+ * honesty in exactly the GAP-001 topology (a week-dark Mini + the laptop's
8
+ * routine update restarts). This store persists each machine's most recent
9
+ * posture block alongside the RECEIVER-side receipt time, reloads at boot,
10
+ * and lets the pool view render "as of <age> ago" for a peer that has been
11
+ * dark for days.
12
+ *
13
+ * Identity rule: callers key records on the REGISTRY's machine identity
14
+ * (the heartbeat ingestion chokepoint already does) — a body-claimed
15
+ * machineId never reaches this store.
16
+ */
17
+ import type { GuardPostureSummary } from './types.js';
18
+ export interface StoredGuardPosture {
19
+ posture: GuardPostureSummary;
20
+ /** Receiver-side receipt epoch-ms (the router's clock at heartbeat arrival). */
21
+ receivedAtMs: number;
22
+ }
23
+ /** Field-wise posture equality EXCLUDING generatedAt (which changes every
24
+ * beat by construction and must not defeat write-on-change). */
25
+ export declare function postureSemanticsEqual(a: GuardPostureSummary, b: GuardPostureSummary): boolean;
26
+ export declare class GuardPostureStore {
27
+ private readonly filePath;
28
+ private machines;
29
+ constructor(stateDir: string);
30
+ private load;
31
+ /** Persist a machine's posture (write-on-change: a SEMANTICALLY unchanged
32
+ * posture refreshes nothing on disk, so the 30s heartbeat loop doesn't
33
+ * churn fs — `generatedAt` is always fresh and deliberately excluded from
34
+ * the comparison; perf review 2026-06-12 finding #2). */
35
+ record(machineId: string, posture: GuardPostureSummary, receivedAtMs: number): void;
36
+ get(machineId: string): StoredGuardPosture | null;
37
+ }
38
+ //# sourceMappingURL=GuardPostureStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardPostureStore.d.ts","sourceRoot":"","sources":["../../src/core/GuardPostureStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAQD;iEACiE;AACjE,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAgB7F;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAA0C;gBAE9C,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,IAAI;IAoBZ;;;8DAG0D;IAC1D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAoBnF,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;CAGlD"}