codex-orchestrator 0.1.38 → 0.1.40

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 (104) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +17 -0
  3. package/dist/src/codex/command-adapter.d.ts +6 -0
  4. package/dist/src/codex/command-adapter.d.ts.map +1 -1
  5. package/dist/src/codex/command-adapter.js +79 -2
  6. package/dist/src/codex/command-adapter.js.map +1 -1
  7. package/dist/src/config/schema.d.ts +16 -1
  8. package/dist/src/config/schema.d.ts.map +1 -1
  9. package/dist/src/config/schema.js +67 -1
  10. package/dist/src/config/schema.js.map +1 -1
  11. package/dist/src/git/worktree.d.ts.map +1 -1
  12. package/dist/src/git/worktree.js +0 -1
  13. package/dist/src/git/worktree.js.map +1 -1
  14. package/dist/src/runner/acceptance-proof-runner.d.ts +2 -15
  15. package/dist/src/runner/acceptance-proof-runner.d.ts.map +1 -1
  16. package/dist/src/runner/acceptance-proof-runner.js +40 -72
  17. package/dist/src/runner/acceptance-proof-runner.js.map +1 -1
  18. package/dist/src/runner/acceptance-proof.d.ts +60 -0
  19. package/dist/src/runner/acceptance-proof.d.ts.map +1 -1
  20. package/dist/src/runner/acceptance-proof.js +113 -0
  21. package/dist/src/runner/acceptance-proof.js.map +1 -1
  22. package/dist/src/runner/android-visual-proof-command.d.ts.map +1 -1
  23. package/dist/src/runner/android-visual-proof-command.js +2 -8
  24. package/dist/src/runner/android-visual-proof-command.js.map +1 -1
  25. package/dist/src/runner/auto-visual-proof-command.d.ts.map +1 -1
  26. package/dist/src/runner/auto-visual-proof-command.js +11 -1
  27. package/dist/src/runner/auto-visual-proof-command.js.map +1 -1
  28. package/dist/src/runner/command-utils.d.ts.map +1 -1
  29. package/dist/src/runner/command-utils.js +17 -11
  30. package/dist/src/runner/command-utils.js.map +1 -1
  31. package/dist/src/runner/completion-report.d.ts +21 -5
  32. package/dist/src/runner/completion-report.d.ts.map +1 -1
  33. package/dist/src/runner/completion-report.js +29 -0
  34. package/dist/src/runner/completion-report.js.map +1 -1
  35. package/dist/src/runner/daemon-command.js +2 -35
  36. package/dist/src/runner/daemon-command.js.map +1 -1
  37. package/dist/src/runner/durable-run-summary.d.ts +12 -0
  38. package/dist/src/runner/durable-run-summary.d.ts.map +1 -1
  39. package/dist/src/runner/durable-run-summary.js +2 -0
  40. package/dist/src/runner/durable-run-summary.js.map +1 -1
  41. package/dist/src/runner/flutter-sdk-discovery.d.ts +5 -0
  42. package/dist/src/runner/flutter-sdk-discovery.d.ts.map +1 -0
  43. package/dist/src/runner/flutter-sdk-discovery.js +103 -0
  44. package/dist/src/runner/flutter-sdk-discovery.js.map +1 -0
  45. package/dist/src/runner/handoff-evidence.d.ts +5 -7
  46. package/dist/src/runner/handoff-evidence.d.ts.map +1 -1
  47. package/dist/src/runner/handoff-evidence.js +22 -1
  48. package/dist/src/runner/handoff-evidence.js.map +1 -1
  49. package/dist/src/runner/ios-visual-proof-command.d.ts.map +1 -1
  50. package/dist/src/runner/ios-visual-proof-command.js +2 -4
  51. package/dist/src/runner/ios-visual-proof-command.js.map +1 -1
  52. package/dist/src/runner/issue-tree.d.ts.map +1 -1
  53. package/dist/src/runner/issue-tree.js +28 -2
  54. package/dist/src/runner/issue-tree.js.map +1 -1
  55. package/dist/src/runner/local-execution-session.d.ts +1 -5
  56. package/dist/src/runner/local-execution-session.d.ts.map +1 -1
  57. package/dist/src/runner/local-execution-session.js +83 -5
  58. package/dist/src/runner/local-execution-session.js.map +1 -1
  59. package/dist/src/runner/plan-auto-command.d.ts.map +1 -1
  60. package/dist/src/runner/plan-auto-command.js +180 -96
  61. package/dist/src/runner/plan-auto-command.js.map +1 -1
  62. package/dist/src/runner/prompt.d.ts +1 -0
  63. package/dist/src/runner/prompt.d.ts.map +1 -1
  64. package/dist/src/runner/prompt.js +9 -4
  65. package/dist/src/runner/prompt.js.map +1 -1
  66. package/dist/src/runner/proof-strategy.d.ts +12 -0
  67. package/dist/src/runner/proof-strategy.d.ts.map +1 -0
  68. package/dist/src/runner/proof-strategy.js +19 -0
  69. package/dist/src/runner/proof-strategy.js.map +1 -0
  70. package/dist/src/runner/review-gate-policy.d.ts +1 -1
  71. package/dist/src/runner/review-gate-policy.d.ts.map +1 -1
  72. package/dist/src/runner/review-gate-policy.js +88 -3
  73. package/dist/src/runner/review-gate-policy.js.map +1 -1
  74. package/dist/src/runner/rework-policy.d.ts +34 -2
  75. package/dist/src/runner/rework-policy.d.ts.map +1 -1
  76. package/dist/src/runner/rework-policy.js +89 -14
  77. package/dist/src/runner/rework-policy.js.map +1 -1
  78. package/dist/src/runner/runner-handoff-decision.d.ts +47 -0
  79. package/dist/src/runner/runner-handoff-decision.d.ts.map +1 -0
  80. package/dist/src/runner/runner-handoff-decision.js +66 -0
  81. package/dist/src/runner/runner-handoff-decision.js.map +1 -0
  82. package/dist/src/runner/scope-isolation-policy.d.ts +17 -0
  83. package/dist/src/runner/scope-isolation-policy.d.ts.map +1 -0
  84. package/dist/src/runner/scope-isolation-policy.js +82 -0
  85. package/dist/src/runner/scope-isolation-policy.js.map +1 -0
  86. package/dist/src/runner/scoped-auto-command.d.ts +13 -2
  87. package/dist/src/runner/scoped-auto-command.d.ts.map +1 -1
  88. package/dist/src/runner/scoped-auto-command.js +138 -63
  89. package/dist/src/runner/scoped-auto-command.js.map +1 -1
  90. package/dist/src/runner/scoped-recovery.d.ts.map +1 -1
  91. package/dist/src/runner/scoped-recovery.js +123 -23
  92. package/dist/src/runner/scoped-recovery.js.map +1 -1
  93. package/dist/src/runner/visual-proof-runner.d.ts +4 -0
  94. package/dist/src/runner/visual-proof-runner.d.ts.map +1 -1
  95. package/dist/src/runner/visual-proof-runner.js +85 -39
  96. package/dist/src/runner/visual-proof-runner.js.map +1 -1
  97. package/dist/src/setup/project-config.d.ts +2 -1
  98. package/dist/src/setup/project-config.d.ts.map +1 -1
  99. package/dist/src/setup/project-config.js +61 -14
  100. package/dist/src/setup/project-config.js.map +1 -1
  101. package/docs/deep-dive.md +34 -4
  102. package/package.json +1 -1
  103. package/prompts/workflows/issue-breakdown.md +10 -0
  104. package/prompts/workflows/triage.md +11 -0
@@ -1,10 +1,12 @@
1
1
  import { mergeArtifacts, runConfiguredChecks } from './command-utils.js';
2
2
  import { readScopedCompletionReport } from './completion-report.js';
3
- import { classifyAcceptanceProofDiff, createAcceptanceProofDiffCapture } from './acceptance-proof.js';
3
+ import { buildForbiddenAcceptanceProofDiffEvidence, classifyAcceptanceProofDiff, createAcceptanceProofDiffCapture, } from './acceptance-proof.js';
4
4
  import { evaluateReviewGates, shouldApplyVisualProofGate } from './review-gates.js';
5
5
  import { validateChangedPaths, validateCompletionReportSafety, validateNoAgentOwnedGitPublication, } from './safety.js';
6
+ import { evaluateScopeIsolation } from './scope-isolation-policy.js';
6
7
  import { runRunnerVisualProof } from './visual-proof-runner.js';
7
8
  import { runAcceptanceProofAttempt, shouldRunAcceptanceProofAttempt, } from './acceptance-proof-runner.js';
9
+ import { MISSING_COMPLETION_REPORT_REASON, OPTIONAL_FIGMA_MCP_FAILURE_REASON, REQUIRED_FIGMA_MCP_FAILURE_REASON, } from './rework-policy.js';
8
10
  export async function runLocalExecutionSession(input) {
9
11
  const phaseResults = [];
10
12
  for (const phaseId of input.phases) {
@@ -43,7 +45,7 @@ export async function runImplementationPublishabilityCheck(input) {
43
45
  try {
44
46
  const reportResult = await readScopedCompletionReport(input.reportPath);
45
47
  if (reportResult.kind === 'missing') {
46
- return blocked(['Codex did not write CODEX_ORCHESTRATOR_REPORT_FILE; runner cannot prove safety contract.']);
48
+ return blocked([MISSING_COMPLETION_REPORT_REASON]);
47
49
  }
48
50
  report = reportResult.report;
49
51
  }
@@ -100,6 +102,22 @@ export async function runImplementationPublishabilityCheck(input) {
100
102
  commits: changeSet.commits,
101
103
  };
102
104
  }
105
+ const scopeIsolation = evaluateScopeIsolation({
106
+ config: input.config,
107
+ issue: input.issue,
108
+ changedFiles,
109
+ });
110
+ if (scopeIsolation.blockers.length > 0) {
111
+ return {
112
+ status: 'blocked',
113
+ reasons: scopeIsolation.blockers,
114
+ changedFiles,
115
+ validation: report.validation,
116
+ skippedChecks: report.skippedChecks,
117
+ residualRisks: report.residualRisks,
118
+ commits: changeSet.commits,
119
+ };
120
+ }
103
121
  const violations = [
104
122
  ...validateChangedPaths(changedFiles, input.config),
105
123
  ...validateCompletionReportSafety(report),
@@ -167,6 +185,23 @@ export async function runImplementationPublishabilityCheck(input) {
167
185
  };
168
186
  residualRisks.push(...proofResult.residualRisks);
169
187
  changedFiles = proofResult.changedFiles;
188
+ const postProofScopeIsolation = evaluateScopeIsolation({
189
+ config: input.config,
190
+ issue: input.issue,
191
+ changedFiles,
192
+ });
193
+ if (postProofScopeIsolation.blockers.length > 0) {
194
+ return {
195
+ status: 'blocked',
196
+ reasons: postProofScopeIsolation.blockers,
197
+ changedFiles,
198
+ validation,
199
+ skippedChecks: report.skippedChecks,
200
+ residualRisks,
201
+ commits: changeSet.commits,
202
+ acceptanceProofAttempt,
203
+ };
204
+ }
170
205
  if (proofResult.status === 'blocked') {
171
206
  return {
172
207
  status: 'blocked',
@@ -199,6 +234,7 @@ export async function runImplementationPublishabilityCheck(input) {
199
234
  shellExecutor: input.shellExecutor,
200
235
  });
201
236
  validation = [...validation, ...runnerVisualProof.validation];
237
+ acceptanceProofAttempt = runnerVisualProof.acceptanceProofAttempt ?? acceptanceProofAttempt;
202
238
  report = {
203
239
  ...report,
204
240
  artifacts: mergeArtifacts(report.artifacts, runnerVisualProof.artifacts),
@@ -212,11 +248,18 @@ export async function runImplementationPublishabilityCheck(input) {
212
248
  changedFiles = changeSet.changedPaths;
213
249
  const proofDiff = classifyAcceptanceProofDiff(input.config, proofPhaseChangedFiles);
214
250
  if (proofDiff.forbiddenProductPaths.length > 0) {
251
+ acceptanceProofAttempt = buildForbiddenAcceptanceProofDiffEvidence({
252
+ command: 'runner acceptance proof',
253
+ baseEvidence: acceptanceProofAttempt,
254
+ reportPath: runnerVisualProof.proofReportPath,
255
+ artifactDir: runnerVisualProof.proofArtifactDir,
256
+ artifactPaths: proofPhaseChangedFiles,
257
+ forbiddenProductPaths: proofDiff.forbiddenProductPaths,
258
+ });
259
+ validation = [...validation, ...acceptanceProofAttempt.validation];
215
260
  return {
216
261
  status: 'blocked',
217
- reasons: [
218
- `Acceptance proof produced product-code changes during acceptance proof: ${proofDiff.forbiddenProductPaths.join(', ')}.`,
219
- ],
262
+ reasons: acceptanceProofAttempt.blockers,
220
263
  changedFiles,
221
264
  validation,
222
265
  skippedChecks: report.skippedChecks,
@@ -225,6 +268,23 @@ export async function runImplementationPublishabilityCheck(input) {
225
268
  acceptanceProofAttempt,
226
269
  };
227
270
  }
271
+ const postRunnerProofScopeIsolation = evaluateScopeIsolation({
272
+ config: input.config,
273
+ issue: input.issue,
274
+ changedFiles,
275
+ });
276
+ if (postRunnerProofScopeIsolation.blockers.length > 0) {
277
+ return {
278
+ status: 'blocked',
279
+ reasons: postRunnerProofScopeIsolation.blockers,
280
+ changedFiles,
281
+ validation,
282
+ skippedChecks: report.skippedChecks,
283
+ residualRisks,
284
+ commits: changeSet.commits,
285
+ acceptanceProofAttempt,
286
+ };
287
+ }
228
288
  }
229
289
  const failedValidation = validation.filter((line) => line.status === 'failed');
230
290
  if (failedValidation.length > 0) {
@@ -331,6 +391,10 @@ function blocked(reasons) {
331
391
  };
332
392
  }
333
393
  function formatCodexExitReason(result) {
394
+ const figmaReason = formatFigmaMcpFailureReason(result);
395
+ if (figmaReason) {
396
+ return figmaReason;
397
+ }
334
398
  const output = [result.stderr, result.stdout]
335
399
  .map((value) => value.trim())
336
400
  .filter((value) => value.length > 0)
@@ -345,6 +409,20 @@ function formatCodexExitReason(result) {
345
409
  ? `Codex exited with code ${result.exitCode}: ${truncate(detail, 600)}`
346
410
  : `Codex exited with code ${result.exitCode}`;
347
411
  }
412
+ function formatFigmaMcpFailureReason(result) {
413
+ if (result.exitCode === 0 || result.figmaMcp?.enabled !== true) {
414
+ return undefined;
415
+ }
416
+ const output = `${result.stderr}\n${result.stdout}`;
417
+ const looksLikeFigmaMcpFailure = /\bfigma\b[\s\S]{0,120}\b(?:mcp|server|tool|connection|connect|timeout|timed out|401|403|auth|unauthorized|forbidden|unavailable|failed)\b/iu.test(output)
418
+ || /mcp_servers\.figma/iu.test(output);
419
+ if (!looksLikeFigmaMcpFailure) {
420
+ return undefined;
421
+ }
422
+ return result.figmaMcp.requirement === 'required'
423
+ ? REQUIRED_FIGMA_MCP_FAILURE_REASON
424
+ : OPTIONAL_FIGMA_MCP_FAILURE_REASON;
425
+ }
348
426
  function truncate(value, maxLength) {
349
427
  if (value.length <= maxLength) {
350
428
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"local-execution-session.js","sourceRoot":"","sources":["../../../src/runner/local-execution-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-execution-session.js","sourceRoot":"","sources":["../../../src/runner/local-execution-session.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-auto-command.d.ts","sourceRoot":"","sources":["../../../src/runner/plan-auto-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGzH,OAAO,EAAyB,kBAAkB,EAAgD,MAAM,oBAAoB,CAAC;AAE7H,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE9F,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AA+C/F,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,YAAY,CAAC,EAAE;QAAE,GAAG,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;KAAE,CAAC;IACpF,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAmDD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2ZxG"}
1
+ {"version":3,"file":"plan-auto-command.d.ts","sourceRoot":"","sources":["../../../src/runner/plan-auto-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGzH,OAAO,EAAyB,kBAAkB,EAAgD,MAAM,oBAAoB,CAAC;AAE7H,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE9F,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAoD/F,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,YAAY,CAAC,EAAE;QAAE,GAAG,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;KAAE,CAAC;IACpF,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAoDD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2ZxG"}
@@ -19,19 +19,22 @@ import { runImplementationPublishabilityCheck } from './local-execution-session.
19
19
  import { RunnerLifecycleEventStore } from './lifecycle-events.js';
20
20
  import { RunnerStateStore } from './local-state.js';
21
21
  import { buildIssueTreeChildPrompt, buildPlanAutoPrompt, sessionPromptPath, sessionReportPath, writeDurablePrompt, } from './prompt.js';
22
- import { maxReworkAttemptsForReasons, shouldRequestImplementationRework } from './rework-policy.js';
22
+ import { decideImplementationRework } from './rework-policy.js';
23
23
  import { evaluateParentRiskRoutingGate } from './review-gates.js';
24
+ import { buildBlockedHandoffEvidence, buildPromotionAsBlockedHandoffEvidence, buildReviewReadyHandoffEvidence, } from './runner-handoff-decision.js';
24
25
  import { sessionLogPath } from './run-log.js';
25
26
  import { cleanupSessionCodexHome, sessionCodexHomePath } from './session-home.js';
26
27
  class ChildExecutionBlockedError extends Error {
27
28
  durableRunSummary;
28
29
  freshContextReview;
29
30
  acceptanceProof;
30
- constructor(message, durableRunSummary, freshContextReview, acceptanceProof) {
31
+ reworkAttempts;
32
+ constructor(message, durableRunSummary, freshContextReview, acceptanceProof, reworkAttempts) {
31
33
  super(message);
32
34
  this.durableRunSummary = durableRunSummary;
33
35
  this.freshContextReview = freshContextReview;
34
36
  this.acceptanceProof = acceptanceProof;
37
+ this.reworkAttempts = reworkAttempts;
35
38
  }
36
39
  }
37
40
  export async function runPlanAutoCommand(options) {
@@ -378,27 +381,12 @@ async function executeChild(input) {
378
381
  const childIssueNumber = input.child.issue.number;
379
382
  const branchName = `codex/tree-${input.parentIssue.number}-issue-${childIssueNumber}`;
380
383
  const worktreePath = join(input.targetRoot, input.config.runner.workspaceRoot, `tree-${input.parentIssue.number}-issue-${childIssueNumber}`);
381
- const sessionId = `tree-${input.parentIssue.number}-issue-${childIssueNumber}-${formatSessionTimestamp(input.now)}`;
382
- const promptPath = sessionPromptPath({
383
- targetRoot: input.targetRoot,
384
- config: input.config,
385
- issueNumber: childIssueNumber,
386
- sessionId,
387
- });
388
- const reportPath = sessionReportPath({
389
- targetRoot: input.targetRoot,
390
- config: input.config,
391
- issueNumber: childIssueNumber,
392
- sessionId,
393
- });
394
- const logPath = sessionLogPath({
395
- targetRoot: input.targetRoot,
396
- config: input.config,
397
- issueNumber: childIssueNumber,
398
- sessionId,
399
- });
400
- const isolatedHomePath = sessionCodexHomePath({ targetRoot: input.targetRoot, sessionId });
401
384
  const store = new RunnerStateStore(input.targetRoot, input.config);
385
+ let sessionId = '';
386
+ let promptPath = '';
387
+ let reportPath = '';
388
+ let logPath = '';
389
+ let snapshotPath = '';
402
390
  await input.git.createIssueWorktree({
403
391
  targetRoot: input.targetRoot,
404
392
  workspacePath: worktreePath,
@@ -407,48 +395,48 @@ async function executeChild(input) {
407
395
  });
408
396
  await input.issueAdapter.addLabels(childIssueNumber, [input.config.github.labels.running.name]);
409
397
  await input.issueAdapter.postComment(childIssueNumber, `codex-orchestrator: claimed #${childIssueNumber} for tree-child autonomous work under #${input.parentIssue.number} at ${input.now.toISOString()}.`);
410
- await mkdir(dirname(reportPath), { recursive: true });
411
- await mkdir(isolatedHomePath, { recursive: true });
412
- const promptText = buildIssueTreeChildPrompt({
413
- parentIssue: input.parentIssue,
414
- childIssue: input.child.issue,
415
- config: input.config,
416
- workflowPromptText: input.issueTreeWorkflowPrompt,
417
- childMetadata: input.child.metadata,
418
- dependencyIssues: input.dependencyIssues,
419
- promptPath,
420
- reportPath,
421
- branchName,
422
- worktreePath,
423
- });
424
- await writeDurablePrompt({
425
- targetRoot: input.targetRoot,
426
- config: input.config,
427
- issueNumber: childIssueNumber,
428
- sessionId,
429
- promptText,
430
- });
431
- await store.upsertRun({
432
- issueNumber: childIssueNumber,
433
- parentIssueNumber: input.parentIssue.number,
434
- mode: 'tree-child',
435
- workspacePath: worktreePath,
436
- sessionId,
437
- branchName,
438
- promptPath,
439
- reportPath,
440
- logPath,
441
- retryCount: 0,
442
- createdAt: input.now.toISOString(),
443
- updatedAt: input.now.toISOString(),
444
- });
445
398
  let publishability;
446
399
  let rework;
400
+ const reworkAttempts = [];
447
401
  const maxReworkAttempts = Math.max(input.config.loopPolicy.rework.maxAttempts, input.config.reviewGates.acceptanceProof.maxIterations - 1);
448
402
  for (let attempt = 0; attempt <= maxReworkAttempts; attempt++) {
449
403
  const attemptNow = new Date(input.now.getTime() + attempt);
404
+ sessionId = `tree-${input.parentIssue.number}-issue-${childIssueNumber}-${formatSessionTimestamp(attemptNow)}${attempt === 0 ? '' : `-attempt-${attempt}`}`;
405
+ promptPath = sessionPromptPath({
406
+ targetRoot: input.targetRoot,
407
+ config: input.config,
408
+ issueNumber: childIssueNumber,
409
+ sessionId,
410
+ });
411
+ reportPath = sessionReportPath({
412
+ targetRoot: input.targetRoot,
413
+ config: input.config,
414
+ issueNumber: childIssueNumber,
415
+ sessionId,
416
+ });
417
+ logPath = sessionLogPath({
418
+ targetRoot: input.targetRoot,
419
+ config: input.config,
420
+ issueNumber: childIssueNumber,
421
+ sessionId,
422
+ });
423
+ const isolatedHomePath = sessionCodexHomePath({ targetRoot: input.targetRoot, sessionId });
424
+ await mkdir(dirname(reportPath), { recursive: true });
425
+ await mkdir(isolatedHomePath, { recursive: true });
426
+ const promptText = buildIssueTreeChildPrompt({
427
+ parentIssue: input.parentIssue,
428
+ childIssue: input.child.issue,
429
+ config: input.config,
430
+ workflowPromptText: input.issueTreeWorkflowPrompt,
431
+ childMetadata: input.child.metadata,
432
+ dependencyIssues: input.dependencyIssues,
433
+ promptPath,
434
+ reportPath,
435
+ branchName,
436
+ worktreePath,
437
+ });
450
438
  const attemptPromptText = rework
451
- ? `${promptText}\n\n## Rework Request\nThis is an automatic rework attempt (#${rework.attempt}). Continue from the current worktree state; do not start over.\nThe previous attempt was blocked for these reasons:\n${rework.blockedReasons.map((reason) => `- ${reason}`).join('\n')}\nAddress the blockers, then produce a fresh completion report JSON for the runner.`
439
+ ? `${promptText}\n\n## Rework Request\nThis is an automatic rework attempt (#${rework.attempt}). Continue from the current worktree state; do not start over.\nThe previous attempt was blocked for these reasons:\n${rework.blockedReasons.map((reason) => `- ${reason}`).join('\n')}\n${rework.disableOptionalFigmaMcp ? 'Optional Figma MCP failed in the previous attempt. Continue without optional Figma MCP access unless the issue explicitly requires Figma.\n' : ''}Address the blockers, then produce a fresh completion report JSON for the runner.`
452
440
  : promptText;
453
441
  await writeDurablePrompt({
454
442
  targetRoot: input.targetRoot,
@@ -477,6 +465,23 @@ async function executeChild(input) {
477
465
  blockedBy: [],
478
466
  createdAt: attemptNow,
479
467
  });
468
+ snapshotPath = snapshot.path;
469
+ await store.upsertRun({
470
+ issueNumber: childIssueNumber,
471
+ parentIssueNumber: input.parentIssue.number,
472
+ mode: 'tree-child',
473
+ workspacePath: worktreePath,
474
+ sessionId,
475
+ branchName,
476
+ promptPath,
477
+ reportPath,
478
+ logPath,
479
+ retryCount: attempt,
480
+ createdAt: input.now.toISOString(),
481
+ updatedAt: attemptNow.toISOString(),
482
+ attemptStartedAt: attemptNow.toISOString(),
483
+ snapshotPath,
484
+ });
480
485
  await safeAppendEvent(input.events, {
481
486
  timestamp: attemptNow,
482
487
  issueNumber: childIssueNumber,
@@ -486,7 +491,7 @@ async function executeChild(input) {
486
491
  phase: 'tree-child',
487
492
  status: 'started',
488
493
  summary: rework ? `Starting tree-child rework attempt #${rework.attempt}.` : 'Starting tree-child Codex session.',
489
- artifacts: sessionArtifacts(promptPath, reportPath, logPath, snapshot.path),
494
+ artifacts: sessionArtifacts(promptPath, reportPath, logPath, snapshotPath),
490
495
  });
491
496
  const beforeHead = await input.git.getHead(worktreePath);
492
497
  let codexResult;
@@ -504,6 +509,7 @@ async function executeChild(input) {
504
509
  branchName,
505
510
  phase: 'tree-child',
506
511
  logPath,
512
+ disableOptionalFigmaMcp: rework?.disableOptionalFigmaMcp,
507
513
  });
508
514
  }
509
515
  finally {
@@ -537,12 +543,49 @@ async function executeChild(input) {
537
543
  }),
538
544
  },
539
545
  });
540
- if (publishability.status === 'blocked'
541
- && attempt < maxReworkAttemptsForReasons(publishability.reasons, input.config)
542
- && shouldRequestImplementationRework(publishability.reasons, input.config)) {
543
- rework = { attempt: attempt + 1, blockedReasons: publishability.reasons };
544
- await mkdir(isolatedHomePath, { recursive: true });
545
- continue;
546
+ if (publishability.status === 'blocked') {
547
+ const reworkDecision = decideImplementationRework({
548
+ reasons: publishability.reasons,
549
+ config: input.config,
550
+ attempt,
551
+ });
552
+ reworkAttempts.push({
553
+ attempt,
554
+ maxAttempts: 'maxAttempts' in reworkDecision ? reworkDecision.maxAttempts : undefined,
555
+ decisionKind: reworkDecision.kind,
556
+ reasons: publishability.reasons,
557
+ promptPath,
558
+ reportPath,
559
+ logPath,
560
+ snapshotPath,
561
+ });
562
+ if (reworkDecision.kind === 'retry') {
563
+ rework = reworkDecision.rework;
564
+ await safeAppendEvent(input.events, {
565
+ timestamp: attemptNow,
566
+ issueNumber: childIssueNumber,
567
+ parentIssueNumber: input.parentIssue.number,
568
+ mode: 'tree-child',
569
+ sessionId,
570
+ phase: 'tree-child',
571
+ status: 'needs-rework',
572
+ summary: `Runner scheduled tree-child rework attempt #${reworkDecision.nextAttempt}.`,
573
+ artifacts: sessionArtifacts(promptPath, reportPath, logPath, snapshotPath),
574
+ });
575
+ await mkdir(isolatedHomePath, { recursive: true });
576
+ continue;
577
+ }
578
+ await safeAppendEvent(input.events, {
579
+ timestamp: attemptNow,
580
+ issueNumber: childIssueNumber,
581
+ parentIssueNumber: input.parentIssue.number,
582
+ mode: 'tree-child',
583
+ sessionId,
584
+ phase: 'tree-child',
585
+ status: 'blocked',
586
+ summary: `Runner rework decision: ${reworkDecision.kind}.`,
587
+ artifacts: sessionArtifacts(promptPath, reportPath, logPath, snapshotPath),
588
+ });
546
589
  }
547
590
  break;
548
591
  }
@@ -551,30 +594,58 @@ async function executeChild(input) {
551
594
  }
552
595
  if (publishability.status === 'promotion-requested') {
553
596
  const promotion = publishability.report.promotion;
554
- throw new Error([
597
+ const evidence = buildPromotionAsBlockedHandoffEvidence({
598
+ publishability,
599
+ fallbackReason: 'Child requested promotion instead of completing issue-tree work.',
600
+ nextAction: 'Parent issue-tree execution is blocked until this child is resolved.',
601
+ });
602
+ const durableRunSummary = await writeDurableRunSummary({
603
+ targetRoot: input.targetRoot,
604
+ config: input.config,
605
+ issueNumber: childIssueNumber,
606
+ sessionId,
607
+ outcome: evidence.outcome,
608
+ changedFiles: evidence.changedFiles,
609
+ validation: evidence.validation,
610
+ blockers: evidence.blockers,
611
+ skippedChecks: evidence.skippedChecks,
612
+ residualRisks: evidence.residualRisks,
613
+ nextAction: evidence.nextAction,
614
+ logPath,
615
+ reportPath,
616
+ acceptanceProof: evidence.acceptanceProof,
617
+ reworkAttempts,
618
+ });
619
+ const message = [
555
620
  'Child requested promotion instead of completing issue-tree work.',
556
621
  promotion ? `Reason: ${promotion.reason}` : undefined,
557
622
  promotion ? `Evidence: ${promotion.evidence.join(', ')}` : undefined,
558
- ].filter(Boolean).join(' '));
623
+ ].filter(Boolean).join(' ');
624
+ throw new ChildExecutionBlockedError(message, durableRunSummary, undefined, evidence.acceptanceProof, reworkAttempts);
559
625
  }
560
626
  if (publishability.status === 'blocked') {
627
+ const evidence = buildBlockedHandoffEvidence({
628
+ publishability,
629
+ nextAction: 'Parent issue-tree execution is blocked until this child is resolved.',
630
+ });
561
631
  const durableRunSummary = await writeDurableRunSummary({
562
632
  targetRoot: input.targetRoot,
563
633
  config: input.config,
564
634
  issueNumber: childIssueNumber,
565
635
  sessionId,
566
- outcome: 'blocked',
567
- changedFiles: publishability.changedFiles,
568
- validation: publishability.validation ?? [],
569
- blockers: publishability.reasons,
570
- skippedChecks: publishability.skippedChecks,
571
- residualRisks: publishability.residualRisks,
572
- nextAction: 'Parent issue-tree execution is blocked until this child is resolved.',
636
+ outcome: evidence.outcome,
637
+ changedFiles: evidence.changedFiles,
638
+ validation: evidence.validation,
639
+ blockers: evidence.blockers,
640
+ skippedChecks: evidence.skippedChecks,
641
+ residualRisks: evidence.residualRisks,
642
+ nextAction: evidence.nextAction,
573
643
  logPath,
574
644
  reportPath,
575
- acceptanceProof: publishability.acceptanceProofAttempt,
645
+ acceptanceProof: evidence.acceptanceProof,
646
+ reworkAttempts,
576
647
  });
577
- throw new ChildExecutionBlockedError(publishability.reasons.join('; '), durableRunSummary, undefined, publishability.acceptanceProofAttempt);
648
+ throw new ChildExecutionBlockedError(evidence.blockers.join('; '), durableRunSummary, undefined, evidence.acceptanceProof, reworkAttempts);
578
649
  }
579
650
  const freshContextReview = await runFreshContextReviewIfEnabled({
580
651
  targetRoot: input.targetRoot,
@@ -587,41 +658,53 @@ async function executeChild(input) {
587
658
  publishability,
588
659
  });
589
660
  if (freshContextReview?.status === 'blocked') {
661
+ const evidence = buildBlockedHandoffEvidence({
662
+ publishability,
663
+ freshContextReview,
664
+ nextAction: 'Parent issue-tree execution is blocked until this child review finding is resolved.',
665
+ });
590
666
  const durableRunSummary = await writeDurableRunSummary({
591
667
  targetRoot: input.targetRoot,
592
668
  config: input.config,
593
669
  issueNumber: childIssueNumber,
594
670
  sessionId,
595
- outcome: 'blocked',
596
- changedFiles: publishability.changedFiles,
597
- validation: publishability.validation,
598
- blockers: ['Fresh-Context Review blocked publication', ...freshContextReview.findings],
599
- skippedChecks: publishability.skippedChecks,
600
- residualRisks: [...publishability.residualRisks, ...freshContextReview.residualRisks],
601
- suggestionEvidence: freshContextReview.findings,
602
- nextAction: 'Parent issue-tree execution is blocked until this child review finding is resolved.',
671
+ outcome: evidence.outcome,
672
+ changedFiles: evidence.changedFiles,
673
+ validation: evidence.validation,
674
+ blockers: evidence.blockers,
675
+ skippedChecks: evidence.skippedChecks,
676
+ residualRisks: evidence.residualRisks,
677
+ suggestionEvidence: evidence.suggestionEvidence,
678
+ nextAction: evidence.nextAction,
603
679
  logPath,
604
680
  reportPath,
605
- acceptanceProof: publishability.acceptanceProofAttempt,
681
+ acceptanceProof: evidence.acceptanceProof,
682
+ reworkAttempts,
606
683
  });
607
- throw new ChildExecutionBlockedError(['Fresh-Context Review blocked publication', ...freshContextReview.findings].join('; '), durableRunSummary, freshContextReview, publishability.acceptanceProofAttempt);
684
+ throw new ChildExecutionBlockedError(evidence.blockers.join('; '), durableRunSummary, freshContextReview, evidence.acceptanceProof, reworkAttempts);
608
685
  }
686
+ const evidence = buildReviewReadyHandoffEvidence({
687
+ publishability,
688
+ freshContextReview,
689
+ nextAction: 'Parent issue-tree integration should merge this child branch.',
690
+ });
609
691
  const durableRunSummary = await writeDurableRunSummary({
610
692
  targetRoot: input.targetRoot,
611
693
  config: input.config,
612
694
  issueNumber: childIssueNumber,
613
695
  sessionId,
614
- outcome: 'review-ready',
615
- changedFiles: publishability.changedFiles,
616
- validation: publishability.validation,
617
- blockers: [],
618
- skippedChecks: publishability.skippedChecks,
619
- residualRisks: [...publishability.residualRisks, ...(freshContextReview?.residualRisks ?? [])],
620
- suggestionEvidence: freshContextReview?.findings,
621
- nextAction: 'Parent issue-tree integration should merge this child branch.',
696
+ outcome: evidence.outcome,
697
+ changedFiles: evidence.changedFiles,
698
+ validation: evidence.validation,
699
+ blockers: evidence.blockers,
700
+ skippedChecks: evidence.skippedChecks,
701
+ residualRisks: evidence.residualRisks,
702
+ suggestionEvidence: evidence.suggestionEvidence,
703
+ nextAction: evidence.nextAction,
622
704
  logPath,
623
705
  reportPath,
624
- acceptanceProof: publishability.acceptanceProofAttempt,
706
+ acceptanceProof: evidence.acceptanceProof,
707
+ reworkAttempts,
625
708
  });
626
709
  return {
627
710
  child: input.child,
@@ -635,7 +718,7 @@ async function executeChild(input) {
635
718
  artifacts: publishability.artifacts,
636
719
  commits: publishability.commits,
637
720
  skippedChecks: publishability.skippedChecks,
638
- residualRisks: [...publishability.residualRisks, ...(freshContextReview?.residualRisks ?? [])],
721
+ residualRisks: evidence.residualRisks,
639
722
  reviewHandoff: publishability.report.reviewHandoff,
640
723
  freshContextReview,
641
724
  durableRunSummary,
@@ -656,6 +739,7 @@ async function blockFailedBatch(issueAdapter, config, parentIssueNumber, failure
656
739
  details: ['Worktree preserved for maintainer inspection.'],
657
740
  freshContextReview: failure.freshContextReview,
658
741
  durableRunSummary: failure.durableRunSummary,
742
+ reworkAttempts: failure.reworkAttempts,
659
743
  acceptanceProof: failure.acceptanceProof,
660
744
  }));
661
745
  }