@opensip-cli/graph 0.1.5 → 0.1.7

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 (109) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/cli/graph-execute.test.js +7 -5
  3. package/dist/__tests__/cli/graph-execute.test.js.map +1 -1
  4. package/dist/__tests__/cli/graph.test.js +18 -12
  5. package/dist/__tests__/cli/graph.test.js.map +1 -1
  6. package/dist/__tests__/internal-surface.test.js +3 -0
  7. package/dist/__tests__/internal-surface.test.js.map +1 -1
  8. package/dist/__tests__/persistence/session-replay.test.js +7 -4
  9. package/dist/__tests__/persistence/session-replay.test.js.map +1 -1
  10. package/dist/__tests__/rules/registry.test.js +2 -2
  11. package/dist/__tests__/rules/registry.test.js.map +1 -1
  12. package/dist/__tests__/test-utils/with-graph-scope.d.ts.map +1 -1
  13. package/dist/__tests__/test-utils/with-graph-scope.js +2 -2
  14. package/dist/__tests__/test-utils/with-graph-scope.js.map +1 -1
  15. package/dist/__tests__/tool-branches.test.d.ts +3 -3
  16. package/dist/__tests__/tool-branches.test.js +25 -14
  17. package/dist/__tests__/tool-branches.test.js.map +1 -1
  18. package/dist/__tests__/tool-register.test.js +61 -77
  19. package/dist/__tests__/tool-register.test.js.map +1 -1
  20. package/dist/__tests__/tool.test.d.ts +4 -4
  21. package/dist/__tests__/tool.test.js +31 -16
  22. package/dist/__tests__/tool.test.js.map +1 -1
  23. package/dist/cli/__tests__/build-envelope.test.js +77 -0
  24. package/dist/cli/__tests__/build-envelope.test.js.map +1 -1
  25. package/dist/cli/__tests__/graph-command-plan.test.d.ts +2 -0
  26. package/dist/cli/__tests__/graph-command-plan.test.d.ts.map +1 -0
  27. package/dist/cli/__tests__/graph-command-plan.test.js +46 -0
  28. package/dist/cli/__tests__/graph-command-plan.test.js.map +1 -0
  29. package/dist/cli/__tests__/graph-envelope-view.test.d.ts +2 -0
  30. package/dist/cli/__tests__/graph-envelope-view.test.d.ts.map +1 -0
  31. package/dist/cli/__tests__/graph-envelope-view.test.js +97 -0
  32. package/dist/cli/__tests__/graph-envelope-view.test.js.map +1 -0
  33. package/dist/cli/__tests__/graph-list.test.d.ts +2 -0
  34. package/dist/cli/__tests__/graph-list.test.d.ts.map +1 -0
  35. package/dist/cli/__tests__/graph-list.test.js +20 -0
  36. package/dist/cli/__tests__/graph-list.test.js.map +1 -0
  37. package/dist/cli/__tests__/shard-worker.test.js +22 -0
  38. package/dist/cli/__tests__/shard-worker.test.js.map +1 -1
  39. package/dist/cli/equivalence-check-command.d.ts.map +1 -1
  40. package/dist/cli/equivalence-check-command.js +0 -2
  41. package/dist/cli/equivalence-check-command.js.map +1 -1
  42. package/dist/cli/graph/graph-aux-command-specs.d.ts +54 -27
  43. package/dist/cli/graph/graph-aux-command-specs.d.ts.map +1 -1
  44. package/dist/cli/graph/graph-aux-command-specs.js +359 -265
  45. package/dist/cli/graph/graph-aux-command-specs.js.map +1 -1
  46. package/dist/cli/graph-command-plan.d.ts +23 -0
  47. package/dist/cli/graph-command-plan.d.ts.map +1 -0
  48. package/dist/cli/graph-command-plan.js +43 -0
  49. package/dist/cli/graph-command-plan.js.map +1 -0
  50. package/dist/cli/graph-envelope-view.d.ts +41 -0
  51. package/dist/cli/graph-envelope-view.d.ts.map +1 -0
  52. package/dist/cli/graph-envelope-view.js +133 -0
  53. package/dist/cli/graph-envelope-view.js.map +1 -0
  54. package/dist/cli/graph-list.d.ts +29 -0
  55. package/dist/cli/graph-list.d.ts.map +1 -0
  56. package/dist/cli/graph-list.js +44 -0
  57. package/dist/cli/graph-list.js.map +1 -0
  58. package/dist/cli/graph-report.d.ts +16 -6
  59. package/dist/cli/graph-report.d.ts.map +1 -1
  60. package/dist/cli/graph-report.js +10 -6
  61. package/dist/cli/graph-report.js.map +1 -1
  62. package/dist/cli/graph-runner.d.ts.map +1 -1
  63. package/dist/cli/graph-runner.js +23 -10
  64. package/dist/cli/graph-runner.js.map +1 -1
  65. package/dist/cli/graph-single-run-mode.d.ts +23 -0
  66. package/dist/cli/graph-single-run-mode.d.ts.map +1 -0
  67. package/dist/cli/graph-single-run-mode.js +107 -0
  68. package/dist/cli/graph-single-run-mode.js.map +1 -0
  69. package/dist/cli/graph-worker.d.ts.map +1 -1
  70. package/dist/cli/graph-worker.js +1 -0
  71. package/dist/cli/graph-worker.js.map +1 -1
  72. package/dist/cli/graph.d.ts +2 -2
  73. package/dist/cli/graph.d.ts.map +1 -1
  74. package/dist/cli/graph.js +40 -159
  75. package/dist/cli/graph.js.map +1 -1
  76. package/dist/cli/lookup.d.ts.map +1 -1
  77. package/dist/cli/lookup.js +0 -2
  78. package/dist/cli/lookup.js.map +1 -1
  79. package/dist/cli/orchestrate/__tests__/shard-runner-correlation.test.d.ts +22 -0
  80. package/dist/cli/orchestrate/__tests__/shard-runner-correlation.test.d.ts.map +1 -0
  81. package/dist/cli/orchestrate/__tests__/shard-runner-correlation.test.js +208 -0
  82. package/dist/cli/orchestrate/__tests__/shard-runner-correlation.test.js.map +1 -0
  83. package/dist/cli/orchestrate/shard-model.d.ts +17 -0
  84. package/dist/cli/orchestrate/shard-model.d.ts.map +1 -1
  85. package/dist/cli/orchestrate/shard-runner.d.ts +31 -1
  86. package/dist/cli/orchestrate/shard-runner.d.ts.map +1 -1
  87. package/dist/cli/orchestrate/shard-runner.js +215 -11
  88. package/dist/cli/orchestrate/shard-runner.js.map +1 -1
  89. package/dist/cli/orchestrate/sharded-graph.d.ts.map +1 -1
  90. package/dist/cli/orchestrate/sharded-graph.js +32 -3
  91. package/dist/cli/orchestrate/sharded-graph.js.map +1 -1
  92. package/dist/cli/shard-worker.d.ts.map +1 -1
  93. package/dist/cli/shard-worker.js +127 -11
  94. package/dist/cli/shard-worker.js.map +1 -1
  95. package/dist/cli/symbol-index.d.ts.map +1 -1
  96. package/dist/cli/symbol-index.js +0 -2
  97. package/dist/cli/symbol-index.js.map +1 -1
  98. package/dist/internal.d.ts +1 -0
  99. package/dist/internal.d.ts.map +1 -1
  100. package/dist/internal.js +5 -0
  101. package/dist/internal.js.map +1 -1
  102. package/dist/persistence/session-replay.d.ts +9 -4
  103. package/dist/persistence/session-replay.d.ts.map +1 -1
  104. package/dist/persistence/session-replay.js +8 -12
  105. package/dist/persistence/session-replay.js.map +1 -1
  106. package/dist/tool.d.ts.map +1 -1
  107. package/dist/tool.js +37 -118
  108. package/dist/tool.js.map +1 -1
  109. package/package.json +22 -26
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shard runner — the spawn-path CORRELATION + failure-taxonomy contract
3
+ * (subprocess-correlation telemetry spec, Phase 1). Drives REAL child processes
4
+ * via a fixture "CLI" worker (the same harness pattern as `shard-runner-spawn`):
5
+ *
6
+ * - the worker inherits the PARENT run via `OPENSIP_RUN_ID` env (B1) — the spec
7
+ * JSON carries `correlation` WITHOUT `runId`, and the child sees the parent's
8
+ * `OPENSIP_RUN_ID` in its env;
9
+ * - a non-zero exit yields a `ShardFailure { failureClass: 'exit_nonzero' }` and
10
+ * a structured `graph.shard.runner.shard_failed` event whose `stderrPreview`
11
+ * is capped at 500 chars while the returned `ShardFailure.stderr` stays FULL
12
+ * (M4);
13
+ * - a hung shard past a SHORT injected kill-timeout settles as
14
+ * `failureClass: 'timeout'` (M3) — never an indefinite hang;
15
+ * - an OLD-build spec WITHOUT a `correlation` field still builds (wire-compat,
16
+ * GAP a) — the worker tolerates `spec.correlation === undefined`.
17
+ *
18
+ * The fixture echoes the env + spec it saw back through its stdout JSON so the
19
+ * test can assert what the runner forwarded without standing up a real build.
20
+ */
21
+ export {};
22
+ //# sourceMappingURL=shard-runner-correlation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shard-runner-correlation.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/orchestrate/__tests__/shard-runner-correlation.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Shard runner — the spawn-path CORRELATION + failure-taxonomy contract
3
+ * (subprocess-correlation telemetry spec, Phase 1). Drives REAL child processes
4
+ * via a fixture "CLI" worker (the same harness pattern as `shard-runner-spawn`):
5
+ *
6
+ * - the worker inherits the PARENT run via `OPENSIP_RUN_ID` env (B1) — the spec
7
+ * JSON carries `correlation` WITHOUT `runId`, and the child sees the parent's
8
+ * `OPENSIP_RUN_ID` in its env;
9
+ * - a non-zero exit yields a `ShardFailure { failureClass: 'exit_nonzero' }` and
10
+ * a structured `graph.shard.runner.shard_failed` event whose `stderrPreview`
11
+ * is capped at 500 chars while the returned `ShardFailure.stderr` stays FULL
12
+ * (M4);
13
+ * - a hung shard past a SHORT injected kill-timeout settles as
14
+ * `failureClass: 'timeout'` (M3) — never an indefinite hang;
15
+ * - an OLD-build spec WITHOUT a `correlation` field still builds (wire-compat,
16
+ * GAP a) — the worker tolerates `spec.correlation === undefined`.
17
+ *
18
+ * The fixture echoes the env + spec it saw back through its stdout JSON so the
19
+ * test can assert what the runner forwarded without standing up a real build.
20
+ */
21
+ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
22
+ import { tmpdir } from 'node:os';
23
+ import { join } from 'node:path';
24
+ import { configureLogger, RunScope, runWithScope } from '@opensip-cli/core';
25
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
26
+ import { runShardsInParallel } from '../shard-runner.js';
27
+ // The fixture worker, invoked as `node <script> graph-shard-worker <specPath>`.
28
+ // - `fail:<id>` → exit 3 with a LONG stderr (proves the 500-char preview cap
29
+ // while the full stderr survives on the ShardFailure).
30
+ // - `sleep:<id>` → sleep well past the injected short kill-timeout (proves M3).
31
+ // - anything else → emit a ShardBuildResult whose `fragment.cacheKey` carries an
32
+ // env+spec snapshot: the OPENSIP_RUN_ID the child saw and whether the spec had
33
+ // a `correlation` (and, if so, its runId-stripped shape).
34
+ const WORKER_SCRIPT = String.raw `
35
+ const { readFileSync } = require('node:fs');
36
+ const specPath = process.argv[3];
37
+ const spec = JSON.parse(readFileSync(specPath, 'utf8'));
38
+ const id = spec.shard.id;
39
+ if (id.startsWith('fail:')) {
40
+ process.stderr.write('boom '.repeat(200) + 'for ' + id + '\n');
41
+ process.exit(3);
42
+ }
43
+ if (id.startsWith('sleep:')) {
44
+ // Hang past the injected short kill-timeout; the parent SIGKILLs us.
45
+ setTimeout(() => process.exit(0), 60_000);
46
+ return;
47
+ }
48
+ const snapshot = {
49
+ runIdEnv: process.env.OPENSIP_RUN_ID ?? null,
50
+ specHasCorrelation: spec.correlation !== undefined,
51
+ specCorrelation: spec.correlation ?? null,
52
+ };
53
+ const result = {
54
+ shardId: id,
55
+ fragment: {
56
+ version: '3.0', tool: 'graph', language: spec.language ?? 'typescript',
57
+ builtAt: 'x', cacheKey: JSON.stringify(snapshot), resolutionMode: 'exact', functions: {},
58
+ },
59
+ fingerprint: 'fp-' + id,
60
+ boundaryCalls: [],
61
+ parseErrors: [],
62
+ };
63
+ process.stdout.write(JSON.stringify(result));
64
+ process.exit(0);
65
+ `;
66
+ const PARENT_CORRELATION = {
67
+ runId: 'RUN_test',
68
+ tool: 'graph',
69
+ parentCommand: 'graph',
70
+ repo: '/work/acme',
71
+ };
72
+ describe('runShardsInParallel — spawn-path correlation + failure taxonomy', () => {
73
+ let dir;
74
+ let cliScript;
75
+ const stderrCalls = [];
76
+ beforeEach(() => {
77
+ dir = mkdtempSync(join(tmpdir(), 'shard-corr-'));
78
+ cliScript = join(dir, 'fake-cli.cjs');
79
+ writeFileSync(cliScript, WORKER_SCRIPT, 'utf8');
80
+ stderrCalls.length = 0;
81
+ });
82
+ afterEach(() => {
83
+ rmSync(dir, { recursive: true, force: true });
84
+ vi.restoreAllMocks();
85
+ // Restore the singleton logger to its quiet default so capture state can't
86
+ // leak into sibling suites.
87
+ configureLogger({ debugMode: false, silent: true, runId: '' });
88
+ });
89
+ function shard(id) {
90
+ return { id, rootDir: dir, files: [join(dir, `${id}.ts`)] };
91
+ }
92
+ /**
93
+ * Capture the singleton logger's JSONL by enabling stderr output (the runner
94
+ * emits through the imported `logger` singleton) and routing stderr through a
95
+ * spy. `silent: false` + `debugMode: true` is the only mode in which the
96
+ * singleton writes its structured lines to stderr (the SAME gate the
97
+ * run-id-log-isolation test uses).
98
+ */
99
+ function captureLogs() {
100
+ vi.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
101
+ stderrCalls.push(String(chunk));
102
+ return true;
103
+ });
104
+ configureLogger({ debugMode: true, silent: false, runId: '' });
105
+ }
106
+ function loggedEvents(evt) {
107
+ return stderrCalls
108
+ .flatMap((c) => c.split('\n'))
109
+ .filter((line) => line.trim().length > 0)
110
+ .map((line) => {
111
+ try {
112
+ return JSON.parse(line);
113
+ }
114
+ catch {
115
+ return {};
116
+ }
117
+ })
118
+ .filter((e) => e.evt === evt);
119
+ }
120
+ /** Run the pool inside a scope carrying the parent correlation bag. */
121
+ function runWithCorrelation(shards, opts = {}) {
122
+ const scope = new RunScope({
123
+ runId: PARENT_CORRELATION.runId,
124
+ correlation: PARENT_CORRELATION,
125
+ });
126
+ return runWithScope(scope, () => runShardsInParallel({
127
+ shards: [...shards],
128
+ projectRoot: dir,
129
+ cliScript,
130
+ resolutionMode: 'exact',
131
+ ...(opts.hardKillTimeoutMs === undefined
132
+ ? {}
133
+ : { hardKillTimeoutMs: opts.hardKillTimeoutMs }),
134
+ }));
135
+ }
136
+ it('forwards OPENSIP_RUN_ID to the child (B1) and writes correlation sans runId into the spec', async () => {
137
+ const out = await runWithCorrelation([shard('pkg:a')]);
138
+ expect(out.failures).toHaveLength(0);
139
+ const snap = JSON.parse(out.fragments[0].fragment.cacheKey);
140
+ // The child inherited the PARENT run via env (B1) — not via the spec JSON.
141
+ expect(snap.runIdEnv).toBe('RUN_test');
142
+ // The spec carries correlation, but NOT runId (it is env-only).
143
+ expect(snap.specHasCorrelation).toBe(true);
144
+ expect(snap.specCorrelation).not.toBeNull();
145
+ expect(snap.specCorrelation).not.toHaveProperty('runId');
146
+ // The rest of the bag rode along in the spec, plus this shard's id/workerKind.
147
+ expect(snap.specCorrelation?.tool).toBe('graph');
148
+ expect(snap.specCorrelation?.parentCommand).toBe('graph');
149
+ expect(snap.specCorrelation?.shardId).toBe('pkg:a');
150
+ expect(snap.specCorrelation?.workerKind).toBe('shard');
151
+ });
152
+ it('emits graph.shard.runner.shard_failed (exit_nonzero) with a ≤500-char preview; full stderr untruncated (M4)', async () => {
153
+ captureLogs();
154
+ const out = await runWithCorrelation([shard('fail:x')]);
155
+ expect(out.failures).toHaveLength(1);
156
+ const failure = out.failures[0];
157
+ expect(failure.shardId).toBe('fail:x');
158
+ expect(failure.exitCode).toBe(3);
159
+ expect(failure.failureClass).toBe('exit_nonzero');
160
+ // The returned ShardFailure.stderr is the FULL captured output (M4): the
161
+ // fixture writes ~1000 chars of 'boom ' — well over the 500-char preview cap.
162
+ expect(failure.stderr.length).toBeGreaterThan(500);
163
+ expect(failure.stderr).toContain('for fail:x');
164
+ const [event] = loggedEvents('graph.shard.runner.shard_failed');
165
+ expect(event).toBeDefined();
166
+ expect(event?.shardId).toBe('fail:x');
167
+ expect(event?.exitCode).toBe(3);
168
+ expect(event?.failureClass).toBe('exit_nonzero');
169
+ expect(event?.runId).toBe('RUN_test');
170
+ // The structured event's preview is independently capped at 500 chars.
171
+ expect((event?.stderrPreview ?? '').length).toBeLessThanOrEqual(500);
172
+ });
173
+ it('kills a hung shard at the injected timeout → failureClass timeout (M3)', async () => {
174
+ captureLogs();
175
+ // A 200ms injected kill-timeout: the fixture sleeps 60s, so the parent must
176
+ // SIGKILL it and settle as `timeout` — the test itself completes far under
177
+ // the 10-minute production default (proving no indefinite hang).
178
+ const out = await runWithCorrelation([shard('sleep:hang')], { hardKillTimeoutMs: 200 });
179
+ expect(out.fragments).toHaveLength(0);
180
+ expect(out.failures).toHaveLength(1);
181
+ expect(out.failures[0]?.shardId).toBe('sleep:hang');
182
+ expect(out.failures[0]?.failureClass).toBe('timeout');
183
+ expect(out.failures[0]?.stderr).toContain('hard kill-timeout');
184
+ const [event] = loggedEvents('graph.shard.runner.shard_failed');
185
+ expect(event?.failureClass).toBe('timeout');
186
+ expect(event?.shardId).toBe('sleep:hang');
187
+ }, 15_000);
188
+ it('builds a spec WITHOUT a correlation field (wire-compat, GAP a) — no throw, valid result', async () => {
189
+ // Run OUTSIDE any scope correlation: spawnShardWorker reads
190
+ // currentScope()?.correlation === undefined, so the spec omits `correlation`
191
+ // entirely. The worker must tolerate that and still produce a ShardBuildResult.
192
+ const out = await runShardsInParallel({
193
+ shards: [shard('pkg:nocorr')],
194
+ projectRoot: dir,
195
+ cliScript,
196
+ resolutionMode: 'exact',
197
+ });
198
+ expect(out.failures).toHaveLength(0);
199
+ expect(out.fragments).toHaveLength(1);
200
+ const snap = JSON.parse(out.fragments[0].fragment.cacheKey);
201
+ // GAP a: no scope correlation ⇒ the runner omits `correlation` from the spec,
202
+ // and the worker tolerates `spec.correlation === undefined` (no throw — proven
203
+ // by the valid ShardBuildResult above).
204
+ expect(snap.specHasCorrelation).toBe(false);
205
+ expect(snap.specCorrelation).toBeNull();
206
+ });
207
+ });
208
+ //# sourceMappingURL=shard-runner-correlation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shard-runner-correlation.test.js","sourceRoot":"","sources":["../../../../src/cli/orchestrate/__tests__/shard-runner-correlation.test.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@
20
20
  * cache(fragment by shardId+fingerprint) (Phase 3)
21
21
  */
22
22
  import type { Catalog, CrossBoundaryCall, ParseError, ResolutionMode } from '../../types.js';
23
+ import type { RunCorrelation } from '@opensip-cli/core';
23
24
  /**
24
25
  * One parallelizable unit of a sharded build. The discovery strategies
25
26
  * (workspace units, flat-monorepo partitions) map their output onto this
@@ -62,6 +63,22 @@ export interface ShardWorkerSpec {
62
63
  /** Optional adapter id requested by the parent `graph --language <id>` run. */
63
64
  readonly language?: string;
64
65
  readonly resolutionMode: ResolutionMode;
66
+ /**
67
+ * OPTIONAL correlation bag forwarded from the parent run so the shard worker
68
+ * can stamp `tool`/`parentCommand`/`traceId`/`shardId` on its spans and logs
69
+ * (subprocess-correlation telemetry spec, Phase 1).
70
+ *
71
+ * Wire-compat seam: this field is OPTIONAL on purpose. A mismatched
72
+ * parent↔worker build during a partial upgrade — an old worker reading a new
73
+ * spec, or a new worker reading an old spec — MUST NOT break. A required field
74
+ * would. If a hard contract is ever needed, version the envelope with a
75
+ * `specVersion` field rather than making this required.
76
+ *
77
+ * `runId` is deliberately EXCLUDED (`Omit<…, 'runId'>`): it travels via the
78
+ * `OPENSIP_RUN_ID` env ONLY (B1), inherited at the worker's pre-action hook
79
+ * before any spec JSON is parsed.
80
+ */
81
+ readonly correlation?: Omit<RunCorrelation, 'runId'>;
65
82
  }
66
83
  /**
67
84
  * The serializable result one shard worker returns. JSON-safe by
@@ -1 +1 @@
1
- {"version":3,"file":"shard-model.d.ts","sourceRoot":"","sources":["../../../src/cli/orchestrate/shard-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE7F;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yGAAyG;IACzG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C;AAED;kEACkE;AAClE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kEAAkE;IAClE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC"}
1
+ {"version":3,"file":"shard-model.d.ts","sourceRoot":"","sources":["../../../src/cli/orchestrate/shard-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yGAAyG;IACzG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;CACtD;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C;AAED;kEACkE;AAClE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kEAAkE;IAClE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC"}
@@ -16,6 +16,19 @@ import type { Shard, ShardBuildResult } from './shard-model.js';
16
16
  import type { GraphLanguageAdapter } from '../../lang-adapter/types.js';
17
17
  import type { CatalogRepo } from '../../persistence/catalog-repo.js';
18
18
  import type { ResolutionMode } from '../../types.js';
19
+ /**
20
+ * The machine-filterable failure taxonomy for a shard worker, stamped on the
21
+ * parent's `graph.shard.runner.shard_failed` event (subprocess-correlation
22
+ * telemetry spec, Failure taxonomy). Every value is LIVE — `timeout` became
23
+ * emittable with the hard kill-timeout below (M3); there is no dead enum value.
24
+ *
25
+ * - `spawn` — the child process failed to spawn (`child.on('error')`).
26
+ * - `exit_nonzero` — the child spawned but exited with a non-zero code.
27
+ * - `stdout_parse` — the child exited 0 but its stdout was not valid JSON.
28
+ * - `timeout` — the hard kill-timeout fired and SIGKILLed a hung child.
29
+ * - `ipc_error` — reserved for the fork (live-engine) transport (Phase 2).
30
+ */
31
+ export type FailureClass = 'spawn' | 'exit_nonzero' | 'stdout_parse' | 'timeout' | 'ipc_error';
19
32
  export interface RunShardsInput {
20
33
  readonly shards: readonly Shard[];
21
34
  /** Common project root — every fragment's filePaths resolve against it. */
@@ -27,12 +40,29 @@ export interface RunShardsInput {
27
40
  readonly resolutionMode: ResolutionMode;
28
41
  /** Concurrency cap. Default: `max(1, cpus()-1)`. */
29
42
  readonly concurrency?: number;
43
+ /**
44
+ * Hard wall-clock kill-timeout (ms) after which a hung shard worker is
45
+ * SIGKILLed with `failureClass: 'timeout'` (M3). Defaults to
46
+ * {@link SHARD_HARD_KILL_TIMEOUT_MS} (10 min) — the conservative production
47
+ * floor. Exposed as an input ONLY so the timeout path is deterministically
48
+ * exercisable in tests with a short value (the resilience spec, Q3/M3, will
49
+ * later make it user-configurable); production never sets it.
50
+ */
51
+ readonly hardKillTimeoutMs?: number;
30
52
  }
31
- /** A shard whose worker exited non-zero — attributable, non-fatal. */
53
+ /** A shard whose worker failed — attributable, non-fatal. */
32
54
  export interface ShardFailure {
33
55
  readonly shardId: string;
34
56
  readonly exitCode: number;
57
+ /**
58
+ * The FULL captured stderr — drives the user-facing message and stays
59
+ * UNTRUNCATED here (M4). The parent's structured `shard_failed` event caps a
60
+ * separate `stderrPreview` (~500c) independently, so a long stderr is never
61
+ * lost from the failure surface.
62
+ */
35
63
  readonly stderr: string;
64
+ /** Machine-filterable failure taxonomy ({@link FailureClass}); absent on a clean exit. */
65
+ readonly failureClass?: FailureClass;
36
66
  }
37
67
  export interface RunShardsOutput {
38
68
  readonly fragments: readonly ShardBuildResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"shard-runner.d.ts","sourceRoot":"","sources":["../../../src/cli/orchestrate/shard-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAcH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,uGAAuG;IACvG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAoCzF;AAED,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,OAAO,EAAE,oBAAoB,EAC7B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,OAAO,GAChB,aAAa,CA2Bf"}
1
+ {"version":3,"file":"shard-runner.d.ts","sourceRoot":"","sources":["../../../src/cli/orchestrate/shard-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAmBH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAgF/F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,uGAAuG;IACvG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAoGzF;AAED,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,OAAO,EAAE,oBAAoB,EAC7B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,OAAO,GAChB,aAAa,CA+Bf"}