@llm-dev-ops/agentics-cli 2.7.1 → 2.7.3

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 (58) hide show
  1. package/dist/pipeline/auto-chain.d.ts +28 -2
  2. package/dist/pipeline/auto-chain.d.ts.map +1 -1
  3. package/dist/pipeline/auto-chain.js +66 -4
  4. package/dist/pipeline/auto-chain.js.map +1 -1
  5. package/dist/pipeline/enterprise/agent-error-capture.d.ts +76 -0
  6. package/dist/pipeline/enterprise/agent-error-capture.d.ts.map +1 -0
  7. package/dist/pipeline/enterprise/agent-error-capture.js +141 -0
  8. package/dist/pipeline/enterprise/agent-error-capture.js.map +1 -0
  9. package/dist/pipeline/enterprise/pass-executor.d.ts.map +1 -1
  10. package/dist/pipeline/enterprise/pass-executor.js +52 -0
  11. package/dist/pipeline/enterprise/pass-executor.js.map +1 -1
  12. package/dist/pipeline/enterprise/pipeline-orchestrator.d.ts.map +1 -1
  13. package/dist/pipeline/enterprise/pipeline-orchestrator.js +15 -0
  14. package/dist/pipeline/enterprise/pipeline-orchestrator.js.map +1 -1
  15. package/dist/pipeline/enterprise/types.d.ts +21 -0
  16. package/dist/pipeline/enterprise/types.d.ts.map +1 -1
  17. package/dist/pipeline/gate/feature-flags.d.ts +30 -0
  18. package/dist/pipeline/gate/feature-flags.d.ts.map +1 -0
  19. package/dist/pipeline/gate/feature-flags.js +37 -0
  20. package/dist/pipeline/gate/feature-flags.js.map +1 -0
  21. package/dist/pipeline/gate/phase-dependency-gate.d.ts +86 -0
  22. package/dist/pipeline/gate/phase-dependency-gate.d.ts.map +1 -1
  23. package/dist/pipeline/gate/phase-dependency-gate.js +263 -41
  24. package/dist/pipeline/gate/phase-dependency-gate.js.map +1 -1
  25. package/dist/pipeline/local-fallback/phase1-consensus-reader.d.ts +33 -0
  26. package/dist/pipeline/local-fallback/phase1-consensus-reader.d.ts.map +1 -0
  27. package/dist/pipeline/local-fallback/phase1-consensus-reader.js +99 -0
  28. package/dist/pipeline/local-fallback/phase1-consensus-reader.js.map +1 -0
  29. package/dist/pipeline/local-fallback/phase3-local-fallback.d.ts +26 -0
  30. package/dist/pipeline/local-fallback/phase3-local-fallback.d.ts.map +1 -0
  31. package/dist/pipeline/local-fallback/phase3-local-fallback.js +127 -0
  32. package/dist/pipeline/local-fallback/phase3-local-fallback.js.map +1 -0
  33. package/dist/pipeline/local-fallback/phase4-local-fallback.d.ts +21 -0
  34. package/dist/pipeline/local-fallback/phase4-local-fallback.d.ts.map +1 -0
  35. package/dist/pipeline/local-fallback/phase4-local-fallback.js +240 -0
  36. package/dist/pipeline/local-fallback/phase4-local-fallback.js.map +1 -0
  37. package/dist/pipeline/local-fallback/phase5a-local-fallback.d.ts +28 -0
  38. package/dist/pipeline/local-fallback/phase5a-local-fallback.d.ts.map +1 -0
  39. package/dist/pipeline/local-fallback/phase5a-local-fallback.js +166 -0
  40. package/dist/pipeline/local-fallback/phase5a-local-fallback.js.map +1 -0
  41. package/dist/pipeline/phases/prompt-generator.d.ts.map +1 -1
  42. package/dist/pipeline/phases/prompt-generator.js +209 -1
  43. package/dist/pipeline/phases/prompt-generator.js.map +1 -1
  44. package/dist/pipeline/ruflo-phase-executor.d.ts +8 -28
  45. package/dist/pipeline/ruflo-phase-executor.d.ts.map +1 -1
  46. package/dist/pipeline/ruflo-phase-executor.js +87 -0
  47. package/dist/pipeline/ruflo-phase-executor.js.map +1 -1
  48. package/dist/pipeline/swarm-orchestrator.d.ts +47 -0
  49. package/dist/pipeline/swarm-orchestrator.d.ts.map +1 -1
  50. package/dist/pipeline/swarm-orchestrator.js +130 -3
  51. package/dist/pipeline/swarm-orchestrator.js.map +1 -1
  52. package/dist/synthesis/domain-unit-registry.d.ts.map +1 -1
  53. package/dist/synthesis/domain-unit-registry.js +35 -13
  54. package/dist/synthesis/domain-unit-registry.js.map +1 -1
  55. package/dist/synthesis/simulation-renderers.d.ts.map +1 -1
  56. package/dist/synthesis/simulation-renderers.js +124 -54
  57. package/dist/synthesis/simulation-renderers.js.map +1 -1
  58. package/package.json +1 -1
@@ -58,6 +58,57 @@ export interface BlockedPhase {
58
58
  readonly phase: PhaseId;
59
59
  readonly missing: ReadonlyArray<string>;
60
60
  }
61
+ /**
62
+ * ADR-PIPELINE-094 Decision 5 — per-input check entry in `gate-decision-log.json`.
63
+ * Captures both the logical path declared in `PHASE_DEPENDENCIES` and the
64
+ * physical path the gate actually inspected (after `resolvePhasePath`). The
65
+ * pair is the smoking gun for path-resolution defects like the originating
66
+ * `4ed715bf` cascade.
67
+ */
68
+ export interface CheckedInput {
69
+ /** Path as declared in PHASE_DEPENDENCIES (logical/relative). */
70
+ readonly logical_path: string;
71
+ /** Absolute path the gate inspected on disk. */
72
+ readonly resolved_path: string;
73
+ readonly exists: boolean;
74
+ readonly size_bytes: number;
75
+ readonly is_error_stub: boolean;
76
+ readonly satisfies: boolean;
77
+ }
78
+ /**
79
+ * ADR-PIPELINE-094 Decision 5 — Ruflo-invocation entry in
80
+ * `gate-decision-log.json`. Mirrors the executor's tier and reason fields
81
+ * so downstream RCA tools can read provenance without parsing log lines.
82
+ */
83
+ export interface RufloInvocationLog {
84
+ readonly phase: PhaseId;
85
+ readonly tier: string;
86
+ readonly reason: string;
87
+ }
88
+ /**
89
+ * ADR-PIPELINE-094 Decision 5 — machine-readable per-phase gate decision.
90
+ * Written to `<runDir>/<phaseDirname>/gate-decision-log.json` for every
91
+ * gate invocation. Replaces text-only `[GATE]` log lines as the source of
92
+ * truth for the `agentics-status` MCP tool and post-run RCA.
93
+ */
94
+ export interface GateDecisionLog {
95
+ readonly phaseId: PhaseId;
96
+ readonly trace_id: string;
97
+ readonly timestamp: string;
98
+ readonly checked_inputs: ReadonlyArray<CheckedInput>;
99
+ readonly ruflo_invoked: ReadonlyArray<RufloInvocationLog>;
100
+ readonly verdict: 'ok' | 'blocked';
101
+ readonly still_missing: ReadonlyArray<string>;
102
+ readonly decision_ms: number;
103
+ }
104
+ /**
105
+ * ADR-PIPELINE-094 Decision 5 — maps gate `PhaseId` to the per-phase output
106
+ * directory under `runDir`. Used to write `gate-decision-log.json` to the
107
+ * canonical location the auto-chain coordinator writes its other artifacts
108
+ * to. Phase 5a/5b compose into the parent `phase5/` tree but get their own
109
+ * subdir so the log file does not collide.
110
+ */
111
+ export declare const PHASE_DIRNAME: Readonly<Record<PhaseId, string>>;
61
112
  /** Per-phase required/optional inputs, hard-coded from the ADR DAG table. */
62
113
  export declare const PHASE_DEPENDENCIES: Readonly<Record<PhaseId, PhaseDependency>>;
63
114
  /**
@@ -90,4 +141,39 @@ export declare function determineBlockedPhases(results: ReadonlyArray<{
90
141
  * outcome. Never throws.
91
142
  */
92
143
  export declare function gatePhaseInputs(phaseId: PhaseId, opts: GateOptions): Promise<GateResult>;
144
+ /**
145
+ * Resolves a logical phase path (as declared in `PHASE_DEPENDENCIES`) to one
146
+ * or more absolute candidate paths under `runDir`, in priority order.
147
+ *
148
+ * Phase 1 writes its outputs flat to `<runDir>/<file>` (see
149
+ * `swarm-orchestrator.ts:1831,2222,2229,2249,2252`), but the gate's
150
+ * dependency table refers to them with a `phase1/` prefix for dependency-DAG
151
+ * clarity. Pre-094 the gate joined the relative path to `runDir` literally
152
+ * and looked at `<runDir>/phase1/<file>`, which never exists in production —
153
+ * the false-negative cascade documented in the originating run.
154
+ *
155
+ * Resolution rules:
156
+ * - `phase1/X` → first try `<runDir>/X` (production, flat layout); if the
157
+ * caller's existence check fails there, fall through to
158
+ * `<runDir>/phase1/X` (test fixtures and any future subdir layout).
159
+ * - All other prefixes resolve unchanged: `<runDir>/<relPath>`.
160
+ *
161
+ * Returns at least one candidate. Callers iterate in order and accept the
162
+ * first candidate that satisfies their predicate.
163
+ *
164
+ * Exported for unit tests and for any future code that needs to resolve a
165
+ * declared dependency path to its physical location. This is the SINGLE place
166
+ * the logical→physical mapping lives.
167
+ */
168
+ export declare function resolvePhasePath(runDir: string, relPath: string): string[];
169
+ /**
170
+ * Writes `<runDir>/<phaseDirname>/gate-decision-log.json` for the given
171
+ * decision. Best-effort: never throws; on filesystem error, logs to stderr
172
+ * and returns. The text `[GATE]` log lines continue alongside this for
173
+ * human readability — the JSON is the machine-readable surface.
174
+ *
175
+ * Exported for unit tests. Production callers go through `gatePhaseInputs`
176
+ * which invokes this internally after computing its verdict.
177
+ */
178
+ export declare function writeGateDecisionLog(runDir: string, log: GateDecisionLog): void;
93
179
  //# sourceMappingURL=phase-dependency-gate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase-dependency-gate.d.ts","sourceRoot":"","sources":["../../../src/pipeline/gate/phase-dependency-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,wBAAwB,IAAI,4BAA4B,EACxD,mBAAmB,IAAI,uBAAuB,EAC9C,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAE3B,MAAM,4BAA4B,CAAC;AAMpC,iDAAiD;AACjD,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,8BAA8B;AAC9B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,uFAAuF;IACvF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,4BAA4B,CAAC;IACxE,wEAAwE;IACxE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,uBAAuB,CAAC;CAC/D;AAED,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACzC;AAQD,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAoEzE,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY7D,CAAC;AAmBF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBvD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC,GACnE,aAAa,CAAC,YAAY,CAAC,CAQ7B;AAMD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,CAoFrB"}
1
+ {"version":3,"file":"phase-dependency-gate.d.ts","sourceRoot":"","sources":["../../../src/pipeline/gate/phase-dependency-gate.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,20 @@
16
16
  import * as fs from 'node:fs';
17
17
  import * as path from 'node:path';
18
18
  import { runPrimaryPhaseExecution as runPrimaryPhaseExecutionImpl, } from '../ruflo-phase-executor.js';
19
+ /**
20
+ * ADR-PIPELINE-094 Decision 5 — maps gate `PhaseId` to the per-phase output
21
+ * directory under `runDir`. Used to write `gate-decision-log.json` to the
22
+ * canonical location the auto-chain coordinator writes its other artifacts
23
+ * to. Phase 5a/5b compose into the parent `phase5/` tree but get their own
24
+ * subdir so the log file does not collide.
25
+ */
26
+ export const PHASE_DIRNAME = {
27
+ phase2: 'phase2',
28
+ 'phase3-sparc': 'phase3',
29
+ 'phase4-adrs-ddd': 'phase4',
30
+ 'phase5a-prompts': 'phase5a',
31
+ 'phase5b-scaffold': 'phase5b',
32
+ };
19
33
  // ============================================================================
20
34
  // Static dependency table (ADR-PIPELINE-093 Decision Rule 1)
21
35
  // ============================================================================
@@ -71,6 +85,9 @@ export const PHASE_DEPENDENCIES = {
71
85
  paths: [
72
86
  'phase3/sparc/specification.md',
73
87
  'engineering/sparc-specification.md',
88
+ // ADR-PIPELINE-094 Decision 2 — Phase-1 fallback: when no SPARC chain
89
+ // exists, the prompt generator runs off Phase-1 simulator consensus.
90
+ 'phase1/decision-memo.md',
74
91
  ],
75
92
  },
76
93
  {
@@ -79,6 +96,11 @@ export const PHASE_DEPENDENCIES = {
79
96
  'phase4/adrs/*.md',
80
97
  'phase4/ddd/bounded-contexts.json',
81
98
  'engineering/architecture-decisions.md',
99
+ // ADR-PIPELINE-094 Decision 2 — Phase-1 fallback: scenario.json and
100
+ // decision-memo.md from Phase 1 are the always-present consensus
101
+ // outputs we can always degrade to.
102
+ 'phase1/decision-memo.md',
103
+ 'phase1/scenario.json',
82
104
  ],
83
105
  },
84
106
  ],
@@ -86,8 +108,16 @@ export const PHASE_DEPENDENCIES = {
86
108
  },
87
109
  'phase5b-scaffold': {
88
110
  phaseId: 'phase5b-scaffold',
89
- required: [{ kind: 'file', paths: ['phase1/manifest.json'] }],
90
- optional: ['phase4/adrs/*.md', 'phase5a/execution-plan.json'],
111
+ required: [
112
+ { kind: 'file', paths: ['phase1/manifest.json'] },
113
+ // ADR-PIPELINE-094 Decision 3 — Phase 5b hard-blocks on the Phase 5a
114
+ // execution plan. Without a concrete unit-of-work the build phase has
115
+ // nothing to do and previously fanned out ~76 cloud agents that all
116
+ // timed out. minBytes:50 keeps the threshold below MIN_BYTES_DEFAULT
117
+ // because a minimal valid execution-plan.json with one entry is small.
118
+ { kind: 'file', paths: ['phase5a/execution-plan.json'], minBytes: 50 },
119
+ ],
120
+ optional: ['phase4/adrs/*.md'],
91
121
  },
92
122
  };
93
123
  // ============================================================================
@@ -179,17 +209,39 @@ export function determineBlockedPhases(results) {
179
209
  * outcome. Never throws.
180
210
  */
181
211
  export async function gatePhaseInputs(phaseId, opts) {
212
+ const tStart = Date.now();
182
213
  const dep = PHASE_DEPENDENCIES[phaseId];
183
214
  const maxRetries = opts.maxRetriesPerInput ?? 1;
184
215
  const runPrimary = opts.runPrimaryPhaseExecution ?? runPrimaryPhaseExecutionImpl;
185
- // First pass collect failures.
186
- const initialFailures = collectMissingPaths(opts.runDir, dep.required);
187
- if (initialFailures.length === 0) {
216
+ const traceId = opts.dossier.traceId ?? 'unknown';
217
+ // ADR-094 Decision 5 — accumulate the rich invocation log for
218
+ // gate-decision-log.json. Ruflo invocations get one entry per attempt with
219
+ // tier and reason, even when the attempt succeeded.
220
+ const rufloLog = [];
221
+ const finalize = (verdict, initialChecks, finalChecks, stillMissing) => {
222
+ // Prefer the second pass when Ruflo was invoked — it reflects the gate's
223
+ // final decision. Otherwise the first pass is the only check we did.
224
+ const checked = finalChecks.length > 0 ? finalChecks : initialChecks;
225
+ writeGateDecisionLog(opts.runDir, {
226
+ phaseId,
227
+ trace_id: traceId,
228
+ timestamp: new Date().toISOString(),
229
+ checked_inputs: checked,
230
+ ruflo_invoked: rufloLog,
231
+ verdict,
232
+ still_missing: stillMissing,
233
+ decision_ms: Date.now() - tStart,
234
+ });
235
+ };
236
+ // First pass — collect failures and per-input details.
237
+ const firstPass = collectMissingPathsWithDetail(opts.runDir, dep.required);
238
+ if (firstPass.missing.length === 0) {
239
+ finalize('ok', firstPass.checked, [], []);
188
240
  return { ok: true, missing: [], ruflo_invoked: [], stillMissing: [] };
189
241
  }
190
242
  // Determine which upstream phases own the failed inputs.
191
243
  const upstreamPhases = new Set();
192
- for (const failedPath of initialFailures) {
244
+ for (const failedPath of firstPass.missing) {
193
245
  const owner = resolveOwner(failedPath);
194
246
  if (owner !== null && INVOKABLE_UPSTREAM.has(owner) && owner !== phaseId) {
195
247
  upstreamPhases.add(owner);
@@ -204,86 +256,223 @@ export async function gatePhaseInputs(phaseId, opts) {
204
256
  continue;
205
257
  invocationCounts.set(upstream, count + 1);
206
258
  invoked.push(upstream);
207
- const missingForOwner = initialFailures.filter((p) => resolveOwner(p) === upstream);
259
+ const missingForOwner = firstPass.missing.filter((p) => resolveOwner(p) === upstream);
208
260
  for (const p of missingForOwner) {
209
261
  process.stderr.write(`[GATE] ${phaseId}: missing ${p} — invoking Ruflo (${upstream})\n`);
210
262
  }
211
263
  try {
212
- // `runPrimaryPhaseExecution` accepts `PrimaryPhaseId` which differs
213
- // from `PhaseId` (no phase2, no phase5b). Tests inject their own
214
- // executor; the production call will be a no-op for phase2 because
215
- // auto-chain wires phase2 through its own path — the gate preserves
216
- // the call for parity.
217
264
  const result = await runPrimary(upstream, opts.dossier, opts.context);
265
+ rufloLog.push({
266
+ phase: upstream,
267
+ tier: String(result.executionTier ?? 'unknown'),
268
+ reason: String(result.reason ?? (result.success ? 'ok' : 'unknown')),
269
+ });
218
270
  if (result.executionTier === 'unavailable') {
219
271
  process.stderr.write(`[GATE] ${phaseId}: Ruflo unavailable (${upstream}) — reason=${result.reason ?? 'unknown'}\n`);
220
272
  }
221
273
  }
222
274
  catch (err) {
223
- process.stderr.write(`[GATE] ${phaseId}: Ruflo threw for ${upstream} — ${err.message}\n`);
275
+ const msg = err.message;
276
+ rufloLog.push({ phase: upstream, tier: 'error', reason: msg });
277
+ process.stderr.write(`[GATE] ${phaseId}: Ruflo threw for ${upstream} — ${msg}\n`);
224
278
  }
225
279
  }
226
280
  // Re-check after all Ruflo invocations have (had a chance to) run.
227
- const stillMissing = collectMissingPaths(opts.runDir, dep.required);
228
- if (stillMissing.length === 0) {
281
+ const secondPass = collectMissingPathsWithDetail(opts.runDir, dep.required);
282
+ if (secondPass.missing.length === 0) {
229
283
  process.stderr.write(`[GATE] ${phaseId}: recovered via Ruflo\n`);
284
+ finalize('ok', firstPass.checked, secondPass.checked, []);
230
285
  return {
231
286
  ok: true,
232
- missing: initialFailures,
287
+ missing: firstPass.missing,
233
288
  ruflo_invoked: invoked,
234
289
  stillMissing: [],
235
290
  };
236
291
  }
237
- process.stderr.write(`[GATE] ${phaseId}: still blocked — ${stillMissing.join(', ')}\n`);
292
+ process.stderr.write(`[GATE] ${phaseId}: still blocked — ${secondPass.missing.join(', ')}\n`);
293
+ finalize('blocked', firstPass.checked, secondPass.checked, secondPass.missing);
238
294
  return {
239
295
  ok: false,
240
- missing: initialFailures,
296
+ missing: firstPass.missing,
241
297
  ruflo_invoked: invoked,
242
- stillMissing,
298
+ stillMissing: secondPass.missing,
243
299
  };
244
300
  }
245
301
  // ============================================================================
302
+ // Path-reality resolution (ADR-PIPELINE-094 Decision 1)
303
+ // ============================================================================
304
+ /**
305
+ * Resolves a logical phase path (as declared in `PHASE_DEPENDENCIES`) to one
306
+ * or more absolute candidate paths under `runDir`, in priority order.
307
+ *
308
+ * Phase 1 writes its outputs flat to `<runDir>/<file>` (see
309
+ * `swarm-orchestrator.ts:1831,2222,2229,2249,2252`), but the gate's
310
+ * dependency table refers to them with a `phase1/` prefix for dependency-DAG
311
+ * clarity. Pre-094 the gate joined the relative path to `runDir` literally
312
+ * and looked at `<runDir>/phase1/<file>`, which never exists in production —
313
+ * the false-negative cascade documented in the originating run.
314
+ *
315
+ * Resolution rules:
316
+ * - `phase1/X` → first try `<runDir>/X` (production, flat layout); if the
317
+ * caller's existence check fails there, fall through to
318
+ * `<runDir>/phase1/X` (test fixtures and any future subdir layout).
319
+ * - All other prefixes resolve unchanged: `<runDir>/<relPath>`.
320
+ *
321
+ * Returns at least one candidate. Callers iterate in order and accept the
322
+ * first candidate that satisfies their predicate.
323
+ *
324
+ * Exported for unit tests and for any future code that needs to resolve a
325
+ * declared dependency path to its physical location. This is the SINGLE place
326
+ * the logical→physical mapping lives.
327
+ */
328
+ export function resolvePhasePath(runDir, relPath) {
329
+ const phase1Match = /^phase1\/(.+)$/.exec(relPath);
330
+ if (phase1Match) {
331
+ const tail = phase1Match[1];
332
+ return [
333
+ path.join(runDir, tail), // flat layout (production default)
334
+ path.join(runDir, 'phase1', tail), // subdir layout (legacy / fixtures)
335
+ ];
336
+ }
337
+ return [path.join(runDir, relPath)];
338
+ }
339
+ // ============================================================================
246
340
  // Internal helpers
247
341
  // ============================================================================
248
342
  /** First 512 bytes is enough to spot JSON error-stub shape. */
249
343
  const STUB_SCAN_BYTES = 512;
250
- /** Returns the list of required-input paths that FAIL the existence/size/stub check. */
251
- function collectMissingPaths(runDir, required) {
344
+ /**
345
+ * Returns both the list of missing logical paths AND a per-input check log
346
+ * suitable for `gate-decision-log.json` (ADR-094 Decision 5). Callers that
347
+ * only need the verdict use `result.missing`; callers that emit the
348
+ * decision log consume `result.checked`.
349
+ */
350
+ function collectMissingPathsWithDetail(runDir, required) {
252
351
  const missing = [];
352
+ const checked = [];
253
353
  for (const req of required) {
254
354
  const minBytes = req.minBytes ?? MIN_BYTES_DEFAULT;
255
355
  if (req.kind === 'file') {
256
356
  // ALL paths must satisfy the criteria.
257
357
  for (const p of req.paths) {
258
- if (!pathSatisfies(runDir, p, minBytes))
358
+ const detail = inspectPath(runDir, p, minBytes);
359
+ checked.push(detail);
360
+ if (!detail.satisfies)
259
361
  missing.push(p);
260
362
  }
261
363
  }
262
364
  else {
263
365
  // any-of: at least ONE path must satisfy.
264
- const anyOk = req.paths.some((p) => pathSatisfies(runDir, p, minBytes));
366
+ const details = req.paths.map((p) => inspectPath(runDir, p, minBytes));
367
+ checked.push(...details);
368
+ const anyOk = details.some((d) => d.satisfies);
265
369
  if (!anyOk) {
266
- // Report the full any-of set (first path is the "preferred" one,
267
- // but the caller needs to see every candidate for the owner map).
370
+ // Report the full any-of set so the caller can map each candidate
371
+ // back to its owning upstream phase via `INPUT_OWNER_MAP`.
268
372
  for (const p of req.paths)
269
373
  missing.push(p);
270
374
  }
271
375
  }
272
376
  }
273
- return missing;
377
+ return { missing, checked };
274
378
  }
275
379
  /**
276
- * Returns true when the given relative path (under runDir) exists, is non-empty
277
- * by the size threshold, and is not a JSON error-stub. Supports trailing `/*`
278
- * glob (e.g. `phase4/adrs/*.md`) the directory must exist and contain at
279
- * least one matching file that passes the criteria.
380
+ * ADR-PIPELINE-094 Decision 5 populated single-path inspection for the log.
381
+ * Returns the FIRST satisfying candidate's metadata; if none satisfy, returns
382
+ * the metadata of the first candidate (the production-default path) so the
383
+ * log surfaces the resolved path the user expects to see in their layout.
280
384
  */
281
- function pathSatisfies(runDir, relPath, minBytes) {
385
+ function inspectPath(runDir, relPath, minBytes) {
282
386
  if (relPath.endsWith('/*.md') || relPath.endsWith('/*')) {
283
- return dirGlobSatisfies(runDir, relPath, minBytes);
387
+ // Glob form: detail collapses to "did the glob match anything".
388
+ return {
389
+ logical_path: relPath,
390
+ resolved_path: path.join(runDir, relPath),
391
+ exists: false, // not strictly meaningful for globs; we only report satisfies
392
+ size_bytes: 0,
393
+ is_error_stub: false,
394
+ satisfies: dirGlobSatisfies(runDir, relPath, minBytes),
395
+ };
396
+ }
397
+ const candidates = resolvePhasePath(runDir, relPath);
398
+ // Prefer the first candidate that satisfies; otherwise return detail for
399
+ // the first candidate (the production-default location).
400
+ let firstFound = null;
401
+ for (const abs of candidates) {
402
+ const detail = inspectFile(abs, minBytes, relPath);
403
+ if (detail.satisfies)
404
+ return detail;
405
+ if (firstFound === null)
406
+ firstFound = detail;
407
+ }
408
+ return firstFound;
409
+ }
410
+ function inspectFile(abs, minBytes, logicalPath) {
411
+ let stat = null;
412
+ try {
413
+ stat = fs.statSync(abs);
414
+ }
415
+ catch {
416
+ return {
417
+ logical_path: logicalPath,
418
+ resolved_path: abs,
419
+ exists: false,
420
+ size_bytes: 0,
421
+ is_error_stub: false,
422
+ satisfies: false,
423
+ };
424
+ }
425
+ if (!stat.isFile()) {
426
+ return {
427
+ logical_path: logicalPath,
428
+ resolved_path: abs,
429
+ exists: true,
430
+ size_bytes: stat.size,
431
+ is_error_stub: false,
432
+ satisfies: false,
433
+ };
434
+ }
435
+ if (stat.size < minBytes) {
436
+ return {
437
+ logical_path: logicalPath,
438
+ resolved_path: abs,
439
+ exists: true,
440
+ size_bytes: stat.size,
441
+ is_error_stub: false,
442
+ satisfies: false,
443
+ };
444
+ }
445
+ let contentSlice = '';
446
+ try {
447
+ const fd = fs.openSync(abs, 'r');
448
+ try {
449
+ const buf = Buffer.alloc(Math.min(STUB_SCAN_BYTES, stat.size));
450
+ fs.readSync(fd, buf, 0, buf.length, 0);
451
+ contentSlice = buf.toString('utf8');
452
+ }
453
+ finally {
454
+ fs.closeSync(fd);
455
+ }
456
+ }
457
+ catch {
458
+ return {
459
+ logical_path: logicalPath,
460
+ resolved_path: abs,
461
+ exists: true,
462
+ size_bytes: stat.size,
463
+ is_error_stub: false,
464
+ satisfies: false,
465
+ };
284
466
  }
285
- const abs = path.join(runDir, relPath);
286
- return fileSatisfies(abs, minBytes);
467
+ const stub = !isNotErrorStub(contentSlice);
468
+ return {
469
+ logical_path: logicalPath,
470
+ resolved_path: abs,
471
+ exists: true,
472
+ size_bytes: stat.size,
473
+ is_error_stub: stub,
474
+ satisfies: !stub,
475
+ };
287
476
  }
288
477
  function fileSatisfies(abs, minBytes) {
289
478
  let stat;
@@ -320,16 +509,49 @@ function dirGlobSatisfies(runDir, relPath, minBytes) {
320
509
  const dirRel = relPath.replace(/\/\*(\.[a-zA-Z0-9]+)?$/, '');
321
510
  const extMatch = relPath.match(/\/\*(\.[a-zA-Z0-9]+)$/);
322
511
  const ext = extMatch?.[1];
323
- const dirAbs = path.join(runDir, dirRel);
324
- let entries;
512
+ // ADR-094 Decision 1: route directory resolution through resolvePhasePath
513
+ // so any phase-prefix layout aliasing applies to globs too. For phase1/*
514
+ // patterns the candidates are `<runDir>/<tail>` and `<runDir>/phase1/<tail>`;
515
+ // for other prefixes there's only one candidate.
516
+ for (const dirAbs of resolvePhasePath(runDir, dirRel)) {
517
+ let entries;
518
+ try {
519
+ entries = fs.readdirSync(dirAbs);
520
+ }
521
+ catch {
522
+ continue;
523
+ }
524
+ const candidates = ext ? entries.filter((e) => e.endsWith(ext)) : entries;
525
+ if (candidates.some((e) => fileSatisfies(path.join(dirAbs, e), minBytes))) {
526
+ return true;
527
+ }
528
+ }
529
+ return false;
530
+ }
531
+ // ============================================================================
532
+ // Gate decision log writer (ADR-PIPELINE-094 Decision 5)
533
+ // ============================================================================
534
+ /**
535
+ * Writes `<runDir>/<phaseDirname>/gate-decision-log.json` for the given
536
+ * decision. Best-effort: never throws; on filesystem error, logs to stderr
537
+ * and returns. The text `[GATE]` log lines continue alongside this for
538
+ * human readability — the JSON is the machine-readable surface.
539
+ *
540
+ * Exported for unit tests. Production callers go through `gatePhaseInputs`
541
+ * which invokes this internally after computing its verdict.
542
+ */
543
+ export function writeGateDecisionLog(runDir, log) {
325
544
  try {
326
- entries = fs.readdirSync(dirAbs);
545
+ const dirname = PHASE_DIRNAME[log.phaseId];
546
+ const phaseDir = path.join(runDir, dirname);
547
+ fs.mkdirSync(phaseDir, { recursive: true });
548
+ const target = path.join(phaseDir, 'gate-decision-log.json');
549
+ // Pretty-print for human grep-ability in log dumps; the file is small.
550
+ fs.writeFileSync(target, JSON.stringify(log, null, 2) + '\n', 'utf8');
327
551
  }
328
- catch {
329
- return false;
552
+ catch (err) {
553
+ process.stderr.write(`[GATE] ${log.phaseId}: failed to write gate-decision-log.json — ${err.message}\n`);
330
554
  }
331
- const candidates = ext ? entries.filter((e) => e.endsWith(ext)) : entries;
332
- return candidates.some((e) => fileSatisfies(path.join(dirAbs, e), minBytes));
333
555
  }
334
556
  /** Returns the owning PhaseId for the given relative path, or null. */
335
557
  function resolveOwner(relPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"phase-dependency-gate.js","sourceRoot":"","sources":["../../../src/pipeline/gate/phase-dependency-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-dependency-gate.js","sourceRoot":"","sources":["../../../src/pipeline/gate/phase-dependency-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * ADR-PIPELINE-094 Decision 8 — Phase-1 consensus reader for local fallback
3
+ * generators. Reads Phase-1 simulator outputs (which Phase 1 writes flat to
4
+ * `<runDir>/`) and exposes them as a typed, normalized shape.
5
+ *
6
+ * Consumed by the phase3/4/5a local fallback generators. Resilient to
7
+ * partial Phase-1 output: any file may be missing; missing fields are left
8
+ * undefined and the caller decides what to synthesize from what's present.
9
+ *
10
+ * Honours both layouts:
11
+ * - flat (production): <runDir>/manifest.json
12
+ * - subdir (test fixture): <runDir>/phase1/manifest.json
13
+ */
14
+ /** Normalized snapshot of Phase-1 simulator consensus. All fields are optional. */
15
+ export interface Phase1Consensus {
16
+ readonly runDir: string;
17
+ readonly manifest?: Record<string, unknown>;
18
+ readonly executiveSummary?: string;
19
+ readonly decisionMemo?: string;
20
+ readonly riskAssessment?: Record<string, unknown>;
21
+ readonly scenario?: Record<string, unknown>;
22
+ readonly architectureDecisions?: string;
23
+ readonly projectLanguage?: string;
24
+ }
25
+ /**
26
+ * Read Phase-1 outputs from `runDir`. Tries flat layout first (production),
27
+ * then subdir (legacy/test). Returns `undefined` only when nothing
28
+ * Phase-1-shaped exists; otherwise populates whichever fields were found.
29
+ */
30
+ export declare function readPhase1Consensus(runDir: string): Phase1Consensus | undefined;
31
+ /** Extract the user-facing scenario query from a Phase-1 consensus. */
32
+ export declare function extractScenarioQuery(c: Phase1Consensus): string;
33
+ //# sourceMappingURL=phase1-consensus-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase1-consensus-reader.d.ts","sourceRoot":"","sources":["../../../src/pipeline/local-fallback/phase1-consensus-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAkE/E;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAW/D"}