@cat-factory/orchestration 0.210.0 → 0.212.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 (40) hide show
  1. package/dist/modules/board/riskPolicySelectionGuard.d.ts.map +1 -1
  2. package/dist/modules/board/riskPolicySelectionGuard.js +2 -0
  3. package/dist/modules/board/riskPolicySelectionGuard.js.map +1 -1
  4. package/dist/modules/execution/AgentContextBuilder.d.ts +32 -28
  5. package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
  6. package/dist/modules/execution/AgentContextBuilder.js +22 -75
  7. package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
  8. package/dist/modules/execution/AgentDispatchController.d.ts +4 -0
  9. package/dist/modules/execution/AgentDispatchController.d.ts.map +1 -1
  10. package/dist/modules/execution/AgentDispatchController.js +14 -2
  11. package/dist/modules/execution/AgentDispatchController.js.map +1 -1
  12. package/dist/modules/execution/MergeResolver.d.ts +8 -1
  13. package/dist/modules/execution/MergeResolver.d.ts.map +1 -1
  14. package/dist/modules/execution/MergeResolver.js +102 -57
  15. package/dist/modules/execution/MergeResolver.js.map +1 -1
  16. package/dist/modules/execution/RunMergePolicy.d.ts +16 -1
  17. package/dist/modules/execution/RunMergePolicy.d.ts.map +1 -1
  18. package/dist/modules/execution/RunMergePolicy.js +21 -0
  19. package/dist/modules/execution/RunMergePolicy.js.map +1 -1
  20. package/dist/modules/execution/StepDecisionController.d.ts +35 -4
  21. package/dist/modules/execution/StepDecisionController.d.ts.map +1 -1
  22. package/dist/modules/execution/StepDecisionController.js +57 -10
  23. package/dist/modules/execution/StepDecisionController.js.map +1 -1
  24. package/dist/modules/execution/builder-step-observations.d.ts +42 -0
  25. package/dist/modules/execution/builder-step-observations.d.ts.map +1 -0
  26. package/dist/modules/execution/builder-step-observations.js +27 -0
  27. package/dist/modules/execution/builder-step-observations.js.map +1 -0
  28. package/dist/modules/execution/builder-validation-context.d.ts +59 -0
  29. package/dist/modules/execution/builder-validation-context.d.ts.map +1 -0
  30. package/dist/modules/execution/builder-validation-context.js +92 -0
  31. package/dist/modules/execution/builder-validation-context.js.map +1 -0
  32. package/dist/modules/execution/policy-types.d.ts +8 -1
  33. package/dist/modules/execution/policy-types.d.ts.map +1 -1
  34. package/dist/modules/execution/prReport.commands.d.ts.map +1 -1
  35. package/dist/modules/execution/prReport.commands.js +41 -4
  36. package/dist/modules/execution/prReport.commands.js.map +1 -1
  37. package/dist/modules/merge/RiskPolicyService.d.ts.map +1 -1
  38. package/dist/modules/merge/RiskPolicyService.js +12 -2
  39. package/dist/modules/merge/RiskPolicyService.js.map +1 -1
  40. package/package.json +11 -11
@@ -1,8 +1,62 @@
1
- import { isDryRun, parseMergeAssessment, resolveRoleScopedMergeClassRule, } from '@cat-factory/contracts';
1
+ import { isDryRun, parseMergeAssessment, resolveRoleScopedMergeClassRule, submissionAllowedForRole, submissionAllowlistForRole, } from '@cat-factory/contracts';
2
2
  /** Format a 0..1 score as a rounded percentage for notification copy. */
3
3
  function pct(score) {
4
4
  return `${Math.round(score * 100)}%`;
5
5
  }
6
+ /**
7
+ * The auto-merge precedence ladder, most-significant first:
8
+ *
9
+ * 1. A DRY RUN merges nothing, whatever else says. It outranks even `autoMergeEnabled` because
10
+ * it is a property of the RUN rather than of the policy: the person who started it was never
11
+ * authorised to land this work, so no preset can consent on their behalf.
12
+ * 2. The initiator's SUBMISSION ALLOWLIST, when their role carries one and this run's class is
13
+ * outside it. Beside `dry_run` and above the master switch for the same reason: it is about
14
+ * WHO started the run. What separates it from a `never` class rule is that it also refuses
15
+ * the MANUAL merge, so it is a bar on landing rather than a demand for review.
16
+ * 3. `autoMergeEnabled: false`, the master switch. "Manual review only" stays manual and a
17
+ * class rule can NEVER override it.
18
+ * 4. The class rule AS NARROWED BY THE INITIATOR'S ROLE: `always` merges regardless of the
19
+ * scores, and regardless of the rationale backstop, because an explicit operator policy
20
+ * keyed on a DETERMINISTIC backend classification outranks the agent's self-report; `never`
21
+ * always routes to a human. A role entry can only push this arm toward `never`.
22
+ * 5. The credibility + threshold comparison.
23
+ *
24
+ * The review reason is derived HERE, in the same order and from the same inputs, because the two
25
+ * used to be written twice and the pair has to agree: a decision that declines to merge on one
26
+ * rung and blames another sends the reader to edit a setting that had no part in the outcome.
27
+ * Every rung is kept apart from its neighbours because each needs a DIFFERENT fix. `dry_run` is
28
+ * fixed by re-running live, `submission_not_allowed` by a teammate on a permitted tier or a wider
29
+ * allowlist, `role_requires_review` by any reviewer, `class_requires_review` by editing the class
30
+ * rule, and `no_rationale` (scores but no explanation) is not `no_assessment` (no scores at all).
31
+ */
32
+ function resolveMergePrecedence(input) {
33
+ const { effectiveRule } = input;
34
+ const merge = !input.dryRun &&
35
+ input.submissionAllowed &&
36
+ input.autoMergeEnabled &&
37
+ (effectiveRule === 'always' ||
38
+ (effectiveRule !== 'never' && input.credible && input.withinThresholds));
39
+ return {
40
+ merge,
41
+ mergeReason: effectiveRule === 'always' ? 'class_auto_merge' : 'within_thresholds',
42
+ reviewReason: reviewReasonFor(input),
43
+ };
44
+ }
45
+ /** Why review is needed, in the same order {@link resolveMergePrecedence} applies. */
46
+ function reviewReasonFor(input) {
47
+ if (input.dryRun)
48
+ return 'dry_run';
49
+ if (!input.submissionAllowed)
50
+ return 'submission_not_allowed';
51
+ if (!input.autoMergeEnabled)
52
+ return 'auto_merge_disabled';
53
+ if (input.effectiveRule === 'never') {
54
+ return input.narrowedByRole ? 'role_requires_review' : 'class_requires_review';
55
+ }
56
+ if (!input.hasAssessment)
57
+ return 'no_assessment';
58
+ return input.credible ? 'exceeded_thresholds' : 'no_rationale';
59
+ }
6
60
  /** The assessment axes that exceed their preset ceiling (empty when all are within). */
7
61
  function exceededAxesOf(assessment, preset) {
8
62
  const axes = [];
@@ -73,6 +127,13 @@ export class MergeResolver {
73
127
  // the mode was settled and pinned at start, so a preset edited mid-flight cannot un-sandbox a
74
128
  // run a human is already reviewing (nor sandbox one that has been merging all along).
75
129
  const dryRun = isDryRun(instance.mode);
130
+ // Whether this run's TIER may land this KIND of change at all. Read alongside the class rule
131
+ // rather than folded into it: the two are orthogonal and both apply, and this one is a bar on
132
+ // landing where a class rule only decides how much review landing takes. `unknown` passes
133
+ // straight through (an unreadable diff is an outage, not evidence), as does a role with no
134
+ // authored allowlist and a run with no pinned role at all.
135
+ const submissionAllowlist = submissionAllowlistForRole(preset.submissionClassesByRole, instance.initiatedByRole);
136
+ const submissionAllowed = submissionAllowedForRole(preset.submissionClassesByRole, instance.initiatedByRole, classification.changeClass);
76
137
  const thresholds = {
77
138
  presetName: preset.name,
78
139
  maxComplexity: preset.maxComplexity,
@@ -84,6 +145,11 @@ export class MergeResolver {
84
145
  // Recorded only when the role CHANGED the outcome, so its presence always means "this
85
146
  // would have gone differently for someone else" rather than "a role was involved".
86
147
  ...(narrowedByRole ? { roleRule: effectiveRule } : {}),
148
+ // Recorded whenever the role IS scoped, not only when the scope refused this PR: an
149
+ // allowlist that permitted this class is what explains why the same role's next PR on
150
+ // another class will not land, and reporting it only on the refusal would make the
151
+ // permission read as an absence of policy.
152
+ ...(submissionAllowlist ? { submissionClasses: [...submissionAllowlist] } : {}),
87
153
  };
88
154
  const base = {
89
155
  assessment: assessment ?? undefined,
@@ -98,22 +164,26 @@ export class MergeResolver {
98
164
  // check is the engine-side backstop so those can never silently merge.
99
165
  const credible = assessment !== null && assessment.rationale.trim() !== '';
100
166
  const exceededAxes = assessment ? exceededAxesOf(assessment, preset) : [];
101
- // Auto-merge precedence, most-significant first:
102
- // 1. A DRY RUN merges nothing, whatever else says. It outranks even `autoMergeEnabled`
103
- // because it is a property of the RUN rather than of the policy: the person who started
104
- // it was never authorised to land this work, so no preset can consent on their behalf.
105
- // 2. `autoMergeEnabled: false` — the master switch. "Manual review only" stays manual and
106
- // a class rule can NEVER override it.
107
- // 3. The class rule AS NARROWED BY THE INITIATOR'S ROLE: `always` merges regardless of the
108
- // scores (and regardless of the rationale backstop — an explicit operator policy keyed on
109
- // a DETERMINISTIC backend classification outranks the agent's self-report); `never`
110
- // always routes to a human. A role entry can only push this arm toward `never`.
111
- // 4. The existing credibility + threshold comparison.
112
- const within = !dryRun &&
113
- preset.autoMergeEnabled &&
114
- (effectiveRule === 'always' ||
115
- (effectiveRule !== 'never' && credible && exceededAxes.length === 0));
116
- const mergeReason = effectiveRule === 'always' ? 'class_auto_merge' : 'within_thresholds';
167
+ const { merge: within, mergeReason, reviewReason, } = resolveMergePrecedence({
168
+ dryRun,
169
+ submissionAllowed,
170
+ autoMergeEnabled: preset.autoMergeEnabled,
171
+ effectiveRule,
172
+ narrowedByRole,
173
+ hasAssessment: assessment !== null,
174
+ credible,
175
+ withinThresholds: exceededAxes.length === 0,
176
+ });
177
+ // What a review card this outcome raises needs beyond the assessment. Built once: the two
178
+ // raise sites below differ only in WHY they were reached, and a card that named a different
179
+ // cause on the merge-failure path than on the refusal path would be reporting the resolver's
180
+ // control flow rather than the run's policy.
181
+ const cardContext = (recordId) => ({
182
+ changeClass: classification.changeClass,
183
+ ...(recordId ? { recordId } : {}),
184
+ dryRun,
185
+ submissionBlocked: !submissionAllowed,
186
+ });
117
187
  const record = (decision) => this.deps.mergeTrackRecord?.recordDecision(workspaceId, {
118
188
  block,
119
189
  executionId: instance.id,
@@ -140,46 +210,13 @@ export class MergeResolver {
140
210
  // Auto-merge failed outright (e.g. branch protection / conflict, or the first PR of a
141
211
  // multi-repo task): fall through to a review notification so a human can sort it out.
142
212
  const pending = await record('pending_review');
143
- await this.raiseReviewAndBlock(workspaceId, instance, block, assessment, {
144
- changeClass: classification.changeClass,
145
- recordId: pending?.id,
146
- dryRun,
147
- });
213
+ await this.raiseReviewAndBlock(workspaceId, instance, block, assessment, cardContext(pending?.id));
148
214
  return { ...base, outcome: 'awaiting_review', reason: 'merge_failed', exceededAxes };
149
215
  }
150
216
  }
151
217
  const pending = await record('pending_review');
152
- await this.raiseReviewAndBlock(workspaceId, instance, block, assessment, {
153
- changeClass: classification.changeClass,
154
- recordId: pending?.id,
155
- dryRun,
156
- });
157
- // Classify WHY review is needed, most-specific first, so the banner is precise, in the SAME
158
- // order the auto-merge branch above applies. A missing/unparseable assessment
159
- // (`no_assessment`) is distinct from one that returned scores but no rationale
160
- // (`no_rationale`): the latter DID produce visible scores, so the banner must not claim there
161
- // was no assessment at all.
162
- //
163
- // `dry_run` tops the ladder for the reason it tops the precedence: a sandboxed run's scores
164
- // were never consulted, so reporting it as `exceeded_thresholds` (or as `auto_merge_disabled`,
165
- // on a preset that would happily have merged it) sends someone to edit a ceiling that had no
166
- // part in the outcome. `role_requires_review` is likewise kept apart from
167
- // `class_requires_review` even though both mean "the rule says never": one is fixed by editing
168
- // the class rule, the other by a teammate on a higher tier merging the PR as it stands.
169
- const reason = dryRun
170
- ? 'dry_run'
171
- : !preset.autoMergeEnabled
172
- ? 'auto_merge_disabled'
173
- : effectiveRule === 'never'
174
- ? narrowedByRole
175
- ? 'role_requires_review'
176
- : 'class_requires_review'
177
- : assessment === null
178
- ? 'no_assessment'
179
- : !credible
180
- ? 'no_rationale'
181
- : 'exceeded_thresholds';
182
- return { ...base, outcome: 'awaiting_review', reason, exceededAxes };
218
+ await this.raiseReviewAndBlock(workspaceId, instance, block, assessment, cardContext(pending?.id));
219
+ return { ...base, outcome: 'awaiting_review', reason: reviewReason, exceededAxes };
183
220
  }
184
221
  /**
185
222
  * The track-record context a review card carries so the human can tag in the same tap.
@@ -227,10 +264,18 @@ export class MergeResolver {
227
264
  const body = track.dryRun
228
265
  ? `This was a dry run, so its PR was left open for a human regardless of the assessment.` +
229
266
  (scores && assessment ? ` The merger scored it ${scores}. ${assessment.rationale}` : '')
230
- : assessment
231
- ? `The merger scored this PR outside the task's auto-merge thresholds ` +
232
- `(${scores}). ${assessment.rationale}`
233
- : `The merger could not produce a valid assessment for this PR. Review and merge manually.`;
267
+ : // Same rule as the sandbox: name the policy that actually held the PR back rather than
268
+ // the scores nobody consulted. It deliberately does NOT claim the change cannot land: the
269
+ // PR is real, and a teammate whose role may land this class can merge it from here.
270
+ track.submissionBlocked
271
+ ? `This task's merge policy does not let the role that started this run land ` +
272
+ `${track.changeClass === 'unknown' ? 'this' : `a \`${track.changeClass}\``} change, so ` +
273
+ `its PR was left open regardless of the assessment.` +
274
+ (scores && assessment ? ` The merger scored it ${scores}. ${assessment.rationale}` : '')
275
+ : assessment
276
+ ? `The merger scored this PR outside the task's auto-merge thresholds ` +
277
+ `(${scores}). ${assessment.rationale}`
278
+ : `The merger could not produce a valid assessment for this PR. Review and merge manually.`;
234
279
  await this.deps.notificationService.raise(workspaceId, {
235
280
  type: 'merge_review',
236
281
  blockId: block.id,
@@ -1 +1 @@
1
- {"version":3,"file":"MergeResolver.js","sourceRoot":"","sources":["../../../src/modules/execution/MergeResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MergeResolver.js","sourceRoot":"","sources":["../../../src/modules/execution/MergeResolver.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Block, GroupCacheHandle, ReviewEffort, RiskPolicyCacheValue, RiskPolicyRepository } from '@cat-factory/kernel';
1
+ import type { Block, ChangeClass, GroupCacheHandle, ReviewEffort, RiskPolicyCacheValue, RiskPolicyRepository } from '@cat-factory/kernel';
2
2
  import type { MergeTrackRecordService } from '../merge/MergeTrackRecordService.js';
3
3
  import type { ResolvedRunRiskPolicy } from './policy-types.js';
4
4
  /** The collaborators the merge-policy layer needs; nothing else on the engine. */
@@ -48,6 +48,21 @@ export declare class RunMergePolicy {
48
48
  * this will apply when the run settles.
49
49
  */
50
50
  resolve(workspaceId: string, block: Block): Promise<ResolvedRunRiskPolicy>;
51
+ /**
52
+ * The DETERMINISTIC change class of a block's open pull request, for a policy decision that
53
+ * needs it outside the merger step (the manual-merge guard).
54
+ *
55
+ * One VCS call, and `unknown` whenever the class cannot be established: no repository wired,
56
+ * no PR number, a provider outage. That degradation is the whole reason this is worth a named
57
+ * method rather than an inline `?.classify(...)`: every consumer of a class MUST treat
58
+ * `unknown` as inert, and a call site that reached for the classification directly would be
59
+ * one `??` away from reading an outage as a policy verdict.
60
+ *
61
+ * Deliberately re-classifies rather than reading the class back off the recorded merge
62
+ * decision: a decision row is not guaranteed to exist on every path that reaches the merge
63
+ * route (a pipeline with no `merger` step raises `pipeline_complete` and records nothing).
64
+ */
65
+ classifyChangeClass(workspaceId: string, block: Block): Promise<ChangeClass>;
51
66
  /**
52
67
  * Settle the block's latest merge track record as `human_merged`, tagging the reviewer effort
53
68
  * when one was supplied. Resolved by BLOCK (not by run) because the merge controls that reach
@@ -1 +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,EACZ,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAElF,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;;;;;;;;;OASG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAO/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"}
1
+ {"version":3,"file":"RunMergePolicy.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/RunMergePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAElF,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;;;;;;;;;OASG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAO/E;IAED;;;;;;;;;;;;;OAaG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAKjF;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"}
@@ -36,6 +36,27 @@ export class RunMergePolicy {
36
36
  read: cachedRiskPolicyRead(this.deps.riskPolicyCache, workspaceId),
37
37
  });
38
38
  }
39
+ /**
40
+ * The DETERMINISTIC change class of a block's open pull request, for a policy decision that
41
+ * needs it outside the merger step (the manual-merge guard).
42
+ *
43
+ * One VCS call, and `unknown` whenever the class cannot be established: no repository wired,
44
+ * no PR number, a provider outage. That degradation is the whole reason this is worth a named
45
+ * method rather than an inline `?.classify(...)`: every consumer of a class MUST treat
46
+ * `unknown` as inert, and a call site that reached for the classification directly would be
47
+ * one `??` away from reading an outage as a policy verdict.
48
+ *
49
+ * Deliberately re-classifies rather than reading the class back off the recorded merge
50
+ * decision: a decision row is not guaranteed to exist on every path that reaches the merge
51
+ * route (a pipeline with no `merger` step raises `pipeline_complete` and records nothing).
52
+ */
53
+ async classifyChangeClass(workspaceId, block) {
54
+ const svc = this.deps.mergeTrackRecord;
55
+ if (!svc)
56
+ return 'unknown';
57
+ // `classify` is best-effort by construction and already degrades to `unknown` on any fault.
58
+ return (await svc.classify(workspaceId, block)).changeClass;
59
+ }
39
60
  /**
40
61
  * Settle the block's latest merge track record as `human_merged`, tagging the reviewer effort
41
62
  * when one was supplied. Resolved by BLOCK (not by run) because the merge controls that reach
@@ -1 +1 @@
1
- {"version":3,"file":"RunMergePolicy.js","sourceRoot":"","sources":["../../../src/modules/execution/RunMergePolicy.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAuB1F;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAc;IACI,IAAI;IAAjC,YAA6B,IAAwB;oBAAxB,IAAI;IAAuB,CAAC;IAEzD;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,KAAY;QAC7C,OAAO,iBAAiB,CAAC;YACvB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAC1C,WAAW;YACX,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC;SACnE,CAAC,CAAA;IACJ,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
+ {"version":3,"file":"RunMergePolicy.js","sourceRoot":"","sources":["../../../src/modules/execution/RunMergePolicy.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAuB1F;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAc;IACI,IAAI;IAAjC,YAA6B,IAAwB;oBAAxB,IAAI;IAAuB,CAAC;IAEzD;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,KAAY;QAC7C,OAAO,iBAAiB,CAAC;YACvB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAC1C,WAAW;YACX,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC;SACnE,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,mBAAmB,CAAC,WAAmB,EAAE,KAAY;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAA;QACtC,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAA;QAC1B,4FAA4F;QAC5F,OAAO,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAA;IAC7D,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"}
@@ -116,12 +116,23 @@ export declare class StepDecisionController {
116
116
  * downstream breaks. The record settle runs AFTER the merge and is best-effort inside the
117
117
  * service, so no part of this feature can fail or block a merge.
118
118
  *
119
- * A DRY RUN's PR is refused here. Without this the sandbox is decorative: `MergeResolver`
120
- * declining to auto-merge only to leave a `merge_review` card whose own action lands the change
121
- * would let a run that was never authorised to merge do exactly that, one tap later and through
122
- * the surface the mode exists to guard.
119
+ * A DRY RUN's PR is refused here, and so is one whose initiator's role may not land this class
120
+ * of change. Without those the two policies are decorative: `MergeResolver` declining to
121
+ * auto-merge only to leave a `merge_review` card whose own action lands the change would let a
122
+ * run that was never authorised to merge do exactly that, one tap later and through the surface
123
+ * the policy exists to guard.
123
124
  */
124
125
  mergePr(workspaceId: string, blockId: string, reviewEffort?: ReviewEffort | null): Promise<Block>;
126
+ /**
127
+ * The two policies that refuse the PLATFORM merge path outright, checked in the same order
128
+ * `MergeResolver` applies them so the manual exit and the automatic one can never disagree
129
+ * about which one held a PR back.
130
+ *
131
+ * The run is loaded ONCE and handed to both. Both read state off the run that opened this PR
132
+ * (its mode, and the tier it was admitted under), and re-reading it per guard would be a second
133
+ * point-read of the same row for no second fact.
134
+ */
135
+ private assertPlatformMayMerge;
125
136
  /**
126
137
  * Refuse the platform merge path for a PR a DRY RUN produced.
127
138
  *
@@ -137,6 +148,26 @@ export declare class StepDecisionController {
137
148
  * this mode guarantees is that the PLATFORM will not do it on a sandboxed run's behalf.
138
149
  */
139
150
  private assertNotDryRun;
151
+ /**
152
+ * Refuse the platform merge path when the run's initiator holds a role whose merge preset
153
+ * allowlists which change classes it may land, and this PR's class is outside that list.
154
+ *
155
+ * The sibling of {@link assertNotDryRun}, and the reason this policy is more than a `never`
156
+ * class rule: a rule routes to a human, but the human it routes to may be the initiator, so
157
+ * without this exit a scoped role would land exactly what the allowlist withholds, one tap
158
+ * later, from the card their own run raised.
159
+ *
160
+ * The class is only knowable at merge time, so the order below is load-bearing: the allowlist
161
+ * is read first and the classification (one VCS call) is paid for ONLY when a scoped role is
162
+ * actually on the other side of it. An unattributed run and an unscoped role therefore cost
163
+ * this guard a preset read and nothing else.
164
+ *
165
+ * The refusal deliberately does NOT claim the change cannot land: the PR is real, a teammate
166
+ * whose role may land this class can merge it from here, and someone with write access on the
167
+ * host can always merge it there. Unlike the sandbox, re-running the task changes nothing (the
168
+ * same role would produce the same refusal), so the copy must not suggest it.
169
+ */
170
+ private assertSubmissionAllowed;
140
171
  /**
141
172
  * Record that a human DECLINED to merge — they dismissed the review card rather than acting on
142
173
  * it, so the class's rollup counts a rejection instead of a forever-`pending_review` row.
@@ -1 +1 @@
1
- {"version":3,"file":"StepDecisionController.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/StepDecisionController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StepDecisionController.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/StepDecisionController.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ConflictError, ForbiddenError, NotFoundError, ValidationError, assertFound, } from '@cat-factory/kernel';
2
2
  import { companionTargets, isCompanionKind } from '@cat-factory/agents';
3
3
  import { foldGateApproval, isAsyncAgentExecutor, refuseGateResolution } from '@cat-factory/kernel';
4
- import { isDryRun } from '@cat-factory/contracts';
4
+ import { isDryRun, submissionAllowedForRole, submissionAllowlistForRole, } from '@cat-factory/contracts';
5
5
  import { HUMAN_REVIEW_AGENT_KIND } from './ci.logic.js';
6
6
  import { dedicatedParkSurface } from './step-park.logic.js';
7
7
  /**
@@ -405,10 +405,11 @@ export class StepDecisionController {
405
405
  * downstream breaks. The record settle runs AFTER the merge and is best-effort inside the
406
406
  * service, so no part of this feature can fail or block a merge.
407
407
  *
408
- * A DRY RUN's PR is refused here. Without this the sandbox is decorative: `MergeResolver`
409
- * declining to auto-merge only to leave a `merge_review` card whose own action lands the change
410
- * would let a run that was never authorised to merge do exactly that, one tap later and through
411
- * the surface the mode exists to guard.
408
+ * A DRY RUN's PR is refused here, and so is one whose initiator's role may not land this class
409
+ * of change. Without those the two policies are decorative: `MergeResolver` declining to
410
+ * auto-merge only to leave a `merge_review` card whose own action lands the change would let a
411
+ * run that was never authorised to merge do exactly that, one tap later and through the surface
412
+ * the policy exists to guard.
412
413
  */
413
414
  async mergePr(workspaceId, blockId, reviewEffort) {
414
415
  await this.deps.requireWorkspace(workspaceId);
@@ -416,11 +417,27 @@ export class StepDecisionController {
416
417
  if (block.status !== 'pr_ready') {
417
418
  throw new ConflictError(`Block '${blockId}' has no PR awaiting merge`, 'no_pr_to_merge');
418
419
  }
419
- await this.assertNotDryRun(workspaceId, block);
420
+ await this.assertPlatformMayMerge(workspaceId, block);
420
421
  await this.deps.finalizeMerge(workspaceId, blockId);
421
422
  await this.deps.mergePolicy.recordHumanMerge(workspaceId, blockId, reviewEffort);
422
423
  return this.deps.requireBlock(workspaceId, blockId);
423
424
  }
425
+ /**
426
+ * The two policies that refuse the PLATFORM merge path outright, checked in the same order
427
+ * `MergeResolver` applies them so the manual exit and the automatic one can never disagree
428
+ * about which one held a PR back.
429
+ *
430
+ * The run is loaded ONCE and handed to both. Both read state off the run that opened this PR
431
+ * (its mode, and the tier it was admitted under), and re-reading it per guard would be a second
432
+ * point-read of the same row for no second fact.
433
+ */
434
+ async assertPlatformMayMerge(workspaceId, block) {
435
+ const instance = block.executionId
436
+ ? await this.deps.executionRepository.get(workspaceId, block.executionId)
437
+ : null;
438
+ this.assertNotDryRun(block, instance);
439
+ await this.assertSubmissionAllowed(workspaceId, block, instance);
440
+ }
424
441
  /**
425
442
  * Refuse the platform merge path for a PR a DRY RUN produced.
426
443
  *
@@ -435,15 +452,45 @@ export class StepDecisionController {
435
452
  * real PR on the host, and someone with write access there can always merge it by hand. What
436
453
  * this mode guarantees is that the PLATFORM will not do it on a sandboxed run's behalf.
437
454
  */
438
- async assertNotDryRun(workspaceId, block) {
439
- if (!block.executionId)
440
- return;
441
- const instance = await this.deps.executionRepository.get(workspaceId, block.executionId);
455
+ assertNotDryRun(block, instance) {
442
456
  if (!isDryRun(instance?.mode))
443
457
  return;
444
458
  throw new ConflictError('This pull request came from a dry run, so it cannot be merged from here. Start the task ' +
445
459
  'again as a live run to produce a pull request this workspace will merge.', 'dry_run_not_mergeable', { executionId: block.executionId });
446
460
  }
461
+ /**
462
+ * Refuse the platform merge path when the run's initiator holds a role whose merge preset
463
+ * allowlists which change classes it may land, and this PR's class is outside that list.
464
+ *
465
+ * The sibling of {@link assertNotDryRun}, and the reason this policy is more than a `never`
466
+ * class rule: a rule routes to a human, but the human it routes to may be the initiator, so
467
+ * without this exit a scoped role would land exactly what the allowlist withholds, one tap
468
+ * later, from the card their own run raised.
469
+ *
470
+ * The class is only knowable at merge time, so the order below is load-bearing: the allowlist
471
+ * is read first and the classification (one VCS call) is paid for ONLY when a scoped role is
472
+ * actually on the other side of it. An unattributed run and an unscoped role therefore cost
473
+ * this guard a preset read and nothing else.
474
+ *
475
+ * The refusal deliberately does NOT claim the change cannot land: the PR is real, a teammate
476
+ * whose role may land this class can merge it from here, and someone with write access on the
477
+ * host can always merge it there. Unlike the sandbox, re-running the task changes nothing (the
478
+ * same role would produce the same refusal), so the copy must not suggest it.
479
+ */
480
+ async assertSubmissionAllowed(workspaceId, block, instance) {
481
+ const role = instance?.initiatedByRole;
482
+ if (!role)
483
+ return;
484
+ const preset = await this.deps.mergePolicy.resolve(workspaceId, block);
485
+ if (!submissionAllowlistForRole(preset.submissionClassesByRole, role))
486
+ return;
487
+ const changeClass = await this.deps.mergePolicy.classifyChangeClass(workspaceId, block);
488
+ if (submissionAllowedForRole(preset.submissionClassesByRole, role, changeClass))
489
+ return;
490
+ throw new ConflictError(`This task's merge policy does not let a ${role} land a ${changeClass} change, so this ` +
491
+ 'pull request cannot be merged from here. A teammate whose role may land this kind of ' +
492
+ 'change can merge it, or an admin can widen the merge policy.', 'submission_not_allowed', { executionId: block.executionId, role, changeClass });
493
+ }
447
494
  /**
448
495
  * Record that a human DECLINED to merge — they dismissed the review card rather than acting on
449
496
  * it, so the class's rollup counts a rejection instead of a forever-`pending_review` row.
@@ -1 +1 @@
1
- {"version":3,"file":"StepDecisionController.js","sourceRoot":"","sources":["../../../src/modules/execution/StepDecisionController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StepDecisionController.js","sourceRoot":"","sources":["../../../src/modules/execution/StepDecisionController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { PipelineStep } from '@cat-factory/kernel';
2
+ /**
3
+ * The step fields the context builder REWRITES from each resolution, behind one seam that owns the
4
+ * single question they share: may THIS resolution write them?
5
+ *
6
+ * Both fields describe the dispatch that produced the tree a step pushed, which is only meaningful
7
+ * because each resolution rewrites them, CLEARING what an earlier one recorded. That contract is
8
+ * exactly what makes them dangerous, because `buildContext` has callers that resolve a full context
9
+ * without starting any job: the over-budget exemption probe, and a re-attach to a job an earlier
10
+ * (possibly replayed) dispatch already started. Left ungated, a config store that recovered between
11
+ * the dispatch and the replay ERASES the record that the shipped job ran with no checks, and the PR
12
+ * verification report goes back to telling the reviewer the service configures none.
13
+ *
14
+ * So the decision is taken ONCE per `buildContext` call and handed to the resolvers as this object,
15
+ * rather than as a boolean each of them re-interprets. A resolver cannot write the field it owns
16
+ * without going through the seam, and the next per-dispatch field to be added inherits the rule
17
+ * instead of rediscovering it.
18
+ */
19
+ export interface StepObservations {
20
+ /**
21
+ * Whether a write lands. Exposed because a degradation may want to SAY which it was: the
22
+ * validation-read warning names it, so an operator knows whether the report will carry the fact
23
+ * or whether the real dispatch's own line is the one to look for.
24
+ */
25
+ readonly records: boolean;
26
+ /** The best-practice fragment ids this resolution folded; `undefined` when it folded none. */
27
+ fragmentIds(ids: string[] | undefined): void;
28
+ /** Whether this resolution could READ the service frame's validation configuration. */
29
+ validationConfigUnreadable(unreadable: boolean): void;
30
+ }
31
+ /**
32
+ * Bind {@link StepObservations} to a step for one `buildContext` call.
33
+ *
34
+ * Recording is the DEFAULT, and the asymmetry is deliberate: a caller that should have opted out
35
+ * states a fact about a resolution that never shipped, which is visible and is corrected by the
36
+ * next real dispatch, while one that wrongly opts out deletes evidence with nothing left to show
37
+ * it ever existed. Given a caller will eventually forget, forget loudly.
38
+ */
39
+ export declare function stepObservations(step: PipelineStep, options?: {
40
+ recordsDispatch?: boolean;
41
+ }): StepObservations;
42
+ //# sourceMappingURL=builder-step-observations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-step-observations.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/builder-step-observations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8FAA8F;IAC9F,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAA;IAC5C,uFAAuF;IACvF,0BAA0B,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAA;CACtD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC,gBAAgB,CAalB"}