@cat-factory/orchestration 0.140.1 → 0.142.0

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 (86) hide show
  1. package/dist/container/dependencies.d.ts +8 -1
  2. package/dist/container/dependencies.d.ts.map +1 -1
  3. package/dist/container/engine-collaborators.d.ts +4 -4
  4. package/dist/container/engine-dependent-modules.d.ts +8 -1
  5. package/dist/container/engine-dependent-modules.d.ts.map +1 -1
  6. package/dist/container/engine-dependent-modules.js +9 -2
  7. package/dist/container/engine-dependent-modules.js.map +1 -1
  8. package/dist/container/module-shapes.d.ts +127 -0
  9. package/dist/container/module-shapes.d.ts.map +1 -0
  10. package/dist/container/module-shapes.js +2 -0
  11. package/dist/container/module-shapes.js.map +1 -0
  12. package/dist/container/modules.d.ts +16 -2
  13. package/dist/container/modules.d.ts.map +1 -1
  14. package/dist/container/modules.js +32 -1
  15. package/dist/container/modules.js.map +1 -1
  16. package/dist/container.d.ts +5 -118
  17. package/dist/container.d.ts.map +1 -1
  18. package/dist/container.js +8 -21
  19. package/dist/container.js.map +1 -1
  20. package/dist/index.d.ts +2 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/modules/execution/ExecutionService.d.ts +22 -30
  25. package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
  26. package/dist/modules/execution/ExecutionService.js +53 -54
  27. package/dist/modules/execution/ExecutionService.js.map +1 -1
  28. package/dist/modules/execution/ExecutionServiceDependencies.d.ts +9 -0
  29. package/dist/modules/execution/ExecutionServiceDependencies.d.ts.map +1 -1
  30. package/dist/modules/execution/MergeResolver.d.ts +18 -1
  31. package/dist/modules/execution/MergeResolver.d.ts.map +1 -1
  32. package/dist/modules/execution/MergeResolver.js +70 -17
  33. package/dist/modules/execution/MergeResolver.js.map +1 -1
  34. package/dist/modules/execution/ReviewGateController.d.ts +43 -1
  35. package/dist/modules/execution/ReviewGateController.d.ts.map +1 -1
  36. package/dist/modules/execution/ReviewGateController.js +55 -4
  37. package/dist/modules/execution/ReviewGateController.js.map +1 -1
  38. package/dist/modules/execution/RunMergePolicy.d.ts +59 -0
  39. package/dist/modules/execution/RunMergePolicy.d.ts.map +1 -0
  40. package/dist/modules/execution/RunMergePolicy.js +85 -0
  41. package/dist/modules/execution/RunMergePolicy.js.map +1 -0
  42. package/dist/modules/execution/RunStateMachine.d.ts +9 -0
  43. package/dist/modules/execution/RunStateMachine.d.ts.map +1 -1
  44. package/dist/modules/execution/RunStateMachine.js +11 -0
  45. package/dist/modules/execution/RunStateMachine.js.map +1 -1
  46. package/dist/modules/execution/gate-window-controllers.d.ts +4 -0
  47. package/dist/modules/execution/gate-window-controllers.d.ts.map +1 -1
  48. package/dist/modules/execution/gate-window-controllers.js +3 -1
  49. package/dist/modules/execution/gate-window-controllers.js.map +1 -1
  50. package/dist/modules/execution/policy-types.d.ts +37 -0
  51. package/dist/modules/execution/policy-types.d.ts.map +1 -0
  52. package/dist/modules/execution/policy-types.js +2 -0
  53. package/dist/modules/execution/policy-types.js.map +1 -0
  54. package/dist/modules/execution/prReport.logic.d.ts.map +1 -1
  55. package/dist/modules/execution/prReport.logic.js +22 -21
  56. package/dist/modules/execution/prReport.logic.js.map +1 -1
  57. package/dist/modules/execution/review-kinds.d.ts.map +1 -1
  58. package/dist/modules/execution/review-kinds.js +4 -0
  59. package/dist/modules/execution/review-kinds.js.map +1 -1
  60. package/dist/modules/execution/reviewQuestionWriteback.logic.d.ts +30 -0
  61. package/dist/modules/execution/reviewQuestionWriteback.logic.d.ts.map +1 -0
  62. package/dist/modules/execution/reviewQuestionWriteback.logic.js +50 -0
  63. package/dist/modules/execution/reviewQuestionWriteback.logic.js.map +1 -0
  64. package/dist/modules/execution/run-context-admission.d.ts +25 -0
  65. package/dist/modules/execution/run-context-admission.d.ts.map +1 -0
  66. package/dist/modules/execution/run-context-admission.js +54 -0
  67. package/dist/modules/execution/run-context-admission.js.map +1 -0
  68. package/dist/modules/merge/MergeTrackRecordService.d.ts +133 -0
  69. package/dist/modules/merge/MergeTrackRecordService.d.ts.map +1 -0
  70. package/dist/modules/merge/MergeTrackRecordService.js +191 -0
  71. package/dist/modules/merge/MergeTrackRecordService.js.map +1 -0
  72. package/dist/modules/merge/RiskPolicyService.d.ts.map +1 -1
  73. package/dist/modules/merge/RiskPolicyService.js +5 -0
  74. package/dist/modules/merge/RiskPolicyService.js.map +1 -1
  75. package/dist/modules/merge/externalMergeObserver.d.ts +27 -0
  76. package/dist/modules/merge/externalMergeObserver.d.ts.map +1 -0
  77. package/dist/modules/merge/externalMergeObserver.js +40 -0
  78. package/dist/modules/merge/externalMergeObserver.js.map +1 -0
  79. package/dist/modules/recurring/TrackerSettingsService.d.ts.map +1 -1
  80. package/dist/modules/recurring/TrackerSettingsService.js +4 -0
  81. package/dist/modules/recurring/TrackerSettingsService.js.map +1 -1
  82. package/package.json +11 -11
  83. package/dist/modules/execution/prReportText.logic.d.ts +0 -46
  84. package/dist/modules/execution/prReportText.logic.d.ts.map +0 -1
  85. package/dist/modules/execution/prReportText.logic.js +0 -188
  86. package/dist/modules/execution/prReportText.logic.js.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import { parseMergeAssessment } from '@cat-factory/contracts';
2
+ import { resolveMergeClassRule } from '@cat-factory/kernel';
2
3
  /** Format a 0..1 score as a rounded percentage for notification copy. */
3
4
  function pct(score) {
4
5
  return `${Math.round(score * 100)}%`;
@@ -51,24 +52,55 @@ export class MergeResolver {
51
52
  assessment = null;
52
53
  }
53
54
  const preset = await this.deps.resolveRiskPolicy(workspaceId, block);
55
+ // Classify the PR BEFORE deciding: the preset's per-class rule can short-circuit the score
56
+ // comparison entirely. One VCS call, swallowed on any failure into `unknown` — which no rule
57
+ // matches — so a classification fault can neither widen nor tighten the policy, and can
58
+ // never fail the merge. The result is threaded into the record write so we never pay twice.
59
+ const classification = (await this.deps.mergeTrackRecord?.classify(workspaceId, block)) ?? {
60
+ changeClass: 'unknown',
61
+ fileCount: 0,
62
+ };
63
+ const classRule = resolveMergeClassRule(preset.classRules, classification.changeClass);
54
64
  const thresholds = {
55
65
  presetName: preset.name,
56
66
  maxComplexity: preset.maxComplexity,
57
67
  maxRisk: preset.maxRisk,
58
68
  maxImpact: preset.maxImpact,
59
69
  autoMergeEnabled: preset.autoMergeEnabled,
70
+ ...(classRule !== 'thresholds' ? { classRule } : {}),
71
+ };
72
+ const base = {
73
+ assessment: assessment ?? undefined,
74
+ thresholds,
75
+ ...(classification.changeClass !== 'unknown'
76
+ ? { changeClass: classification.changeClass }
77
+ : {}),
60
78
  };
61
- const base = { assessment: assessment ?? undefined, thresholds };
62
79
  // A credible assessment explains itself: a merger that actually examined the diff always
63
80
  // returns a rationale, while a merger that failed to inspect the change (the bug that
64
81
  // auto-merged on a bogus 0/0/0) returns bare, unexplained scores. The non-empty rationale
65
82
  // check is the engine-side backstop so those can never silently merge.
66
83
  const credible = assessment !== null && assessment.rationale.trim() !== '';
67
84
  const exceededAxes = assessment ? exceededAxesOf(assessment, preset) : [];
68
- // Auto-merge only when the preset ALLOWS it AND the assessment is a CREDIBLE
69
- // within-threshold one. A "manual review only" preset (`autoMergeEnabled: false`)
70
- // short-circuits, so every PR is routed to human review regardless of scores.
71
- const within = preset.autoMergeEnabled && credible && exceededAxes.length === 0;
85
+ // Auto-merge precedence, most-significant first:
86
+ // 1. `autoMergeEnabled: false` — the master switch. "Manual review only" stays manual and
87
+ // a class rule can NEVER override it.
88
+ // 2. The class rule: `always` merges regardless of the scores (and regardless of the
89
+ // rationale backstop — an explicit operator policy keyed on a DETERMINISTIC backend
90
+ // classification outranks the agent's self-report); `never` always routes to a human.
91
+ // 3. The existing credibility + threshold comparison.
92
+ const within = preset.autoMergeEnabled &&
93
+ (classRule === 'always' || (classRule !== 'never' && credible && exceededAxes.length === 0));
94
+ const mergeReason = classRule === 'always' ? 'class_auto_merge' : 'within_thresholds';
95
+ const record = (decision) => this.deps.mergeTrackRecord?.recordDecision(workspaceId, {
96
+ block,
97
+ executionId: instance.id,
98
+ decision,
99
+ assessment,
100
+ riskPolicyId: preset.id ?? null,
101
+ riskPolicyName: preset.name,
102
+ classification,
103
+ });
72
104
  if (within) {
73
105
  try {
74
106
  const res = await this.deps.finalizeMerge(workspaceId, block.id);
@@ -76,41 +108,59 @@ export class MergeResolver {
76
108
  // A multi-repo task merged some PRs but hit a failure part-way; `finalizeMerge`
77
109
  // already left the block `blocked` and raised the enumerated partial-merge card, so
78
110
  // the resolver only records the decision (no second review notification).
111
+ await record('pending_review');
79
112
  return { ...base, outcome: 'awaiting_review', reason: 'merge_partial', exceededAxes: [] };
80
113
  }
81
- return { ...base, outcome: 'auto_merged', reason: 'within_thresholds', exceededAxes: [] };
114
+ await record('auto_merged');
115
+ return { ...base, outcome: 'auto_merged', reason: mergeReason, exceededAxes: [] };
82
116
  }
83
117
  catch {
84
118
  // Auto-merge failed outright (e.g. branch protection / conflict, or the first PR of a
85
119
  // multi-repo task): fall through to a review notification so a human can sort it out.
86
- await this.raiseReviewAndBlock(workspaceId, instance, block, assessment);
120
+ const pending = await record('pending_review');
121
+ await this.raiseReviewAndBlock(workspaceId, instance, block, assessment, {
122
+ changeClass: classification.changeClass,
123
+ recordId: pending?.id,
124
+ });
87
125
  return { ...base, outcome: 'awaiting_review', reason: 'merge_failed', exceededAxes };
88
126
  }
89
127
  }
90
- await this.raiseReviewAndBlock(workspaceId, instance, block, assessment);
128
+ const pending = await record('pending_review');
129
+ await this.raiseReviewAndBlock(workspaceId, instance, block, assessment, {
130
+ changeClass: classification.changeClass,
131
+ recordId: pending?.id,
132
+ });
91
133
  // Classify WHY review is needed, most-specific first, so the banner is precise. A
92
134
  // missing/unparseable assessment (`no_assessment`) is distinct from one that returned
93
135
  // scores but no rationale (`no_rationale`): the latter DID produce visible scores, so
94
- // the banner must not claim there was no assessment at all.
136
+ // the banner must not claim there was no assessment at all. The class rule sits just under
137
+ // the master switch, matching the precedence the auto-merge branch above applies.
95
138
  const reason = !preset.autoMergeEnabled
96
139
  ? 'auto_merge_disabled'
97
- : assessment === null
98
- ? 'no_assessment'
99
- : !credible
100
- ? 'no_rationale'
101
- : 'exceeded_thresholds';
140
+ : classRule === 'never'
141
+ ? 'class_requires_review'
142
+ : assessment === null
143
+ ? 'no_assessment'
144
+ : !credible
145
+ ? 'no_rationale'
146
+ : 'exceeded_thresholds';
102
147
  return { ...base, outcome: 'awaiting_review', reason, exceededAxes };
103
148
  }
149
+ /** The track-record context a review card carries so the human can tag in the same tap. */
150
+ trackContext = (ctx) => ({
151
+ ...(ctx.changeClass !== 'unknown' ? { changeClass: ctx.changeClass } : {}),
152
+ ...(ctx.recordId ? { mergeTrackRecordId: ctx.recordId } : {}),
153
+ });
104
154
  /** Flip the block to `pr_ready` and raise the merge-review notification. */
105
- async raiseReviewAndBlock(workspaceId, instance, block, assessment) {
155
+ async raiseReviewAndBlock(workspaceId, instance, block, assessment, track) {
106
156
  await this.deps.blockRepository.update(workspaceId, block.id, {
107
157
  status: 'pr_ready',
108
158
  progress: 1,
109
159
  });
110
- await this.raiseMergeReview(workspaceId, instance, block, assessment);
160
+ await this.raiseMergeReview(workspaceId, instance, block, assessment, track);
111
161
  }
112
162
  /** Raise a `merge_review` notification carrying the agent's assessment + the PR. */
113
- async raiseMergeReview(workspaceId, instance, block, assessment) {
163
+ async raiseMergeReview(workspaceId, instance, block, assessment, track) {
114
164
  if (!this.deps.notificationService)
115
165
  return;
116
166
  const body = assessment
@@ -128,6 +178,9 @@ export class MergeResolver {
128
178
  ...(assessment ? { assessment } : {}),
129
179
  ...(block.pullRequest?.url ? { prUrl: block.pullRequest.url } : {}),
130
180
  pipelineName: instance.pipelineName,
181
+ // The change class + the record id, so the card can show what kind of change this is
182
+ // (with that class's history) and confirm-plus-tag it in one tap.
183
+ ...this.trackContext(track),
131
184
  },
132
185
  });
133
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MergeResolver.js","sourceRoot":"","sources":["../../../src/modules/execution/MergeResolver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAG7D,yEAAyE;AACzE,SAAS,GAAG,CAAC,KAAa;IACxB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAA;AACtC,CAAC;AAaD,wFAAwF;AACxF,SAAS,cAAc,CAAC,UAA2B,EAAE,MAAuB;IAC1E,MAAM,IAAI,GAAgB,EAAE,CAAA;IAC5B,IAAI,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACzE,IAAI,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvD,IAAI,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC7D,OAAO,IAAI,CAAA;AACb,CAAC;AA4BD;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IACK,IAAI;IAAjC,YAA6B,IAAuB;oBAAvB,IAAI;IAAsB,CAAC;IAExD;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,QAA2B,EAC3B,aAAsB;QAEtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QAChF,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,gFAAgF;QAChF,iFAAiF;QACjF,gFAAgF;QAChF,uCAAuC;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAExC,IAAI,UAAU,GAA2B,IAAI,CAAA;QAC7C,IAAI,CAAC;YACH,UAAU,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAA;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QACpE,MAAM,UAAU,GAAgC;YAC9C,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;SAC1C,CAAA;QACD,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU,EAAW,CAAA;QACzE,yFAAyF;QACzF,sFAAsF;QACtF,0FAA0F;QAC1F,uEAAuE;QACvE,MAAM,QAAQ,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;QAC1E,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAEzE,6EAA6E;QAC7E,kFAAkF;QAClF,8EAA8E;QAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,IAAI,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAA;QAE/E,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;gBAChE,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC3B,gFAAgF;oBAChF,oFAAoF;oBACpF,0EAA0E;oBAC1E,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;gBAC3F,CAAC;gBACD,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;YAC3F,CAAC;YAAC,MAAM,CAAC;gBACP,sFAAsF;gBACtF,sFAAsF;gBACtF,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;gBACxE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,CAAA;YACtF,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;QACxE,kFAAkF;QAClF,sFAAsF;QACtF,sFAAsF;QACtF,4DAA4D;QAC5D,MAAM,MAAM,GAA4B,CAAC,MAAM,CAAC,gBAAgB;YAC9D,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,UAAU,KAAK,IAAI;gBACnB,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,CAAC,QAAQ;oBACT,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,qBAAqB,CAAA;QAC7B,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA;IACtE,CAAC;IAED,4EAA4E;IACpE,KAAK,CAAC,mBAAmB,CAC/B,WAAmB,EACnB,QAA2B,EAC3B,KAAY,EACZ,UAAkC;QAElC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE;YAC5D,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;IACvE,CAAC;IAED,oFAAoF;IAC5E,KAAK,CAAC,gBAAgB,CAC5B,WAAmB,EACnB,QAA2B,EAC3B,KAAY,EACZ,UAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAM;QAC1C,MAAM,IAAI,GAAG,UAAU;YACrB,CAAC,CAAC,qEAAqE;gBACrE,eAAe,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI;gBAC3E,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,SAAS,EAAE;YAC9D,CAAC,CAAC,yFAAyF,CAAA;QAC7F,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE;YACrD,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,WAAW,EAAE,QAAQ,CAAC,EAAE;YACxB,KAAK,EAAE,kBAAkB,KAAK,CAAC,KAAK,GAAG;YACvC,IAAI;YACJ,OAAO,EAAE;gBACP,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC;SACF,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"MergeResolver.js","sourceRoot":"","sources":["../../../src/modules/execution/MergeResolver.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import type { Block, BlockRepository, ExecutionInstance, ExecutionRepository, PipelineStep, RequirementConcernLevel, RequestRecommendationItem, ResolveRequirementsExceededChoice, WorkRunner } from '@cat-factory/kernel';
1
+ import type { Block, BlockRepository, ExecutionInstance, ExecutionRepository, IssueWritebackProvider, PipelineStep, RequirementConcernLevel, RequestRecommendationItem, ResolveRequirementsExceededChoice, WorkRunner } from '@cat-factory/kernel';
2
2
  import type { ReviewCommon } from '../review/IterativeReviewService.js';
3
3
  import type { AdvanceResult } from './advance.js';
4
+ import type { PrReportLogger } from './PrVerificationReportController.js';
4
5
  import type { RunStateMachine } from './RunStateMachine.js';
5
6
  import type { StepGraph } from './StepGraph.js';
6
7
  /**
@@ -68,6 +69,16 @@ export interface ReviewKind<TReview extends ReviewCommon> {
68
69
  autoRecommend?(workspaceId: string, blockId: string): Promise<void>;
69
70
  /** Push a live review-changed event so an open window/inspector reflects the new status. */
70
71
  emit(workspaceId: string, review: TReview): Promise<void>;
72
+ /**
73
+ * Whether a HEADLESS park of this subject echoes its open findings onto the block's linked
74
+ * tracker issue(s) — the requirements loop only (see
75
+ * `docs/initiatives/headless-clarification-loop.md`).
76
+ *
77
+ * The clarity gate deliberately does NOT opt in: it already echoes its questions from its
78
+ * own `review()` closure as INTAKE semantics (every run, UI or headless, ungated by the
79
+ * workspace writeback settings), and opting in here would post the same questions twice.
80
+ */
81
+ readonly questionsOnPark?: boolean;
71
82
  }
72
83
  /**
73
84
  * What the review gates need beyond the shared run state-machine spine. The spine primitives
@@ -84,6 +95,14 @@ export interface ReviewGateControllerDeps {
84
95
  stateMachine: RunStateMachine;
85
96
  /** The pure step mutators (start/finish a step). */
86
97
  stepGraph: StepGraph;
98
+ /**
99
+ * Issue-tracker writeback, used here for ONE thing: echoing a parked HEADLESS review's open
100
+ * findings onto the block's linked issue(s) so a caller with no in-app surface learns what
101
+ * the run is waiting for. Absent (tests, no tracker) → parks behave exactly as before.
102
+ */
103
+ issueWriteback?: IssueWritebackProvider;
104
+ /** Structured logger for the best-effort writeback above. Absent → failures are silent. */
105
+ logger?: PrReportLogger;
87
106
  resolveRiskPolicy: (workspaceId: string, block: Block) => Promise<ReviewPreset>;
88
107
  dispatchIterationCap: (workspaceId: string, blockId: string, choice: ResolveRequirementsExceededChoice, handlers: {
89
108
  extraRound: () => Promise<unknown>;
@@ -115,6 +134,29 @@ export declare class ReviewGateController {
115
134
  * the durable driver instead of in the HTTP request the user is no longer waiting on.
116
135
  */
117
136
  evaluate<TReview extends ReviewCommon>(kind: ReviewKind<TReview>, workspaceId: string, instance: ExecutionInstance, step: PipelineStep, block: Block, isFinalStep: boolean): Promise<AdvanceResult>;
137
+ /**
138
+ * Park a review gate on its human decision, then best-effort echo the still-open findings
139
+ * onto the block's linked tracker issue(s) when the run entered HEADLESSLY.
140
+ *
141
+ * Every park in {@link evaluate} funnels through here so the echo cannot be forgotten by a
142
+ * future branch, and so the SPA path is provably untouched: {@link shouldPostReviewQuestions}
143
+ * refuses anything whose `intakeOrigin` is not `public-api`.
144
+ *
145
+ * **The park is committed FIRST, and that ordering is load-bearing.** A run that failed to
146
+ * park is a run that answers nobody, so it must never queue behind an outbound HTTP call to
147
+ * a third party that may be slow, rate-limiting, or down. With the park already durable, the
148
+ * worst a wedged tracker can do is stall this driver step — the run is answerable over the
149
+ * API the moment the park lands, and the questions arrive when the post does. The echo's own
150
+ * failure is logged rather than swallowed; either way the park stays discoverable in-app via
151
+ * the `requirement_review` card the reviewer pass already raised.
152
+ */
153
+ private park;
154
+ /**
155
+ * The headless question echo. Split from {@link park} so the park's own control flow stays a
156
+ * single line and this stays entirely best-effort: nothing it does can change the parked
157
+ * result it runs behind.
158
+ */
159
+ private echoQuestionsToTracker;
118
160
  /**
119
161
  * Fold the human's settled answers into a standardized document and re-review it (one
120
162
  * iteration of the loop), emitting the live review-changed event after each phase so an
@@ -1 +1 @@
1
- {"version":3,"file":"ReviewGateController.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ReviewGateController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReviewGateController.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ReviewGateController.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { assertFound, ConflictError, ValidationError } from '@cat-factory/kernel';
2
2
  import { hasNotesToIncorporate } from '../requirements/requirements.logic.js';
3
+ import { buildReviewQuestionPost, shouldPostReviewQuestions, } from './reviewQuestionWriteback.logic.js';
3
4
  /**
4
5
  * Drives the two iterative review gates — `requirements-review` and `clarity-review` — which
5
6
  * share the SAME control flow: an inline reviewer LLM raises findings, the run parks on a
@@ -41,8 +42,8 @@ export class ReviewGateController {
41
42
  const pendingRec = step.pendingRecommendation;
42
43
  if (pendingRec && kind.fillRecommendations) {
43
44
  step.pendingRecommendation = null;
44
- await kind.fillRecommendations(workspaceId, block.id);
45
- return this.deps.stateMachine.parkStepOnDecision(workspaceId, instance, step);
45
+ const filled = await kind.fillRecommendations(workspaceId, block.id);
46
+ return this.park(kind, workspaceId, instance, step, block, filled);
46
47
  }
47
48
  // Re-entry: the human answered the findings and asked to incorporate. Do the (slow)
48
49
  // LLM work here in the durable driver — fold the answers into a document, then
@@ -59,7 +60,7 @@ export class ReviewGateController {
59
60
  // At the cap, raise a notification so the three-choice decision is discoverable.
60
61
  if (review.status === 'exceeded')
61
62
  await this.deps.stateMachine.raiseDecisionRequired(workspaceId, instance);
62
- return this.deps.stateMachine.parkStepOnDecision(workspaceId, instance, step);
63
+ return this.park(kind, workspaceId, instance, step, block, review);
63
64
  }
64
65
  // Fresh entry: run the initial reviewer pass with the task's preset knobs (shared with
65
66
  // the off-path inspector surface). Auto-pass (status `incorporated`) → advance; the
@@ -78,7 +79,57 @@ export class ReviewGateController {
78
79
  }
79
80
  if (review.status === 'exceeded')
80
81
  await this.deps.stateMachine.raiseDecisionRequired(workspaceId, instance);
81
- return this.deps.stateMachine.parkStepOnDecision(workspaceId, instance, step);
82
+ return this.park(kind, workspaceId, instance, step, block, review);
83
+ }
84
+ /**
85
+ * Park a review gate on its human decision, then best-effort echo the still-open findings
86
+ * onto the block's linked tracker issue(s) when the run entered HEADLESSLY.
87
+ *
88
+ * Every park in {@link evaluate} funnels through here so the echo cannot be forgotten by a
89
+ * future branch, and so the SPA path is provably untouched: {@link shouldPostReviewQuestions}
90
+ * refuses anything whose `intakeOrigin` is not `public-api`.
91
+ *
92
+ * **The park is committed FIRST, and that ordering is load-bearing.** A run that failed to
93
+ * park is a run that answers nobody, so it must never queue behind an outbound HTTP call to
94
+ * a third party that may be slow, rate-limiting, or down. With the park already durable, the
95
+ * worst a wedged tracker can do is stall this driver step — the run is answerable over the
96
+ * API the moment the park lands, and the questions arrive when the post does. The echo's own
97
+ * failure is logged rather than swallowed; either way the park stays discoverable in-app via
98
+ * the `requirement_review` card the reviewer pass already raised.
99
+ */
100
+ async park(kind, workspaceId, instance, step, block, review) {
101
+ const parked = await this.deps.stateMachine.parkStepOnDecision(workspaceId, instance, step);
102
+ await this.echoQuestionsToTracker(kind, workspaceId, instance, block, review);
103
+ return parked;
104
+ }
105
+ /**
106
+ * The headless question echo. Split from {@link park} so the park's own control flow stays a
107
+ * single line and this stays entirely best-effort: nothing it does can change the parked
108
+ * result it runs behind.
109
+ */
110
+ async echoQuestionsToTracker(kind, workspaceId, instance, block, review) {
111
+ const writeback = this.deps.issueWriteback;
112
+ // `intakeOrigin` first: it is a free in-memory check and the scope boundary of the whole
113
+ // feature, so a UI-started run pays nothing at all for the re-read below.
114
+ if (!writeback || !kind.questionsOnPark || instance.intakeOrigin !== 'public-api')
115
+ return;
116
+ // Re-read the review: an auto-recommendation pass may have answered findings since `review`
117
+ // was taken, and the echo must ask only what is still genuinely open. Deliberately
118
+ // UNCONDITIONAL rather than flagged from the one call site that mutates today — a future
119
+ // branch that adds another mutation would silently start asking already-answered questions,
120
+ // and the cost is one indexed read on a path that is about to wait on a human for hours.
121
+ const fresh = (await kind.getForBlock(workspaceId, block.id).catch(() => null)) ?? review;
122
+ if (!shouldPostReviewQuestions(instance, fresh))
123
+ return;
124
+ try {
125
+ const outcome = await writeback.postReviewQuestions(workspaceId, block, buildReviewQuestionPost(instance, fresh));
126
+ if (outcome.failed > 0) {
127
+ this.deps.logger?.warn({ workspaceId, runId: instance.id, reviewId: fresh.id, ...outcome }, 'review question writeback failed for some linked issues');
128
+ }
129
+ }
130
+ catch (e) {
131
+ this.deps.logger?.warn({ workspaceId, runId: instance.id, reviewId: fresh.id, err: String(e) }, 'review question writeback threw');
132
+ }
82
133
  }
83
134
  /**
84
135
  * Fold the human's settled answers into a standardized document and re-review it (one
@@ -1 +1 @@
1
- {"version":3,"file":"ReviewGateController.js","sourceRoot":"","sources":["../../../src/modules/execution/ReviewGateController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReviewGateController.js","sourceRoot":"","sources":["../../../src/modules/execution/ReviewGateController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { Block, GroupCacheHandle, ReviewEffort, RiskPolicyCacheValue, RiskPolicyRepository } from '@cat-factory/kernel';
2
+ import type { MergeTrackRecordService } from '../merge/MergeTrackRecordService.js';
3
+ import type { ResolvedRunRiskPolicy } from './policy-types.js';
4
+ /** The collaborators the merge-policy layer needs; nothing else on the engine. */
5
+ export interface RunMergePolicyDeps {
6
+ /**
7
+ * Optional: resolves a task's merge threshold preset (auto-merge ceilings, the per-class
8
+ * rules, and the CI-fixer attempt budget). Absent → the built-in {@link DEFAULT_RISK_POLICY}.
9
+ */
10
+ riskPolicyRepository?: RiskPolicyRepository;
11
+ /**
12
+ * Optional: the `AppCaches.riskPolicy` slice — read-through for {@link RunMergePolicy.resolve}
13
+ * so the slow-moving merge-preset row isn't re-fetched on every gate evaluation. Absent →
14
+ * every resolve hits the repository. Invalidated by `RiskPolicyService` on every preset write.
15
+ */
16
+ riskPolicyCache?: GroupCacheHandle<RiskPolicyCacheValue>;
17
+ /**
18
+ * Optional: the merge track record (classification + the persisted evidence). Absent ⇒ the
19
+ * recording methods below are no-ops and the merge path behaves exactly as it did before.
20
+ */
21
+ mergeTrackRecord?: MergeTrackRecordService;
22
+ }
23
+ /**
24
+ * The task's effective MERGE POLICY plus the EVIDENCE behind it, extracted out of
25
+ * `ExecutionService` as a cohesive collaborator (the `RunDispatcher` controller extractions are
26
+ * the model): resolving which merge-threshold preset governs a run, and settling that run's merge
27
+ * track record when a human merges or declines.
28
+ *
29
+ * The two belong together — the preset is the policy, the track record is what the policy is
30
+ * eventually judged against — and neither needs anything else the engine owns, so keeping them
31
+ * here stops the engine god-file re-growing.
32
+ *
33
+ * Every recording method is a **best-effort side channel of the merge path**: it swallows its own
34
+ * failures, because the merge has already landed and must never be reported as failed on account
35
+ * of bookkeeping.
36
+ */
37
+ export declare class RunMergePolicy {
38
+ private readonly deps;
39
+ constructor(deps: RunMergePolicyDeps);
40
+ /**
41
+ * Resolve the merge threshold preset that governs a task: its explicitly-picked preset, else
42
+ * the workspace default, else the built-in {@link DEFAULT_RISK_POLICY}. Returns the thresholds
43
+ * the engine compares against, the per-class rules, and the CI attempt budget.
44
+ */
45
+ resolve(workspaceId: string, block: Block): Promise<ResolvedRunRiskPolicy>;
46
+ /**
47
+ * Settle the block's latest merge track record as `human_merged`, tagging the reviewer effort
48
+ * when one was supplied. Resolved by BLOCK (not by run) because the merge controls that reach
49
+ * here are block-scoped — a single point-read, never inside a loop.
50
+ */
51
+ recordHumanMerge(workspaceId: string, blockId: string, reviewEffort?: ReviewEffort | null): Promise<void>;
52
+ /**
53
+ * Record that a human DECLINED to merge — they dismissed the review card rather than acting on
54
+ * it. The counterpart of {@link recordHumanMerge}: without it a class's rollup would leave
55
+ * rejections as forever-`pending_review` and overstate the auto-merge-share denominator.
56
+ */
57
+ recordRejection(workspaceId: string, executionId: string): Promise<void>;
58
+ }
59
+ //# sourceMappingURL=RunMergePolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunMergePolicy.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/RunMergePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,YAAY,EAEZ,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE9D,kFAAkF;AAClF,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;;;OAIG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;IACxD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;CAC3C;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,kBAAkB,EAAI;IAEzD;;;;OAIG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyB/E;IAED;;;;OAIG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,GACjC,OAAO,CAAC,IAAI,CAAC,CAUf;IAED;;;;OAIG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E;CACF"}
@@ -0,0 +1,85 @@
1
+ import { DEFAULT_RISK_POLICY } from '@cat-factory/kernel';
2
+ /**
3
+ * The task's effective MERGE POLICY plus the EVIDENCE behind it, extracted out of
4
+ * `ExecutionService` as a cohesive collaborator (the `RunDispatcher` controller extractions are
5
+ * the model): resolving which merge-threshold preset governs a run, and settling that run's merge
6
+ * track record when a human merges or declines.
7
+ *
8
+ * The two belong together — the preset is the policy, the track record is what the policy is
9
+ * eventually judged against — and neither needs anything else the engine owns, so keeping them
10
+ * here stops the engine god-file re-growing.
11
+ *
12
+ * Every recording method is a **best-effort side channel of the merge path**: it swallows its own
13
+ * failures, because the merge has already landed and must never be reported as failed on account
14
+ * of bookkeeping.
15
+ */
16
+ export class RunMergePolicy {
17
+ deps;
18
+ constructor(deps) {
19
+ this.deps = deps;
20
+ }
21
+ /**
22
+ * Resolve the merge threshold preset that governs a task: its explicitly-picked preset, else
23
+ * the workspace default, else the built-in {@link DEFAULT_RISK_POLICY}. Returns the thresholds
24
+ * the engine compares against, the per-class rules, and the CI attempt budget.
25
+ */
26
+ async resolve(workspaceId, block) {
27
+ const repo = this.deps.riskPolicyRepository;
28
+ if (repo) {
29
+ // Read each preset through the cache slice when wired: the row is slow-moving admin config
30
+ // re-read on every gate evaluation. Group by workspace (one write drops the whole library),
31
+ // keyed per resolved id so a picked preset and the default cache separately. A null (deleted
32
+ // id / unseeded default) caches as a value and still falls through, exactly as an uncached
33
+ // read would (the `RiskPolicyCacheValue` wrapper).
34
+ const read = async (key, load) => {
35
+ const cache = this.deps.riskPolicyCache;
36
+ if (!cache)
37
+ return load();
38
+ return (await cache.get(key, workspaceId, async () => ({ policy: await load() }))).policy;
39
+ };
40
+ if (block.riskPolicyId) {
41
+ const id = block.riskPolicyId;
42
+ const picked = await read(`picked:${id}`, () => repo.get(workspaceId, id));
43
+ if (picked)
44
+ return picked;
45
+ }
46
+ const fallback = await read('default', () => repo.getDefault(workspaceId));
47
+ if (fallback)
48
+ return fallback;
49
+ }
50
+ return DEFAULT_RISK_POLICY;
51
+ }
52
+ /**
53
+ * Settle the block's latest merge track record as `human_merged`, tagging the reviewer effort
54
+ * when one was supplied. Resolved by BLOCK (not by run) because the merge controls that reach
55
+ * here are block-scoped — a single point-read, never inside a loop.
56
+ */
57
+ async recordHumanMerge(workspaceId, blockId, reviewEffort) {
58
+ const svc = this.deps.mergeTrackRecord;
59
+ if (!svc)
60
+ return;
61
+ try {
62
+ const record = await svc.getLatestByBlock(workspaceId, blockId);
63
+ if (!record || !record.executionId)
64
+ return;
65
+ await svc.resolveDecision(workspaceId, record.executionId, 'human_merged', reviewEffort);
66
+ }
67
+ catch {
68
+ // Best-effort (see the class doc).
69
+ }
70
+ }
71
+ /**
72
+ * Record that a human DECLINED to merge — they dismissed the review card rather than acting on
73
+ * it. The counterpart of {@link recordHumanMerge}: without it a class's rollup would leave
74
+ * rejections as forever-`pending_review` and overstate the auto-merge-share denominator.
75
+ */
76
+ async recordRejection(workspaceId, executionId) {
77
+ try {
78
+ await this.deps.mergeTrackRecord?.resolveDecision(workspaceId, executionId, 'rejected');
79
+ }
80
+ catch {
81
+ // Best-effort (see the class doc).
82
+ }
83
+ }
84
+ }
85
+ //# sourceMappingURL=RunMergePolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunMergePolicy.js","sourceRoot":"","sources":["../../../src/modules/execution/RunMergePolicy.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAwBzD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAc;IACI,IAAI;IAAjC,YAA6B,IAAwB;oBAAxB,IAAI;IAAuB,CAAC;IAEzD;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,KAAY;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAA;QAC3C,IAAI,IAAI,EAAE,CAAC;YACT,2FAA2F;YAC3F,4FAA4F;YAC5F,6FAA6F;YAC7F,2FAA2F;YAC3F,mDAAmD;YACnD,MAAM,IAAI,GAAG,KAAK,EAChB,GAAW,EACX,IAAsC,EACV,EAAE;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAA;gBACvC,IAAI,CAAC,KAAK;oBAAE,OAAO,IAAI,EAAE,CAAA;gBACzB,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YAC3F,CAAC,CAAA;YACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAA;gBAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC1E,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAA;YAC3B,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;YAC1E,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAA;QAC/B,CAAC;QACD,OAAO,mBAAmB,CAAA;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,OAAe,EACf,YAAkC;QAElC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAA;QACtC,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;YAC/D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,OAAM;YAC1C,MAAM,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAAA;QAC1F,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,WAAmB,EAAE,WAAmB;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  import type { AgentExecutor, AgentFailureKind, BlockRepository, Clock, ExecutionEventPublisher, ExecutionInstance, ExecutionRepository, IdGenerator, PipelineStep, SubscriptionActivationRepository, WorkRunner } from '@cat-factory/kernel';
2
2
  import { type InitiativeRunHarvest } from '../initiative/initiative.logic.js';
3
+ import type { MergeTrackRecordService } from '../merge/MergeTrackRecordService.js';
3
4
  import type { NotificationService } from '../notifications/NotificationService.js';
4
5
  import type { LlmObservabilityService } from '../observability/LlmObservabilityService.js';
5
6
  import type { AdvanceResult } from './advance.js';
@@ -23,6 +24,13 @@ export interface RunStateMachineDeps {
23
24
  /** The pure step/cursor mutators ({@link StepGraph}) the transitions build on. */
24
25
  stepGraph: StepGraph;
25
26
  notificationService?: NotificationService;
27
+ /**
28
+ * The merge track record. A no-merger pipeline's `pipeline_complete` card is a MERGE decision
29
+ * point too (confirming it merges the PR), so the class + a `pending_review` record are written
30
+ * here as well — otherwise a whole class of human merges would leave no evidence behind.
31
+ * Best-effort and optional: absent ⇒ the card is raised exactly as before.
32
+ */
33
+ mergeTrackRecord?: MergeTrackRecordService;
26
34
  kaizenScheduler?: KaizenScheduler;
27
35
  subscriptionActivations?: SubscriptionActivationRepository;
28
36
  llmObservability?: LlmObservabilityService;
@@ -59,6 +67,7 @@ export declare class RunStateMachine {
59
67
  private readonly clock;
60
68
  private readonly stepGraph;
61
69
  private readonly notificationService?;
70
+ private readonly mergeTrackRecord?;
62
71
  private readonly kaizenScheduler?;
63
72
  private readonly subscriptionActivations?;
64
73
  private readonly llmObservability?;