@descryy/runtime-orchestrator 0.3.0 → 0.4.1

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 (48) hide show
  1. package/LICENSE +6 -0
  2. package/dist/attach-to-running-jvm-process.d.ts +45 -98
  3. package/dist/attach-to-running-jvm-process.d.ts.map +1 -1
  4. package/dist/attach-to-running-jvm-process.js +206 -136
  5. package/dist/attach-to-running-jvm-process.js.map +1 -1
  6. package/dist/attach-to-running-node-process.d.ts +45 -103
  7. package/dist/attach-to-running-node-process.d.ts.map +1 -1
  8. package/dist/attach-to-running-node-process.js +90 -115
  9. package/dist/attach-to-running-node-process.js.map +1 -1
  10. package/dist/attach-to-running-process.d.ts +51 -71
  11. package/dist/attach-to-running-process.d.ts.map +1 -1
  12. package/dist/attach-to-running-process.js +39 -55
  13. package/dist/attach-to-running-process.js.map +1 -1
  14. package/dist/cdp-client.d.ts +8 -18
  15. package/dist/cdp-client.d.ts.map +1 -1
  16. package/dist/cdp-client.js +9 -22
  17. package/dist/cdp-client.js.map +1 -1
  18. package/dist/cgroup-partial-restriction.d.ts +42 -89
  19. package/dist/cgroup-partial-restriction.d.ts.map +1 -1
  20. package/dist/cgroup-partial-restriction.js +44 -91
  21. package/dist/cgroup-partial-restriction.js.map +1 -1
  22. package/dist/collector-version.d.ts +3 -8
  23. package/dist/collector-version.d.ts.map +1 -1
  24. package/dist/collector-version.js +3 -8
  25. package/dist/collector-version.js.map +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/instrumented-execution.d.ts +30 -73
  29. package/dist/instrumented-execution.d.ts.map +1 -1
  30. package/dist/instrumented-execution.js +103 -251
  31. package/dist/instrumented-execution.js.map +1 -1
  32. package/dist/jvm-agent/build.d.ts +29 -53
  33. package/dist/jvm-agent/build.d.ts.map +1 -1
  34. package/dist/jvm-agent/build.js +34 -61
  35. package/dist/jvm-agent/build.js.map +1 -1
  36. package/dist/polling-output-source.d.ts +27 -19
  37. package/dist/polling-output-source.d.ts.map +1 -1
  38. package/dist/polling-output-source.js +23 -33
  39. package/dist/polling-output-source.js.map +1 -1
  40. package/dist/profile-backend-observation.d.ts +26 -53
  41. package/dist/profile-backend-observation.d.ts.map +1 -1
  42. package/dist/profile-backend-observation.js +26 -55
  43. package/dist/profile-backend-observation.js.map +1 -1
  44. package/dist/respawn-and-supervise.d.ts +39 -72
  45. package/dist/respawn-and-supervise.d.ts.map +1 -1
  46. package/dist/respawn-and-supervise.js +43 -84
  47. package/dist/respawn-and-supervise.js.map +1 -1
  48. package/package.json +14 -9
@@ -1,30 +1,14 @@
1
1
  /**
2
- * **The assembly nothing else performed.**
2
+ * The assembly wiring the runtime's pieces together in production code (previously
3
+ * only connected ad hoc by tests). Runs an `ExecutionController` over a `services`
4
+ * configuration; wraps each spawned process in a live `ProcessOutputSource`
5
+ * (polls the buffer, yields each line once); builds a `CollectorContext` with a
6
+ * real `resolveSourceRoot` closed over the execution's own processes; starts,
7
+ * drains and stops the adapter's collectors; writes every emitted item through
8
+ * `EvidenceStore` so redaction runs (plan §28).
3
9
  *
4
- * Every piece of the runtime existed and none of them were wired together
5
- * in production code: the controller spawned services, `RuntimeAdapter`
6
- * could build collectors, `resolveServiceRootForOrigin` could map an origin
7
- * to a source root, and `EvidenceStore` could persist. Only tests ever
8
- * connected them, each in its own way, which meant the thing the product
9
- * actually does had no single implementation to be right or wrong.
10
- *
11
- * This module is that implementation. It:
12
- *
13
- * 1. runs an `ExecutionController` over a `services` configuration;
14
- * 2. wraps each spawned process in a **live** `ProcessOutputSource` that
15
- * polls the accumulated buffer and yields each line exactly once;
16
- * 3. builds a `CollectorContext` carrying a real `resolveSourceRoot`,
17
- * closed over the execution's own processes — the channel RT-033 added
18
- * and RT-029 built the lookup for, which until now nothing populated;
19
- * 4. starts the adapter's collectors, drains them, stops them;
20
- * 5. writes every emitted item through `EvidenceStore`, so redaction runs
21
- * rather than being assumed (plan §28).
22
- *
23
- * **What it deliberately does not do.** It does not decide whether a
24
- * finding exists, does not correlate to graph nodes, and does not drive a
25
- * browser. Those are separate stages with separate contracts, and folding
26
- * them in here would make the one place that assembles the runtime also the
27
- * place that judges it.
10
+ * Deliberately does not decide whether a finding exists, correlate to graph
11
+ * nodes, or drive a browser separate stages, separate contracts.
28
12
  */
29
13
  import { delimiter } from "node:path";
30
14
  import { resolveServiceRootForOrigin } from "@descryy/runtime-contracts";
@@ -36,13 +20,9 @@ import { createPollingProcessOutputSource } from "./polling-output-source.js";
36
20
  import { COLLECTOR_VERSION } from "./collector-version.js";
37
21
  /**
38
22
  * Builds the origin → source-root lookup a collector reads through
39
- * `CollectorContext.resolveSourceRoot`.
40
- *
41
- * This is the piece that had been missing at both ends: RT-029 wrote the
42
- * lookup and nothing called it; RT-033 added the channel and nothing filled
43
- * it. It closes over the execution's *own* processes, which is what makes
44
- * the port→service join possible at all — under ephemeral ports the
45
- * configuration cannot know the port, so only the running process can say.
23
+ * `CollectorContext.resolveSourceRoot`. Closes over the execution's own
24
+ * processes, which is what makes the port→service join possible at all — under
25
+ * ephemeral ports only the running process knows its own port.
46
26
  */
47
27
  export function createSourceRootResolver(processes, configuration) {
48
28
  return (origin) => resolveServiceRootForOrigin(origin, { processes, configuration });
@@ -66,9 +46,8 @@ export function applyOutboundLaunch(execution, launch) {
66
46
  const prepend = new Set(launch.prependToExisting ?? []);
67
47
  const env = { ...service.env };
68
48
  for (const [key, value] of Object.entries(launch.env ?? {})) {
69
- // A variable the target already relies on is extended, not replaced --
70
- // `PYTHONPATH` is the live case, and replacing it stops the application
71
- // finding its own modules, which is breaking it in order to watch it.
49
+ // extend, don't replace, a variable the target relies on (PYTHONPATH is the
50
+ // live case) -- replacing it breaks the app's own module resolution
72
51
  const existing = prepend.has(key) ? (service.env?.[key] ?? process.env[key] ?? "") : "";
73
52
  env[key] = existing === "" ? value : `${value}${delimiter}${existing}`;
74
53
  }
@@ -83,35 +62,19 @@ export function applyOutboundLaunch(execution, launch) {
83
62
  return { ...execution, configuration: { ...execution.configuration, services } };
84
63
  }
85
64
  export async function runInstrumentedExecution(input) {
86
- // **The outbound half, which nothing assembled before this.** The mechanism
87
- // -- an outbound call captured at its own call site, joined to the route it
88
- // reached in another process -- existed and was proven, but only a test
89
- // ever wired it: `runInstrumentedExecution` started
90
- // `createBackendCollectors` and nothing else, so no production path
91
- // observed an outbound call at all.
65
+ // outbound observation needs two things: a collector to read the marker lines,
66
+ // and a launch that installs client instrumentation before app code can capture
67
+ // an unpatched client. The launch is adapter-declared and language-specific; an
68
+ // adapter that declares nothing gets neither.
92
69
  //
93
- // It takes two things, not one. A collector to read the marker lines, and a
94
- // *launch* that puts the client instrumentation inside the target process
95
- // before any application code can capture an unpatched client. The second
96
- // is language-specific, so it is declared on the adapter and merely applied
97
- // here. An adapter that declares nothing gets neither -- the run proceeds,
98
- // no outbound collector is started, and nothing claims one was.
99
- // The budget clock starts here, not at `controller.run()`. The controller
100
- // arms its own timer for the same number a few statements later, so this
101
- // deadline is the marginally earlier — and therefore the conservative — of
102
- // the two; a caller who declared a bound never waits past it because this
103
- // function took some of it before the controller was even created.
70
+ // budget clock starts here, not at controller.run() -- marginally earlier than
71
+ // the controller's own timer, so a caller never waits past its declared bound
104
72
  const budgetStartedAt = Date.now();
105
73
  const outboundLaunch = input.adapter.outboundHttpLaunch?.() ?? null;
106
74
  const launchedExecution = outboundLaunch === null ? input.execution : applyOutboundLaunch(input.execution, outboundLaunch);
107
75
  const configuration = launchedExecution.configuration;
108
- /**
109
- * Every exit from this function reports the same struct, built from the one
110
- * clock. Written as a closure rather than repeated at each `return` because
111
- * there are four of them and the failure mode of the alternative — one
112
- * return that quietly reports a different number — is exactly the class of
113
- * bug this whole field exists to make visible.
114
- */
76
+ // closure, not repeated per-return: there are four returns, and one quietly
77
+ // reporting a different number is the bug this field exists to catch
115
78
  const budgetOutcome = (observedForMs) => {
116
79
  const elapsedMs = Date.now() - budgetStartedAt;
117
80
  return {
@@ -141,20 +104,12 @@ export async function runInstrumentedExecution(input) {
141
104
  commit: controller.execution.commit,
142
105
  configuration: controller.execution.configuration,
143
106
  });
144
- // Closes §34's remaining "runtime self-observability" gap after RT-219:
145
- // `controller.run()` has exactly one throw path (`controller.ts`'s own
146
- // `spawnProcess` catch/rethrow, after it has already recorded the
147
- // failure in `serviceStartResults` and transitioned to `FAILED_START`) --
148
- // left unguarded here, that throw used to reject this whole function,
149
- // uncaught, the identical "harness machinery breaks, zero evidence
150
- // trail" shape RT-219 already fixed one layer up for `collector.start()`.
151
- // Caught the same way: written through the same `EvidenceStore`, tagged
152
- // `source: "harness"`. `controller.execution` and
153
- // `controller.serviceStartResults` are both real at this point (`run()`
154
- // mutates its private state, including a call to its own `#finish()`,
155
- // before it ever throws) so the run resolves with what actually happened
156
- // rather than rejecting the caller's own promise -- the same "resolves
157
- // normally" contract RT-219 already established.
107
+ // RT-219: controller.run()'s one throw path (spawnProcess catch/rethrow, after
108
+ // recording the failure in serviceStartResults) used to reject this whole
109
+ // function uncaught -- zero evidence trail. Caught here and written through
110
+ // EvidenceStore tagged "harness", same "resolves normally" contract RT-219
111
+ // established for collector.start(). controller.execution/serviceStartResults
112
+ // are both already real at this point (run() mutates state before it throws).
158
113
  let execution;
159
114
  try {
160
115
  execution = await controller.run(input.runOptions);
@@ -198,34 +153,23 @@ export async function runInstrumentedExecution(input) {
198
153
  budget: budgetOutcome(0),
199
154
  };
200
155
  }
201
- // One source per spawned service. `serviceName` is what joins a handle
202
- // back to its configuration entry, and a handle without one cannot be
203
- // attributed -- skipped rather than guessed at.
204
- // Declared before the sources close over it: each generator polls until
205
- // this flips, and the flip is what lets `stop()` finish rather than wait
206
- // forever on a source still watching a live buffer.
156
+ // a handle with no serviceName can't be attributed to a config entry -- skipped
157
+ // declared before the sources close over it: the flip lets stop() finish rather
158
+ // than wait forever on a source still watching a live buffer
207
159
  let finished = false;
208
160
  const sources = [];
209
- // A **second, independent** source per process, kept with the service name
210
- // that produced it.
211
- //
212
- // Not the same source object as the backend collector's, and this is the
213
- // whole subtlety: `createPollingProcessOutputSource` yields each line
214
- // exactly once, so two collectors sharing one source do not both see the
215
- // output -- they race for it, and the first consumer wins. Sharing it made
216
- // the backend log collector eat every `DESCRY_EXTERNAL_REQUEST` line and
217
- // the outbound collector report nothing, which reads exactly like a service
218
- // that made no outbound calls.
161
+ // second, independent source per process -- NOT shared with the backend
162
+ // collector's: createPollingProcessOutputSource yields each line exactly once,
163
+ // so sharing means two collectors race for it. Measured: sharing made the
164
+ // backend log collector eat every DESCRY_EXTERNAL_REQUEST line and the outbound
165
+ // collector report nothing, reading as "no outbound calls".
219
166
  const namedSources = [];
220
167
  for (const handle of execution.processes) {
221
168
  if (handle.serviceName === null)
222
169
  continue;
223
170
  const serviceName = handle.serviceName;
224
- // `serviceName` is stamped here, at construction, and this is the only
225
- // place it can be. The handle knows which declared service this process is;
226
- // by the time a collector's evidence reaches `correlateExecution` that
227
- // association is gone — a row in a store and no handle in scope — which is
228
- // what made the gap permanent rather than recoverable.
171
+ // stamped here, at construction -- by the time evidence reaches
172
+ // correlateExecution the handle is out of scope and this association is gone
229
173
  sources.push(createPollingProcessOutputSource({
230
174
  processId: handle.processId,
231
175
  serviceName,
@@ -243,14 +187,10 @@ export async function runInstrumentedExecution(input) {
243
187
  });
244
188
  }
245
189
  const backendCollectors = input.adapter.createBackendCollectors(sources);
246
- // Started only when the launch above actually installed instrumentation.
247
- // A collector reading a process that was never instrumented would report
248
- // "no outbound calls" for a service making them, which is the one answer
249
- // worse than declining to look.
250
- //
251
- // `createExternalRequestCollector` itself names no language; the only
252
- // language-specific value it needs is the adapter's own stack parser, which
253
- // is what turns a captured call site into a file and a line.
190
+ // only started when the launch above actually installed instrumentation --
191
+ // otherwise it would report "no outbound calls" for a service making them,
192
+ // worse than declining to look. createExternalRequestCollector names no
193
+ // language itself; the adapter's stack parser is the only language-specific bit.
254
194
  const outboundCollectors = outboundLaunch === null
255
195
  ? []
256
196
  : namedSources.map(({ source, serviceName }) => createExternalRequestCollector({
@@ -259,26 +199,14 @@ export async function runInstrumentedExecution(input) {
259
199
  stackTraceParser: input.adapter.stackTraceParser,
260
200
  }));
261
201
  const emitted = [];
262
- // `DEC-NEXT-fault-layer-empirical-confirmation.md`'s `dependency`/
263
- // `environment` mechanisms -- the producer side of the same shape RT-219
264
- // established for `automation` above: a structural fact the runtime
265
- // establishes about its own execution environment, tagged
266
- // `source: "dependency-check"` / `"environment-check"` rather than the
267
- // service's own domain source, so a reader can tell "the project's
268
- // declared versions don't match what actually ran" from an observation of
269
- // the application itself without inspecting payload text. Run once per
270
- // spawned service (each has its own `cwd`, and therefore potentially its
271
- // own lockfile/`engines.node`), unconditionally -- "cheap, always
272
- // available, no rerun needed" per the ruling -- but only ever emitted as
273
- // evidence when an actual mismatch is found, the same "silence must not
274
- // manufacture evidence" discipline `"harness"` already observes.
202
+ // dependency/environment version-mismatch checks (DEC-NEXT-fault-layer-empirical-
203
+ // confirmation.md): tagged "dependency-check"/"environment-check" rather than the
204
+ // service's own source, so a reader can tell version drift from an app
205
+ // observation. Run once per service (own cwd/lockfile/engines.node),
206
+ // unconditionally, but only emitted as evidence on an actual mismatch.
275
207
  //
276
- // The observed Node version is `execution.environmentMetadata`'s own
277
- // `nodeVersion` -- `process.version` of the controller process, captured
278
- // once by `captureEnvironmentMetadata` during `controller.run()` above,
279
- // never re-probed here. It is non-null whenever `validationError` is
280
- // null (the early return above already excluded the one case where it
281
- // would not be).
208
+ // observedNodeVersion is process.version captured once during controller.run();
209
+ // never re-probed here.
282
210
  const observedNodeVersion = execution.environmentMetadata?.nodeVersion ?? process.version;
283
211
  for (const handle of execution.processes) {
284
212
  if (handle.serviceName === null)
@@ -337,12 +265,9 @@ export async function runInstrumentedExecution(input) {
337
265
  }));
338
266
  }
339
267
  }
340
- // Opt-in InboundProxy wiring (RT-192, DEC-271) -- see `frontWithInboundProxy`'s
341
- // own doc for what this does and, just as important, what it does not
342
- // close. Built AFTER `controller.run()` has already returned, so every
343
- // service's own readiness answer already exists in
344
- // `controller.serviceStartResults` -- this loop reads that answer, it
345
- // never re-derives or re-checks it itself.
268
+ // opt-in InboundProxy wiring (RT-192, DEC-271), see frontWithInboundProxy's doc.
269
+ // Built after controller.run() returns, so readiness already exists in
270
+ // serviceStartResults -- this loop reads that answer, never re-derives it.
346
271
  const proxies = [];
347
272
  if (input.frontWithInboundProxy !== undefined) {
348
273
  for (const handle of execution.processes) {
@@ -353,11 +278,8 @@ export async function runInstrumentedExecution(input) {
353
278
  continue;
354
279
  const readinessOutcome = controller.serviceStartResults.find((result) => result.serviceName === serviceName && result.stage === "readiness");
355
280
  if (readinessOutcome?.succeeded !== true || handle.port === null) {
356
- // Requested but never proven live -- reported as a real
357
- // COLLECTOR_ERROR, the same shape every other unavailable collector
358
- // in this function gets, rather than a silent no-proxy fallback
359
- // ("we did not observe this" vs "there was nothing to observe",
360
- // plan §17, applies here too).
281
+ // requested but never proven live -- reported as COLLECTOR_ERROR, not a
282
+ // silent no-proxy fallback (plan §17: "not observed" vs "nothing there")
361
283
  emitted.push(input.store.write({
362
284
  executionId: execution.executionId,
363
285
  timestamp: new Date().toISOString(),
@@ -395,28 +317,19 @@ export async function runInstrumentedExecution(input) {
395
317
  const context = {
396
318
  executionId: execution.executionId,
397
319
  configuration,
398
- // Redaction runs here, on the way in -- EvidenceStore.write() is the
399
- // only path that sets redactionStatus, so nothing reaches the returned
400
- // array without having been through it (plan §28).
320
+ // redaction runs here, on the way in -- EvidenceStore.write() is the only
321
+ // path that sets redactionStatus (plan §28)
401
322
  emit: (evidenceInput) => {
402
323
  emitted.push(input.store.write({ ...evidenceInput, executionId: execution.executionId }));
403
324
  },
404
325
  resolveSourceRoot: createSourceRootResolver(execution.processes, configuration),
405
326
  };
406
- // RT-219 (runtime self-observability). `collector.start()`'s documented
407
- // failure path resolves `{available: false, reason}` -- the loop below
408
- // already reports that one, tagged with the domain source the collector
409
- // was going to observe. A collector that instead THROWS out of start()
410
- // is a different claim: not "I looked and could not," but the harness's
411
- // own machinery breaking before it ever got that far. Left unguarded,
412
- // that throw rejects this Promise.all and `runInstrumentedExecution`
413
- // aborts uncaught -- zero evidence trail for why, the exact "collector
414
- // failure mistaken for absence of failure" shape plan §17 forbids,
415
- // applied to the harness's own code instead of the application's.
416
- // Caught here and written through the same EvidenceStore, tagged
417
- // `source: "harness"` rather than the collector's domain source, so a
418
- // reader can tell "our own observer broke" from "the observed system
419
- // did" without inspecting payload text.
327
+ // RT-219: collector.start()'s documented failure path resolves {available:
328
+ // false, reason}, handled below. A collector that instead THROWS out of
329
+ // start() is a different claim -- the harness's own machinery breaking, not
330
+ // "I looked and could not" -- so it's caught here and tagged "harness" rather
331
+ // than the collector's domain source, instead of aborting this Promise.all
332
+ // uncaught with zero evidence trail.
420
333
  const startOutcomes = await Promise.all(collectors.map(async (collector) => {
421
334
  try {
422
335
  return { collector, result: await collector.start(context), threw: false };
@@ -447,14 +360,10 @@ export async function runInstrumentedExecution(input) {
447
360
  return { collector, result: { available: false, reason: `start() threw: ${detail}` }, threw: true };
448
361
  }
449
362
  }));
450
- // A thrown start() was already reported above, under `source: "harness"`
451
- // -- excluded here so it is not reported a second time under
452
- // `source: "backend-process"` by the loop below, which would collide
453
- // the two tags on what is really one failure.
363
+ // a thrown start() was already reported above under "harness" -- excluded here
364
+ // to avoid double-reporting the same failure under "backend-process"
454
365
  const unavailable = startOutcomes.filter((entry) => !entry.threw && !entry.result.available);
455
- // A collector that could not start is reported, never silently absent:
456
- // "we did not observe this" and "there was nothing to observe" are
457
- // different claims (plan §17).
366
+ // reported, never silently absent (plan §17: "not observed" vs "nothing there")
458
367
  for (const entry of unavailable) {
459
368
  emitted.push(input.store.write({
460
369
  executionId: execution.executionId,
@@ -477,78 +386,44 @@ export async function runInstrumentedExecution(input) {
477
386
  collectorVersion: COLLECTOR_VERSION,
478
387
  }));
479
388
  }
480
- // Every fronted proxy that actually started (a collector reported
481
- // `available: false` above never reaches here -- its port stayed null on
482
- // that codepath, matching `InboundProxy.port()`'s own contract).
389
+ // proxies with available:false above never reach here -- port stayed null
483
390
  const proxyPorts = {};
484
391
  for (const entry of proxies) {
485
392
  const port = entry.proxy.port();
486
393
  if (port !== null)
487
394
  proxyPorts[entry.serviceName] = port;
488
395
  }
489
- // **Everything from here to the teardown is wrapped, because a throw above
490
- // the teardown used to leak the whole execution.**
491
- //
492
- // `onReady` is caller code and is documented not to be caught — correctly,
493
- // since turning a caller's failed setup into a clean run would be the
494
- // silent-degradation failure this repo rules against. But "not caught" and
495
- // "not cleaned up" are two different promises and only the first was ever
496
- // made: when `onReady` threw, `finished = true`, the collector `stop()` loop
497
- // and `controller.stop()` were all skipped, so the polling output sources
498
- // kept polling a live buffer, the spawned child was never killed, and the
499
- // controller's timer held the event loop open. Measured: the call rejects in
500
- // 270ms with the caller's own error, and the process then never exits.
501
- //
502
- // The exception still propagates, uncaught by any handler that changes it,
503
- // to the same caller with the same stack — the documented contract is
504
- // untouched. Only the leak goes away.
396
+ // Wrapped because a throw above teardown used to leak the whole execution.
397
+ // onReady is caller code, documented not to be caught -- but "not caught" and
398
+ // "not cleaned up" are different promises: when onReady threw, finished stayed
399
+ // false, so collector.stop()/controller.stop() were skipped, sources kept
400
+ // polling, the spawned child was never killed, and the timer held the event
401
+ // loop open. Measured: rejects in 270ms, process then never exits. Exception
402
+ // still propagates unchanged to the caller; only the leak goes away.
505
403
  //
506
- // Found the expensive way: a worktree missing the fixture app's
507
- // `node_modules` made a test's `onReady` throw after a correctly bounded
508
- // ten-second readiness wait, and the suite then hung for twenty minutes.
509
- // `scripts/preflight.mjs` predicts that dependency gap and calls its worst
510
- // case "a readiness timeout that looks like a slow boot" — milder than what
511
- // actually happened, which is what makes this a defect rather than an
512
- // inconvenience: a guard whose stated worst case is better than reality
513
- // teaches people to trust it less than they should.
404
+ // Found the hard way: a worktree missing node_modules made a test's onReady
405
+ // throw after a correctly bounded readiness wait, then the suite hung for
406
+ // twenty minutes.
514
407
  let observationMs = 0;
515
408
  let bodyFailure = null;
516
409
  let teardownFailure = null;
517
410
  try {
518
411
  await input.onReady?.({ execution, proxyPorts });
519
- // **The observation window is bounded by the declared budget, not just by
520
- // `observeForMs`.** This line used to be an unconditional sleep for the
521
- // full requested window, which made `timeoutMs` an upper bound on how long
522
- // a service was allowed to live and no bound at all on how long the caller
523
- // was made to wait. The two numbers then diverged silently, and in the
524
- // worst direction: `ExecutionController`'s own timer had already killed
525
- // every process at the deadline, so the remainder of the window watched
526
- // dead processes and produced nothing. Measured — a 1500ms budget with a
527
- // 12000ms window returned after 12288ms with zero evidence.
528
- //
529
- // Clamped rather than aborted. There is real work left after this point
530
- // (draining collectors, reaping children) that owns OS resources and must
531
- // still run; cancelling it to hit the number exactly would leak the
532
- // processes the budget exists to bound. So the deadline decides how long we
533
- // *watch*, and the overshoot from teardown is reported rather than hidden —
534
- // `budget.exceeded` is what says the run finished past its own bound.
412
+ // observation window is bounded by the declared budget, not just observeForMs
413
+ // -- unconditionally sleeping the full window used to leave timeoutMs bounding
414
+ // only the service, not the wait; measured, a 1500ms budget with a 12000ms
415
+ // window returned after 12288ms with zero evidence (services dead the whole
416
+ // remainder). Clamped rather than aborted: teardown still owns OS resources
417
+ // and must run; the overshoot is reported via budget.exceeded, not hidden.
535
418
  const remainingMs = budgetStartedAt + configuration.timeoutMs - Date.now();
536
419
  observationMs = Math.max(0, Math.min(input.observeForMs, remainingMs));
537
420
  if (observationMs > 0) {
538
421
  await new Promise((resolve) => setTimeout(resolve, observationMs));
539
422
  }
540
- // A window that was cut short is a degradation, and rule 7 says every
541
- // fallback is labelled. `execution.state` already carries `TIMED_OUT` when
542
- // the controller's own timer fired, but that says the *services* were
543
- // stopped early — it does not say the observation was, and a run whose
544
- // budget expired before the controller ever armed (or after it had already
545
- // completed) leaves no trace in the state at all.
546
- //
547
- // Tagged `source: "harness"` with `COLLECTOR_ERROR`: this is the runtime
548
- // observing itself rather than any watched domain, and the event type's own
549
- // documented purpose is to keep "found nothing" apart from "stopped
550
- // looking". A truncated window is precisely the second one, so it needs no
551
- // new event type of its own.
423
+ // rule 7: cut-short window is a labelled degradation. execution.state's
424
+ // TIMED_OUT says the services stopped early, not that observation did --
425
+ // tagged "harness"/COLLECTOR_ERROR to keep "found nothing" apart from
426
+ // "stopped looking".
552
427
  if (observationMs < input.observeForMs) {
553
428
  emitted.push(input.store.write({
554
429
  executionId: execution.executionId,
@@ -576,35 +451,22 @@ export async function runInstrumentedExecution(input) {
576
451
  }
577
452
  }
578
453
  catch (error) {
579
- // Held, not handled. Rethrown below, unchanged, once the teardown in the
580
- // `finally` has run.
454
+ // held, not handled -- rethrown below, unchanged, once teardown has run
581
455
  bodyFailure = { error };
582
456
  }
583
457
  finally {
584
- // Order matters: the sources must be told the process is done before
585
- // stop() awaits their drain, or stop() waits forever on a generator
586
- // still polling a live buffer.
458
+ // order matters: sources must be told the process is done before stop()
459
+ // awaits their drain, or it waits forever on a generator polling a live buffer
587
460
  finished = true;
588
461
  try {
589
462
  await Promise.all(collectors.map((collector) => collector.stop()));
590
- // **`timeout()` when this function cut the window short, `stop()` when it
591
- // did not and the distinction is not left to whichever timer fires
592
- // first.**
593
- //
594
- // The clamp above ends the observation window at the deadline;
595
- // `ExecutionController`'s own timer fires a moment later. Whichever of the
596
- // two reached the controller first used to decide what the run *said* had
597
- // happened, and teardown regularly won: measured `TIMED_OUT` at 1534ms and
598
- // `COMPLETED` at 1515ms for the same case, with the second surfacing only
599
- // under a loaded full-suite run.
600
- //
601
- // That is the one field `descry-core`'s `observe_runtime` reads to choose
602
- // between `ok` and `timed_out`, so losing the race turned a disclosed
603
- // degradation into a silent one — a run that returns on time and reports
604
- // nothing was cut short. This function already knows: `observationMs <
605
- // input.observeForMs` is exactly the condition it wrote the truncation
606
- // evidence under. It says so directly rather than hoping to lose a race
607
- // it set up itself.
463
+ // timeout() vs stop() is decided here, not left to whichever of this
464
+ // function's clamp or the controller's own timer fires first -- measured
465
+ // TIMED_OUT at 1534ms and COMPLETED at 1515ms for the same case under load.
466
+ // descry-core's observe_runtime reads this to choose ok vs timed_out, so
467
+ // losing that race silently hid a real truncation; this function already
468
+ // knows the answer (observationMs < input.observeForMs) and states it
469
+ // directly instead.
608
470
  if (observationMs < input.observeForMs) {
609
471
  await controller.timeout();
610
472
  }
@@ -613,24 +475,16 @@ export async function runInstrumentedExecution(input) {
613
475
  }
614
476
  }
615
477
  catch (teardownError) {
616
- // On the ordinary path a teardown failure is the only failure there is,
617
- // so it propagates exactly as it always did — held here and rethrown
618
- // below rather than thrown from inside the `finally`, which is the one
619
- // place a throw really can discard an in-flight exception.
478
+ // held and rethrown below rather than thrown inside finally, which can
479
+ // discard an in-flight exception
620
480
  if (bodyFailure === null) {
621
481
  teardownFailure = { error: teardownError };
622
482
  }
623
483
  else {
624
- // When something already failed above, the caller's own error is the
625
- // actionable one and a teardown failure must not replace it — a plain
626
- // `finally` would silently substitute the second for the first, which
627
- // is the same class of mistake as the leak this block exists to fix.
628
- // So it is written to the evidence store instead of thrown, tagged
629
- // `harness` (RT-219) because it is the runtime's own machinery
630
- // breaking rather than anything about the observed application. It is
631
- // not in the returned array — there is no return on this path — but
632
- // the store is durable and is what `evidencePath` points at, so the
633
- // record survives the throw.
484
+ // caller's error is the actionable one; a teardown failure must not
485
+ // silently replace it -- written to the evidence store instead (tagged
486
+ // "harness", RT-219) rather than thrown. Not in the returned array, but
487
+ // the store is durable so the record survives the throw.
634
488
  input.store.write({
635
489
  executionId: execution.executionId,
636
490
  timestamp: new Date().toISOString(),
@@ -655,9 +509,7 @@ export async function runInstrumentedExecution(input) {
655
509
  }
656
510
  }
657
511
  }
658
- // Rethrown untouched — the same error object, the same stack, to the same
659
- // caller. The caller's own failure wins over a teardown failure when both
660
- // happened, because it is the one they can act on.
512
+ // rethrown untouched, same object/stack; caller's failure wins over teardown's
661
513
  if (bodyFailure !== null)
662
514
  throw bodyFailure.error;
663
515
  if (teardownFailure !== null)
@@ -1 +1 @@
1
- {"version":3,"file":"instrumented-execution.js","sourceRoot":"","sources":["../src/instrumented-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumented-execution.js","sourceRoot":"","sources":["../src/instrumented-execution.ts"],"names":[],"mappings":"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"}