codex-orchestrator 2.0.14 → 2.0.15
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.
- package/CHANGELOG.md +14 -0
- package/dist/src/v2/adapters/gh-issue-adapter.js +2 -0
- package/dist/src/v2/adapters/gh-issue-adapter.js.map +1 -1
- package/dist/src/v2/containment.d.ts.map +1 -1
- package/dist/src/v2/containment.js +2 -1
- package/dist/src/v2/containment.js.map +1 -1
- package/dist/src/v2/implementation-report.d.ts +5 -1
- package/dist/src/v2/implementation-report.d.ts.map +1 -1
- package/dist/src/v2/implementation-report.js +46 -1
- package/dist/src/v2/implementation-report.js.map +1 -1
- package/dist/src/v2/pending-effect-settlement.d.ts +2 -2
- package/dist/src/v2/pending-effect-settlement.d.ts.map +1 -1
- package/dist/src/v2/pending-effect-settlement.js +2 -2
- package/dist/src/v2/pending-effect-settlement.js.map +1 -1
- package/dist/src/v2/review-feedback-coordinator.d.ts +7 -1
- package/dist/src/v2/review-feedback-coordinator.d.ts.map +1 -1
- package/dist/src/v2/review-feedback-coordinator.js +84 -4
- package/dist/src/v2/review-feedback-coordinator.js.map +1 -1
- package/dist/src/v2/review-feedback.d.ts +14 -2
- package/dist/src/v2/review-feedback.d.ts.map +1 -1
- package/dist/src/v2/review-feedback.js +74 -6
- package/dist/src/v2/review-feedback.js.map +1 -1
- package/dist/src/v2/run-issue.d.ts +16 -7
- package/dist/src/v2/run-issue.d.ts.map +1 -1
- package/dist/src/v2/run-issue.js +606 -316
- package/dist/src/v2/run-issue.js.map +1 -1
- package/dist/src/v2/run-state-projections.d.ts +0 -13
- package/dist/src/v2/run-state-projections.d.ts.map +1 -1
- package/dist/src/v2/run-state-projections.js +0 -20
- package/dist/src/v2/run-state-projections.js.map +1 -1
- package/dist/src/v2/run-store.d.ts +51 -30
- package/dist/src/v2/run-store.d.ts.map +1 -1
- package/dist/src/v2/run-store.js +106 -34
- package/dist/src/v2/run-store.js.map +1 -1
- package/dist/src/v2/runtime.d.ts +10 -0
- package/dist/src/v2/runtime.d.ts.map +1 -1
- package/dist/src/v2/runtime.js +23 -14
- package/dist/src/v2/runtime.js.map +1 -1
- package/dist/src/v2/validation-progression.d.ts +1 -1
- package/dist/src/v2/validation-progression.d.ts.map +1 -1
- package/dist/src/v2/validation-progression.js.map +1 -1
- package/internal-workflow/manifest.json +1 -1
- package/internal-workflow/operations/implementation/SKILL.md +6 -1
- package/internal-workflow/schemas/implementation-report-v1.json +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { FrozenCriterion, IssueSnapshot } from './acceptance-proof.js';
|
|
2
|
-
import type { AgentAutoConfig } from './config.js';
|
|
3
2
|
import type { RunRecord, RunStateInspection, RunTerminalOutcome } from './run-store.js';
|
|
4
3
|
interface IssueObservation {
|
|
5
4
|
number: number;
|
|
@@ -30,18 +29,6 @@ export declare function snapshotIssue(issue: IssueObservation): IssueSnapshot &
|
|
|
30
29
|
export declare function publicIssueSnapshot(issue: IssueSnapshot): IssueSnapshot;
|
|
31
30
|
export declare function freezeCriteria(issue: IssueSnapshot): FrozenCriterion[];
|
|
32
31
|
export declare function claimComment(runId: string, issueNumber: number, branchName: string): string;
|
|
33
|
-
export declare function blockedLabelPolicy(config: AgentAutoConfig): {
|
|
34
|
-
auto: string;
|
|
35
|
-
running: string;
|
|
36
|
-
blocked: string;
|
|
37
|
-
review: string;
|
|
38
|
-
};
|
|
39
|
-
export declare function blockedLabelProjection(labels: string[], config: AgentAutoConfig): {
|
|
40
|
-
status: 'settled';
|
|
41
|
-
expected: string[];
|
|
42
|
-
} | {
|
|
43
|
-
status: 'transition' | 'diverged';
|
|
44
|
-
};
|
|
45
32
|
export declare function sameStrings(left: string[], right: string[]): boolean;
|
|
46
33
|
export declare function isAdoptableAttempt(attempt: RunRecord['activeAttempt']): boolean;
|
|
47
34
|
export declare function semanticChangesMatch(record: RunRecord, changes: Omit<Partial<RunRecord>, 'activeAttempt'>): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-state-projections.d.ts","sourceRoot":"","sources":["../../../src/v2/run-state-projections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-state-projections.d.ts","sourceRoot":"","sources":["../../../src/v2/run-state-projections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAExF,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnH;AAID,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEvE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CAExE;AAmBD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAQtH;AAQD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ5E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAC,eAAe,CAAC,CAQrI;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAMzG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAEvE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,EAAE,CAatE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAIpE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,OAAO,CAE/E;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,GAAG,OAAO,CAKnH;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,WAAW,CAAC,EACtD,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,WAAW,CAAC,GACtD,OAAO,CAET;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB;;;;;;;;;;;;;;;+BA1C3C,CAAC;;;;;;;;;;;;EA6Cd;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAIxH"}
|
|
@@ -89,26 +89,6 @@ export function freezeCriteria(issue) {
|
|
|
89
89
|
export function claimComment(runId, issueNumber, branchName) {
|
|
90
90
|
return `<!-- codex-orchestrator:run:${runId}:claim -->\ncodex-orchestrator claimed #${issueNumber} for branch ${branchName}`;
|
|
91
91
|
}
|
|
92
|
-
export function blockedLabelPolicy(config) {
|
|
93
|
-
return {
|
|
94
|
-
auto: config.github.labels.auto.name, running: config.github.labels.running.name,
|
|
95
|
-
blocked: config.github.labels.blocked.name, review: config.github.labels.review.name,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
export function blockedLabelProjection(labels, config) {
|
|
99
|
-
const policy = blockedLabelPolicy(config);
|
|
100
|
-
const present = new Set(labels);
|
|
101
|
-
if (present.has(policy.review))
|
|
102
|
-
return { status: 'transition' };
|
|
103
|
-
const auto = present.has(policy.auto);
|
|
104
|
-
const running = present.has(policy.running);
|
|
105
|
-
const blocked = present.has(policy.blocked);
|
|
106
|
-
if (running || (auto && !blocked))
|
|
107
|
-
return { status: 'transition' };
|
|
108
|
-
if (blocked)
|
|
109
|
-
return { status: 'settled', expected: auto ? [policy.auto, policy.blocked].sort() : [policy.blocked] };
|
|
110
|
-
return { status: 'settled', expected: [] };
|
|
111
|
-
}
|
|
112
92
|
export function sameStrings(left, right) {
|
|
113
93
|
const a = [...left].sort();
|
|
114
94
|
const b = [...right].sort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-state-projections.js","sourceRoot":"","sources":["../../../src/v2/run-state-projections.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-state-projections.js","sourceRoot":"","sources":["../../../src/v2/run-state-projections.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,25 +15,10 @@ export type PendingEffect = EffectIdentity & ({
|
|
|
15
15
|
issueNumber: number;
|
|
16
16
|
expected: string[];
|
|
17
17
|
} | {
|
|
18
|
-
kind: 'claim-comment'
|
|
18
|
+
kind: 'claim-comment';
|
|
19
19
|
issueNumber: number;
|
|
20
20
|
marker: string;
|
|
21
21
|
bodySha256: string;
|
|
22
|
-
} | {
|
|
23
|
-
kind: 'blocked-comment';
|
|
24
|
-
issueNumber: number;
|
|
25
|
-
marker: string;
|
|
26
|
-
bodySha256: string;
|
|
27
|
-
blockKind: 'external' | 'safety' | 'decision-delta' | 'out-of-scope' | 'authority-boundary';
|
|
28
|
-
resumable: boolean;
|
|
29
|
-
evidenceCode: string;
|
|
30
|
-
blocker?: {
|
|
31
|
-
kind: string;
|
|
32
|
-
summary: string;
|
|
33
|
-
attempted: string[];
|
|
34
|
-
resumable: boolean;
|
|
35
|
-
reviewerRejectionDetail?: string;
|
|
36
|
-
};
|
|
37
22
|
} | {
|
|
38
23
|
kind: 'initial-commit';
|
|
39
24
|
parentSha: string;
|
|
@@ -53,23 +38,19 @@ export type PendingEffect = EffectIdentity & ({
|
|
|
53
38
|
issueNumber: number;
|
|
54
39
|
marker: string;
|
|
55
40
|
} | {
|
|
56
|
-
kind: '
|
|
41
|
+
kind: 'terminal-comment';
|
|
57
42
|
issueNumber: number;
|
|
58
|
-
|
|
43
|
+
marker: string;
|
|
44
|
+
bodySha256: string;
|
|
45
|
+
outcome: 'review-ready' | 'blocked' | 'internal-error' | 'cancelled';
|
|
46
|
+
attempt: number;
|
|
59
47
|
} | {
|
|
60
|
-
kind: '
|
|
48
|
+
kind: 'terminal-labels';
|
|
61
49
|
issueNumber: number;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
blocker?: {
|
|
67
|
-
kind: string;
|
|
68
|
-
summary: string;
|
|
69
|
-
attempted: string[];
|
|
70
|
-
resumable: boolean;
|
|
71
|
-
reviewerRejectionDetail?: string;
|
|
72
|
-
};
|
|
50
|
+
add: string[];
|
|
51
|
+
remove: string[];
|
|
52
|
+
outcome: 'review-ready' | 'blocked' | 'internal-error' | 'cancelled';
|
|
53
|
+
attempt: number;
|
|
73
54
|
} | {
|
|
74
55
|
kind: 'review-activation-labels';
|
|
75
56
|
issueNumber: number;
|
|
@@ -161,6 +142,41 @@ export type RunTerminalOutcome = {
|
|
|
161
142
|
code: string;
|
|
162
143
|
evidencePath: string;
|
|
163
144
|
};
|
|
145
|
+
export interface TerminalReportSnapshotV1 {
|
|
146
|
+
version: 1;
|
|
147
|
+
outcome: 'review-ready' | 'blocked' | 'internal-error' | 'cancelled';
|
|
148
|
+
summary: string;
|
|
149
|
+
pullRequestUrl?: string;
|
|
150
|
+
passedChecks: string[];
|
|
151
|
+
publishableProof: string[];
|
|
152
|
+
unverified: string[];
|
|
153
|
+
risks: string[];
|
|
154
|
+
reviewFocus: string[];
|
|
155
|
+
nextAction: string;
|
|
156
|
+
blocker?: {
|
|
157
|
+
kind: string;
|
|
158
|
+
resumable: boolean;
|
|
159
|
+
attempted: string[];
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export interface TerminalNotificationStateV1 {
|
|
163
|
+
version: 1;
|
|
164
|
+
commentCutoff: {
|
|
165
|
+
commentId: string | null;
|
|
166
|
+
observedAt: string;
|
|
167
|
+
};
|
|
168
|
+
report: TerminalReportSnapshotV1;
|
|
169
|
+
comment: {
|
|
170
|
+
status: 'pending' | 'delivered' | 'exhausted';
|
|
171
|
+
attempts: number;
|
|
172
|
+
diagnostic?: string;
|
|
173
|
+
};
|
|
174
|
+
labels: {
|
|
175
|
+
status: 'pending' | 'delivered' | 'exhausted';
|
|
176
|
+
attempts: number;
|
|
177
|
+
diagnostic?: string;
|
|
178
|
+
};
|
|
179
|
+
}
|
|
164
180
|
export interface PersistedIssueSnapshotV1 {
|
|
165
181
|
number: number;
|
|
166
182
|
title: string;
|
|
@@ -230,6 +246,11 @@ export interface RunRecord {
|
|
|
230
246
|
reportRepairFindings: string[];
|
|
231
247
|
};
|
|
232
248
|
proofReceipt?: ProofReceipt;
|
|
249
|
+
implementationResult?: {
|
|
250
|
+
summary: string;
|
|
251
|
+
residualRisks: string[];
|
|
252
|
+
};
|
|
253
|
+
terminalNotifications?: TerminalNotificationStateV1;
|
|
233
254
|
pendingEffect?: PendingEffect;
|
|
234
255
|
outcomeEvidenceId?: string;
|
|
235
256
|
terminalOutcome?: RunTerminalOutcome;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-store.d.ts","sourceRoot":"","sources":["../../../src/v2/run-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI5F,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,EAA8D,KAAK,kBAAkB,EAAE,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AACtJ,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAM9B,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,cAAc,GACd,UAAU,GACV,SAAS,GACT,WAAW,GACX,YAAY,GACZ,WAAW,GACX,cAAc,GACd,SAAS,GACT,kBAAkB,GAClB,WAAW,GACX,gBAAgB,CAAC;AAErB,KAAK,cAAc,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,CACzC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"run-store.d.ts","sourceRoot":"","sources":["../../../src/v2/run-store.ts"],"names":[],"mappings":"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"}
|
package/dist/src/v2/run-store.js
CHANGED
|
@@ -118,6 +118,8 @@ function validateRunRecord(value, field) {
|
|
|
118
118
|
'proofId',
|
|
119
119
|
'proofExecution',
|
|
120
120
|
'proofReceipt',
|
|
121
|
+
'implementationResult',
|
|
122
|
+
'terminalNotifications',
|
|
121
123
|
'pendingEffect',
|
|
122
124
|
'outcomeEvidenceId',
|
|
123
125
|
'terminalOutcome',
|
|
@@ -189,6 +191,10 @@ function validateRunRecord(value, field) {
|
|
|
189
191
|
validateProofExecution(value.proofExecution, `${field}.proofExecution`);
|
|
190
192
|
if (hasOwn(value, 'proofReceipt'))
|
|
191
193
|
validateReceipt(value.proofReceipt, `${field}.proofReceipt`);
|
|
194
|
+
if (hasOwn(value, 'implementationResult'))
|
|
195
|
+
validateImplementationResult(value.implementationResult, `${field}.implementationResult`);
|
|
196
|
+
if (hasOwn(value, 'terminalNotifications'))
|
|
197
|
+
validateTerminalNotifications(value.terminalNotifications, `${field}.terminalNotifications`);
|
|
192
198
|
if (hasOwn(value, 'pendingEffect'))
|
|
193
199
|
validatePendingEffect(value.pendingEffect, `${field}.pendingEffect`);
|
|
194
200
|
if (hasOwn(value, 'outcomeEvidenceId'))
|
|
@@ -253,6 +259,26 @@ function validateRunRecord(value, field) {
|
|
|
253
259
|
throw new Error(`${field} terminal lifecycle requires terminalOutcome`);
|
|
254
260
|
if (terminal && value.terminalOutcome.status !== value.lifecycle)
|
|
255
261
|
throw new Error(`${field} terminalOutcome does not match lifecycle`);
|
|
262
|
+
if (hasOwn(value, 'terminalNotifications')) {
|
|
263
|
+
if (!terminal || value.lifecycle === 'transport-failed'
|
|
264
|
+
|| value.terminalNotifications.report.outcome !== value.lifecycle) {
|
|
265
|
+
throw new Error(`${field} terminal notification outcome does not match lifecycle`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const terminalDeliveryEffect = value.pendingEffect;
|
|
269
|
+
if (terminalDeliveryEffect?.kind === 'terminal-comment' || terminalDeliveryEffect?.kind === 'terminal-labels') {
|
|
270
|
+
if (!hasOwn(value, 'terminalNotifications'))
|
|
271
|
+
throw new Error(`${field} terminal delivery effect requires notifications`);
|
|
272
|
+
const notifications = value.terminalNotifications;
|
|
273
|
+
const delivery = terminalDeliveryEffect.kind === 'terminal-comment' ? notifications.comment : notifications.labels;
|
|
274
|
+
if (terminalDeliveryEffect.issueNumber !== value.issueNumber
|
|
275
|
+
|| terminalDeliveryEffect.outcome !== notifications.report.outcome
|
|
276
|
+
|| delivery.status !== 'pending'
|
|
277
|
+
|| terminalDeliveryEffect.attempt !== delivery.attempts + 1
|
|
278
|
+
|| terminalDeliveryEffect.attempt > 3) {
|
|
279
|
+
throw new Error(`${field} terminal delivery effect does not match pending notification state`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
256
282
|
if (value.lifecycle === 'proving' && (!hasOwn(value, 'checkedChangeSha256') || !hasOwn(value, 'proofId')
|
|
257
283
|
|| value.checks.some((check) => check.status === 'failed'))) {
|
|
258
284
|
throw new Error(`${field} proving requires passed checks and checked change proof identity`);
|
|
@@ -264,7 +290,8 @@ function validateRunRecord(value, field) {
|
|
|
264
290
|
throw new Error(`${field} safe-halt requires an active attempt`);
|
|
265
291
|
const reviewReadyEffect = value.pendingEffect?.kind;
|
|
266
292
|
const reviewReadyEffectAllowed = reviewReadyEffect === undefined
|
|
267
|
-
|| ['review-activation-labels', '
|
|
293
|
+
|| ['review-activation-labels', 'continuation-worktree-create', 'outcome-evidence',
|
|
294
|
+
'terminal-comment', 'terminal-labels'].includes(reviewReadyEffect);
|
|
268
295
|
if (value.lifecycle === 'review-ready' && (!hasOwn(value, 'proofReceipt') || !reviewReadyEffectAllowed)) {
|
|
269
296
|
throw new Error(`${field} review-ready requires proofReceipt and only a review continuation or terminal effect`);
|
|
270
297
|
}
|
|
@@ -275,9 +302,10 @@ function validateRunRecord(value, field) {
|
|
|
275
302
|
&& hasOwn(value, 'candidateBinding')
|
|
276
303
|
&& (value.pendingEffect?.kind === 'initial-commit' || value.pendingEffect?.kind === 'review-update-commit');
|
|
277
304
|
const settlingOutcomeEvidence = value.pendingEffect?.kind === 'outcome-evidence';
|
|
305
|
+
const settlingTerminalNotification = reviewReadyEffect === 'terminal-comment' || reviewReadyEffect === 'terminal-labels';
|
|
278
306
|
if (terminal && hasOwn(value, 'pendingEffect') && value.lifecycle !== 'transport-failed'
|
|
279
307
|
&& !(value.lifecycle === 'review-ready' && reviewReadyEffectAllowed)
|
|
280
|
-
&& !retainedCandidateEffect && !settlingOutcomeEvidence)
|
|
308
|
+
&& !retainedCandidateEffect && !settlingOutcomeEvidence && !settlingTerminalNotification)
|
|
281
309
|
throw new Error(`${field} terminal lifecycle cannot retain pending effect`);
|
|
282
310
|
if (value.lifecycle === 'transport-failed' && hasOwn(value, 'pendingEffect')
|
|
283
311
|
&& !settlingOutcomeEvidence
|
|
@@ -390,7 +418,7 @@ function validatePendingEffect(value, field) {
|
|
|
390
418
|
throw new Error(`${field} is invalid`);
|
|
391
419
|
const kind = value.kind;
|
|
392
420
|
const identity = ['effectId', 'kind'];
|
|
393
|
-
if (kind === 'claim-labels'
|
|
421
|
+
if (kind === 'claim-labels') {
|
|
394
422
|
assertExactObject(value, [...identity, 'issueNumber', 'expected'], field);
|
|
395
423
|
assertPositiveInteger(value.issueNumber, `${field}.issueNumber`);
|
|
396
424
|
validateStringArray(value.expected, `${field}.expected`);
|
|
@@ -414,28 +442,27 @@ function validatePendingEffect(value, field) {
|
|
|
414
442
|
assertNonEmptyString(value[key], `${field}.${key}`);
|
|
415
443
|
assertPositiveInteger(value.issueNumber, `${field}.issueNumber`);
|
|
416
444
|
}
|
|
417
|
-
else if (kind === 'claim-comment'
|
|
445
|
+
else if (kind === 'claim-comment') {
|
|
418
446
|
assertExactObject(value, [...identity, 'issueNumber', 'marker', 'bodySha256'], field);
|
|
419
447
|
assertPositiveInteger(value.issueNumber, `${field}.issueNumber`);
|
|
420
448
|
assertNonEmptyString(value.marker, `${field}.marker`);
|
|
421
449
|
assertSha256(value.bodySha256, `${field}.bodySha256`);
|
|
422
450
|
}
|
|
423
|
-
else if (kind === '
|
|
424
|
-
assertExactObject(value, [
|
|
425
|
-
...identity, 'issueNumber', 'marker', 'bodySha256', 'blockKind', 'resumable', 'evidenceCode',
|
|
426
|
-
...(hasOwn(value, 'blocker') ? ['blocker'] : []),
|
|
427
|
-
], field);
|
|
451
|
+
else if (kind === 'terminal-comment') {
|
|
452
|
+
assertExactObject(value, [...identity, 'issueNumber', 'marker', 'bodySha256', 'outcome', 'attempt'], field);
|
|
428
453
|
assertPositiveInteger(value.issueNumber, `${field}.issueNumber`);
|
|
429
454
|
assertNonEmptyString(value.marker, `${field}.marker`);
|
|
430
455
|
assertSha256(value.bodySha256, `${field}.bodySha256`);
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
456
|
+
assertTerminalNotificationOutcome(value.outcome, `${field}.outcome`);
|
|
457
|
+
assertPositiveInteger(value.attempt, `${field}.attempt`);
|
|
458
|
+
}
|
|
459
|
+
else if (kind === 'terminal-labels') {
|
|
460
|
+
assertExactObject(value, [...identity, 'issueNumber', 'add', 'remove', 'outcome', 'attempt'], field);
|
|
461
|
+
assertPositiveInteger(value.issueNumber, `${field}.issueNumber`);
|
|
462
|
+
validateStringArray(value.add, `${field}.add`);
|
|
463
|
+
validateStringArray(value.remove, `${field}.remove`);
|
|
464
|
+
assertTerminalNotificationOutcome(value.outcome, `${field}.outcome`);
|
|
465
|
+
assertPositiveInteger(value.attempt, `${field}.attempt`);
|
|
439
466
|
}
|
|
440
467
|
else if (kind === 'review-activation-labels') {
|
|
441
468
|
assertExactObject(value, [...identity, 'issueNumber', 'batchId', 'expected'], field);
|
|
@@ -478,21 +505,6 @@ function validatePendingEffect(value, field) {
|
|
|
478
505
|
assertGitSha(value.epochHeadSha, `${field}.epochHeadSha`);
|
|
479
506
|
validateStringArray(value.expected, `${field}.expected`);
|
|
480
507
|
}
|
|
481
|
-
else if (kind === 'blocked-labels') {
|
|
482
|
-
assertExactObject(value, [
|
|
483
|
-
...identity, 'issueNumber', 'expected', 'blockKind', 'resumable', 'evidenceCode',
|
|
484
|
-
...(hasOwn(value, 'blocker') ? ['blocker'] : []),
|
|
485
|
-
], field);
|
|
486
|
-
assertPositiveInteger(value.issueNumber, `${field}.issueNumber`);
|
|
487
|
-
validateStringArray(value.expected, `${field}.expected`);
|
|
488
|
-
if (!['external', 'safety', 'decision-delta', 'out-of-scope', 'authority-boundary'].includes(value.blockKind))
|
|
489
|
-
throw new Error(`${field}.blockKind is invalid`);
|
|
490
|
-
if (typeof value.resumable !== 'boolean')
|
|
491
|
-
throw new Error(`${field}.resumable is invalid`);
|
|
492
|
-
assertNonEmptyString(value.evidenceCode, `${field}.evidenceCode`);
|
|
493
|
-
if (hasOwn(value, 'blocker'))
|
|
494
|
-
validateBlockerDetail(value.blocker, `${field}.blocker`);
|
|
495
|
-
}
|
|
496
508
|
else if (kind === 'worktree-create') {
|
|
497
509
|
assertExactObject(value, [...identity, 'worktreePath', 'branchName', 'baseBranch', 'baseSha'], field);
|
|
498
510
|
assertAbsolutePath(value.worktreePath, `${field}.worktreePath`);
|
|
@@ -530,6 +542,66 @@ function validatePendingEffect(value, field) {
|
|
|
530
542
|
if (effectId !== sha256(canonicalJson(payload)))
|
|
531
543
|
throw new Error(`${field}.effectId does not match its payload`);
|
|
532
544
|
}
|
|
545
|
+
function validateImplementationResult(value, field) {
|
|
546
|
+
assertExactObject(value, ['summary', 'residualRisks'], field);
|
|
547
|
+
assertNonEmptyString(value.summary, `${field}.summary`);
|
|
548
|
+
validateStringList(value.residualRisks, `${field}.residualRisks`);
|
|
549
|
+
}
|
|
550
|
+
function validateTerminalNotifications(value, field) {
|
|
551
|
+
assertExactObject(value, ['version', 'commentCutoff', 'report', 'comment', 'labels'], field);
|
|
552
|
+
if (value.version !== 1)
|
|
553
|
+
throw new Error(`${field}.version is invalid`);
|
|
554
|
+
assertExactObject(value.commentCutoff, ['commentId', 'observedAt'], `${field}.commentCutoff`);
|
|
555
|
+
if (value.commentCutoff.commentId !== null)
|
|
556
|
+
assertNonEmptyString(value.commentCutoff.commentId, `${field}.commentCutoff.commentId`);
|
|
557
|
+
assertTimestamp(value.commentCutoff.observedAt, `${field}.commentCutoff.observedAt`);
|
|
558
|
+
validateTerminalReport(value.report, `${field}.report`);
|
|
559
|
+
validateTerminalDelivery(value.comment, `${field}.comment`);
|
|
560
|
+
validateTerminalDelivery(value.labels, `${field}.labels`);
|
|
561
|
+
}
|
|
562
|
+
function validateTerminalReport(value, field) {
|
|
563
|
+
const pullRequestUrl = hasOwn(value, 'pullRequestUrl') ? ['pullRequestUrl'] : [];
|
|
564
|
+
const blocker = hasOwn(value, 'blocker') ? ['blocker'] : [];
|
|
565
|
+
assertExactObject(value, [
|
|
566
|
+
'version', 'outcome', 'summary', ...pullRequestUrl, 'passedChecks', 'publishableProof', 'unverified',
|
|
567
|
+
'risks', 'reviewFocus', 'nextAction', ...blocker,
|
|
568
|
+
], field);
|
|
569
|
+
if (value.version !== 1)
|
|
570
|
+
throw new Error(`${field}.version is invalid`);
|
|
571
|
+
assertTerminalNotificationOutcome(value.outcome, `${field}.outcome`);
|
|
572
|
+
assertNonEmptyString(value.summary, `${field}.summary`);
|
|
573
|
+
if (hasOwn(value, 'pullRequestUrl'))
|
|
574
|
+
assertNonEmptyString(value.pullRequestUrl, `${field}.pullRequestUrl`);
|
|
575
|
+
for (const key of ['passedChecks', 'publishableProof', 'unverified', 'risks', 'reviewFocus']) {
|
|
576
|
+
validateStringList(value[key], `${field}.${key}`);
|
|
577
|
+
}
|
|
578
|
+
assertNonEmptyString(value.nextAction, `${field}.nextAction`);
|
|
579
|
+
if (hasOwn(value, 'blocker')) {
|
|
580
|
+
assertExactObject(value.blocker, ['kind', 'resumable', 'attempted'], `${field}.blocker`);
|
|
581
|
+
assertNonEmptyString(value.blocker.kind, `${field}.blocker.kind`);
|
|
582
|
+
if (typeof value.blocker.resumable !== 'boolean')
|
|
583
|
+
throw new Error(`${field}.blocker.resumable is invalid`);
|
|
584
|
+
validateStringList(value.blocker.attempted, `${field}.blocker.attempted`);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
function validateTerminalDelivery(value, field) {
|
|
588
|
+
const diagnostic = hasOwn(value, 'diagnostic') ? ['diagnostic'] : [];
|
|
589
|
+
assertExactObject(value, ['status', 'attempts', ...diagnostic], field);
|
|
590
|
+
if (!['pending', 'delivered', 'exhausted'].includes(value.status))
|
|
591
|
+
throw new Error(`${field}.status is invalid`);
|
|
592
|
+
if (!Number.isSafeInteger(value.attempts) || value.attempts < 0 || value.attempts > 3) {
|
|
593
|
+
throw new Error(`${field}.attempts is invalid`);
|
|
594
|
+
}
|
|
595
|
+
if (hasOwn(value, 'diagnostic'))
|
|
596
|
+
assertNonEmptyString(value.diagnostic, `${field}.diagnostic`);
|
|
597
|
+
if (value.status === 'delivered' && hasOwn(value, 'diagnostic'))
|
|
598
|
+
throw new Error(`${field}.diagnostic is invalid`);
|
|
599
|
+
}
|
|
600
|
+
function assertTerminalNotificationOutcome(value, field) {
|
|
601
|
+
if (!['review-ready', 'blocked', 'internal-error', 'cancelled'].includes(value)) {
|
|
602
|
+
throw new Error(`${field} is invalid`);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
533
605
|
function validateTerminalOutcome(value, field) {
|
|
534
606
|
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
535
607
|
throw new Error(`${field} is invalid`);
|
|
@@ -671,8 +743,8 @@ function validateReviewFeedbackRunInvariant(run, field) {
|
|
|
671
743
|
|| batch.priorPublishedHeadSha !== feedback.previousPublishedHeadSha)) {
|
|
672
744
|
throw new Error(`${field}.reviewFeedback active batch identity binding is invalid`);
|
|
673
745
|
}
|
|
674
|
-
const
|
|
675
|
-
|
|
746
|
+
const retainedQuiescentHistory = !batch && (['review-ready', 'blocked', 'cancelled', 'internal-error'].includes(run.lifecycle)
|
|
747
|
+
|| run.pendingEffect?.kind === 'outcome-evidence');
|
|
676
748
|
if (!batch && run.lifecycle !== 'review-ready' && !retainedQuiescentHistory) {
|
|
677
749
|
throw new Error(`${field}.reviewFeedback quiescent data requires review-ready lifecycle`);
|
|
678
750
|
}
|