@cat-factory/orchestration 0.210.0 → 0.211.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.
@@ -1 +1 @@
1
- {"version":3,"file":"riskPolicySelectionGuard.d.ts","sourceRoot":"","sources":["../../../src/modules/board/riskPolicySelectionGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA8B,MAAM,wBAAwB,CAAA;AAExF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAI/D;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE;QACrB,WAAW,EAAE,MAAM,CAAA;QACnB,KAAK,EAAE,cAAc,CAAA;QACrB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;QACpC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAClC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClB;AAYD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC5C,GAAG,wBAAwB,CAyB3B"}
1
+ {"version":3,"file":"riskPolicySelectionGuard.d.ts","sourceRoot":"","sources":["../../../src/modules/board/riskPolicySelectionGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA8B,MAAM,wBAAwB,CAAA;AAExF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAI/D;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE;QACrB,WAAW,EAAE,MAAM,CAAA;QACnB,KAAK,EAAE,cAAc,CAAA;QACrB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;QACpC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAClC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClB;AAeD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC5C,GAAG,wBAAwB,CAyB3B"}
@@ -5,6 +5,8 @@ import { resolveRiskPolicy } from '../merge/riskPolicyResolution.js';
5
5
  const REFUSAL_MESSAGE = {
6
6
  relaxes_role_sandbox: 'This task runs sandboxed for your role, and the merge policy you picked does not. Ask a ' +
7
7
  'workspace admin to change the policy or to run this task themselves.',
8
+ relaxes_role_submission_allowlist: 'The merge policy you picked would let your role land kinds of change this task holds it ' +
9
+ 'back from. Ask a workspace admin to change the policy or to run this task themselves.',
8
10
  relaxes_role_class_rule: 'The merge policy you picked auto-merges changes your role is held to review on this task. ' +
9
11
  'Ask a workspace admin to change the policy or to run this task themselves.',
10
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"riskPolicySelectionGuard.js","sourceRoot":"","sources":["../../../src/modules/board/riskPolicySelectionGuard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AA+BpE,kFAAkF;AAClF,MAAM,eAAe,GAA+C;IAClE,oBAAoB,EAClB,0FAA0F;QAC1F,sEAAsE;IACxE,uBAAuB,EACrB,4FAA4F;QAC5F,4EAA4E;CAC/E,CAAA;AAED,MAAM,UAAU,8BAA8B,CAAC,IAE9C;IACC,OAAO;QACL,KAAK,CAAC,eAAe,CAAC,KAAK;YACzB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;YACvD,2FAA2F;YAC3F,uFAAuF;YACvF,kFAAkF;YAClF,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,aAAa;gBAAE,OAAM;YAC9C,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;gBAAE,OAAM;YAChD,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACnC,iBAAiB,CAAC;oBAChB,UAAU,EAAE,IAAI,CAAC,oBAAoB;oBACrC,WAAW;oBACX,YAAY,EAAE,SAAS;iBACxB,CAAC;gBACF,iBAAiB,CAAC;oBAChB,UAAU,EAAE,IAAI,CAAC,oBAAoB;oBACrC,WAAW;oBACX,YAAY,EAAE,MAAM;iBACrB,CAAC;aACH,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,yBAAyB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YAC9D,IAAI,OAAO;gBAAE,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QACtF,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"riskPolicySelectionGuard.js","sourceRoot":"","sources":["../../../src/modules/board/riskPolicySelectionGuard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AA+BpE,kFAAkF;AAClF,MAAM,eAAe,GAA+C;IAClE,oBAAoB,EAClB,0FAA0F;QAC1F,sEAAsE;IACxE,iCAAiC,EAC/B,0FAA0F;QAC1F,uFAAuF;IACzF,uBAAuB,EACrB,4FAA4F;QAC5F,4EAA4E;CAC/E,CAAA;AAED,MAAM,UAAU,8BAA8B,CAAC,IAE9C;IACC,OAAO;QACL,KAAK,CAAC,eAAe,CAAC,KAAK;YACzB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;YACvD,2FAA2F;YAC3F,uFAAuF;YACvF,kFAAkF;YAClF,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,aAAa;gBAAE,OAAM;YAC9C,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;gBAAE,OAAM;YAChD,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACnC,iBAAiB,CAAC;oBAChB,UAAU,EAAE,IAAI,CAAC,oBAAoB;oBACrC,WAAW;oBACX,YAAY,EAAE,SAAS;iBACxB,CAAC;gBACF,iBAAiB,CAAC;oBAChB,UAAU,EAAE,IAAI,CAAC,oBAAoB;oBACrC,WAAW;oBACX,YAAY,EAAE,MAAM;iBACrB,CAAC;aACH,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,yBAAyB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YAC9D,IAAI,OAAO;gBAAE,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QACtF,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Block, BlockRepository, ClassRulesByRole, ExecutionInstance, MergeClassRules, MergeDecision } from '@cat-factory/kernel';
1
+ import type { Block, BlockRepository, ClassRulesByRole, ExecutionInstance, MergeClassRules, MergeDecision, SubmissionClassesByRole } from '@cat-factory/kernel';
2
2
  import type { NotificationService } from '../notifications/NotificationService.js';
3
3
  import type { MergeTrackRecordService } from '../merge/MergeTrackRecordService.js';
4
4
  /** The auto-merge ceilings the resolver compares a merger assessment against. */
@@ -23,6 +23,13 @@ interface MergeThresholds {
23
23
  * rules put it.
24
24
  */
25
25
  classRulesByRole?: ClassRulesByRole;
26
+ /**
27
+ * Per-role allowlist of the change classes this preset will land at all. Orthogonal to
28
+ * {@link classRulesByRole} and applied ABOVE it: a class the rules would auto-merge is still
29
+ * refused when it is outside the initiator's allowlist. An absent map (or an absent role
30
+ * entry) is unrestricted.
31
+ */
32
+ submissionClassesByRole?: SubmissionClassesByRole;
26
33
  }
27
34
  /**
28
35
  * The outcome of {@link MergeResolverDeps.finalizeMerge} — a task's real merge over ALL its
@@ -1 +1 @@
1
- {"version":3,"file":"MergeResolver.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/MergeResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EAEf,gBAAgB,EAChB,iBAAiB,EAGjB,eAAe,EACf,aAAa,EACd,MAAM,qBAAqB,CAAA;AAM5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAOlF,iFAAiF;AACjF,UAAU,eAAe;IACvB,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,wFAAwF;IACxF,gBAAgB,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;AAsBD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAE7D,iGAAiG;AACjG,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAA;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC,6FAA6F;IAC7F,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IAClF;;;;OAIG;IACH,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACrF;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;CAC3C;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,iBAAiB,EAAI;IAExD;;;;;OAKG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA8J/B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAG3B;IAEF;;;;;;;;;;;;OAYG;YACW,mBAAmB;IAcjC,oFAAoF;YACtE,gBAAgB;CAuC/B"}
1
+ {"version":3,"file":"MergeResolver.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/MergeResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EAEf,gBAAgB,EAChB,iBAAiB,EAIjB,eAAe,EACf,aAAa,EACb,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAQ5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAOlF,iFAAiF;AACjF,UAAU,eAAe;IACvB,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,wFAAwF;IACxF,gBAAgB,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;CAClD;AAiHD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAE7D,iGAAiG;AACjG,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAA;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC,6FAA6F;IAC7F,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IAClF;;;;OAIG;IACH,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACrF;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;CAC3C;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,iBAAiB,EAAI;IAExD;;;;;OAKG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAmK/B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAG3B;IAEF;;;;;;;;;;;;OAYG;YACW,mBAAmB;IAcjC,oFAAoF;YACtE,gBAAgB;CA+C/B"}
@@ -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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"}
@@ -1,4 +1,4 @@
1
- import type { ClassRulesByRole, MergeClassRules, RequirementConcernLevel, StepGating, WorkspaceRole } from '@cat-factory/kernel';
1
+ import type { ClassRulesByRole, MergeClassRules, RequirementConcernLevel, StepGating, SubmissionClassesByRole, WorkspaceRole } from '@cat-factory/kernel';
2
2
  /**
3
3
  * The effective risk/merge policy for one run, as {@link RunMergePolicy.resolve} resolves it
4
4
  * (the block's selected preset, else the workspace default, else the built-in
@@ -49,5 +49,12 @@ export interface ResolvedRunRiskPolicy {
49
49
  * run must stay sandboxed even if the role is un-listed mid-flight.
50
50
  */
51
51
  dryRunRoles?: readonly WorkspaceRole[];
52
+ /**
53
+ * Per-ROLE allowlist of the change classes this preset will land at all. Read at MERGE time
54
+ * rather than at start (the opposite of `dryRunRoles` above), because the class is derived from
55
+ * the pull request's changed files and does not exist until there is a pull request. That is
56
+ * not a weaker guarantee, only a later one: opening the PR was never the harm, landing it is.
57
+ */
58
+ submissionClassesByRole?: SubmissionClassesByRole;
52
59
  }
53
60
  //# sourceMappingURL=policy-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy-types.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/policy-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,wBAAwB,EAAE,MAAM,CAAA;IAChC,4BAA4B,EAAE,uBAAuB,CAAA;IACrD,0BAA0B,EAAE,MAAM,CAAA;IAClC,yBAAyB,EAAE,MAAM,CAAA;IACjC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CACvC"}
1
+ {"version":3,"file":"policy-types.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/policy-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,uBAAuB,EACvB,aAAa,EACd,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,wBAAwB,EAAE,MAAM,CAAA;IAChC,4BAA4B,EAAE,uBAAuB,CAAA;IACrD,0BAA0B,EAAE,MAAM,CAAA;IAClC,yBAAyB,EAAE,MAAM,CAAA;IACjC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACtC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;CAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"RiskPolicyService.d.ts","sourceRoot":"","sources":["../../../src/modules/merge/RiskPolicyService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAU5B,MAAM,WAAW,6BAA6B;IAC5C,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ;;;;OAIG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;CACzD;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAwC;IAE/D,YAAY,IAAI,EAAE,6BAA6B,EAM9C;IAED;;;;OAIG;YACW,UAAU;IAIxB,kFAAkF;IAC5E,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAIrD;IAED,uFAAuF;IACjF,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CA8BnF;IAED,+EAA+E;IACzE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2C/F;IAED,6DAA6D;IACvD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3D;IAED;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBjE;IAED,sFAAsF;YACxE,YAAY;IAiB1B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ;CAyBjB"}
1
+ {"version":3,"file":"RiskPolicyService.d.ts","sourceRoot":"","sources":["../../../src/modules/merge/RiskPolicyService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAU5B,MAAM,WAAW,6BAA6B;IAC5C,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ;;;;OAIG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;CACzD;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAwC;IAE/D,YAAY,IAAI,EAAE,6BAA6B,EAM9C;IAED;;;;OAIG;YACW,UAAU;IAIxB,kFAAkF;IAC5E,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAIrD;IAED,uFAAuF;IACjF,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CA+BnF;IAED,+EAA+E;IACzE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmD/F;IAED,6DAA6D;IACvD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3D;IAED;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBjE;IAED,sFAAsF;YACxE,YAAY;IAiB1B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ;CA0BjB"}
@@ -59,6 +59,7 @@ export class RiskPolicyService {
59
59
  classRules: input.classRules,
60
60
  classRulesByRole: input.classRulesByRole,
61
61
  dryRunRoles: input.dryRunRoles,
62
+ submissionClassesByRole: input.submissionClassesByRole,
62
63
  // The very first preset must be the default; otherwise honour the request.
63
64
  isDefault: existing.length === 0 ? true : input.isDefault,
64
65
  createdAt: this.clock.now(),
@@ -103,9 +104,17 @@ export class RiskPolicyService {
103
104
  ...(patch.judgeMaxBounces !== undefined ? { judgeMaxBounces: patch.judgeMaxBounces } : {}),
104
105
  ...(patch.autoMergeEnabled !== undefined ? { autoMergeEnabled: patch.autoMergeEnabled } : {}),
105
106
  ...(patch.forkDecision !== undefined ? { forkDecision: patch.forkDecision } : {}),
106
- // Replaces the whole map rather than merging, so clearing a class's rule is a plain
107
- // omission from the submitted set (there is no "delete this one key" wire shape).
107
+ // Each of the three role/class maps replaces the whole stored value rather than merging,
108
+ // so clearing one entry is a plain omission from the submitted set (there is no "delete
109
+ // this one key" wire shape). All three are applied here, and an editor that submits the
110
+ // full map every save depends on it: a patch field the service drops is indistinguishable
111
+ // from a save that worked, right up until the operator reloads the settings panel.
108
112
  ...(patch.classRules !== undefined ? { classRules: patch.classRules } : {}),
113
+ ...(patch.classRulesByRole !== undefined ? { classRulesByRole: patch.classRulesByRole } : {}),
114
+ ...(patch.dryRunRoles !== undefined ? { dryRunRoles: patch.dryRunRoles } : {}),
115
+ ...(patch.submissionClassesByRole !== undefined
116
+ ? { submissionClassesByRole: patch.submissionClassesByRole }
117
+ : {}),
109
118
  ...(patch.isDefault !== undefined ? { isDefault: patch.isDefault } : {}),
110
119
  };
111
120
  await this.presets.upsert(workspaceId, updated);
@@ -195,6 +204,7 @@ export class RiskPolicyService {
195
204
  forkDecision: seed.forkDecision,
196
205
  classRulesByRole: seed.classRulesByRole,
197
206
  dryRunRoles: seed.dryRunRoles,
207
+ submissionClassesByRole: seed.submissionClassesByRole,
198
208
  classRules: seed.classRules,
199
209
  isDefault: seed.isDefault,
200
210
  version: seed.version,
@@ -1 +1 @@
1
- {"version":3,"file":"RiskPolicyService.js","sourceRoot":"","sources":["../../../src/modules/merge/RiskPolicyService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RiskPolicyService.js","sourceRoot":"","sources":["../../../src/modules/merge/RiskPolicyService.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/orchestration",
3
- "version": "0.210.0",
3
+ "version": "0.211.0",
4
4
  "description": "Delivery-workflow engine for the Agent Architecture Board (execution, bootstrap, pipelines, board, boardScan, requirements, and composition root).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,20 +25,20 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "ai": "^7.0.51",
28
- "@cat-factory/agents": "0.112.4",
29
- "@cat-factory/caching": "0.14.24",
30
- "@cat-factory/contracts": "0.243.0",
31
- "@cat-factory/integrations": "0.130.0",
32
- "@cat-factory/kernel": "0.242.0",
33
- "@cat-factory/prompt-fragments": "0.15.69",
34
- "@cat-factory/sandbox": "0.11.65",
35
- "@cat-factory/spend": "0.15.6",
36
- "@cat-factory/workspaces": "0.21.58"
28
+ "@cat-factory/agents": "0.112.5",
29
+ "@cat-factory/caching": "0.14.25",
30
+ "@cat-factory/contracts": "0.244.0",
31
+ "@cat-factory/integrations": "0.130.1",
32
+ "@cat-factory/kernel": "0.243.0",
33
+ "@cat-factory/prompt-fragments": "0.15.70",
34
+ "@cat-factory/sandbox": "0.11.66",
35
+ "@cat-factory/spend": "0.15.7",
36
+ "@cat-factory/workspaces": "0.21.59"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "7.0.2",
40
40
  "vitest": "^4.1.10",
41
- "@cat-factory/sandbox-fixtures": "0.7.277"
41
+ "@cat-factory/sandbox-fixtures": "0.7.278"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsc -b tsconfig.build.json",