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.
Files changed (45) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/src/v2/adapters/gh-issue-adapter.js +2 -0
  3. package/dist/src/v2/adapters/gh-issue-adapter.js.map +1 -1
  4. package/dist/src/v2/containment.d.ts.map +1 -1
  5. package/dist/src/v2/containment.js +2 -1
  6. package/dist/src/v2/containment.js.map +1 -1
  7. package/dist/src/v2/implementation-report.d.ts +5 -1
  8. package/dist/src/v2/implementation-report.d.ts.map +1 -1
  9. package/dist/src/v2/implementation-report.js +46 -1
  10. package/dist/src/v2/implementation-report.js.map +1 -1
  11. package/dist/src/v2/pending-effect-settlement.d.ts +2 -2
  12. package/dist/src/v2/pending-effect-settlement.d.ts.map +1 -1
  13. package/dist/src/v2/pending-effect-settlement.js +2 -2
  14. package/dist/src/v2/pending-effect-settlement.js.map +1 -1
  15. package/dist/src/v2/review-feedback-coordinator.d.ts +7 -1
  16. package/dist/src/v2/review-feedback-coordinator.d.ts.map +1 -1
  17. package/dist/src/v2/review-feedback-coordinator.js +84 -4
  18. package/dist/src/v2/review-feedback-coordinator.js.map +1 -1
  19. package/dist/src/v2/review-feedback.d.ts +14 -2
  20. package/dist/src/v2/review-feedback.d.ts.map +1 -1
  21. package/dist/src/v2/review-feedback.js +74 -6
  22. package/dist/src/v2/review-feedback.js.map +1 -1
  23. package/dist/src/v2/run-issue.d.ts +16 -7
  24. package/dist/src/v2/run-issue.d.ts.map +1 -1
  25. package/dist/src/v2/run-issue.js +606 -316
  26. package/dist/src/v2/run-issue.js.map +1 -1
  27. package/dist/src/v2/run-state-projections.d.ts +0 -13
  28. package/dist/src/v2/run-state-projections.d.ts.map +1 -1
  29. package/dist/src/v2/run-state-projections.js +0 -20
  30. package/dist/src/v2/run-state-projections.js.map +1 -1
  31. package/dist/src/v2/run-store.d.ts +51 -30
  32. package/dist/src/v2/run-store.d.ts.map +1 -1
  33. package/dist/src/v2/run-store.js +106 -34
  34. package/dist/src/v2/run-store.js.map +1 -1
  35. package/dist/src/v2/runtime.d.ts +10 -0
  36. package/dist/src/v2/runtime.d.ts.map +1 -1
  37. package/dist/src/v2/runtime.js +23 -14
  38. package/dist/src/v2/runtime.js.map +1 -1
  39. package/dist/src/v2/validation-progression.d.ts +1 -1
  40. package/dist/src/v2/validation-progression.d.ts.map +1 -1
  41. package/dist/src/v2/validation-progression.js.map +1 -1
  42. package/internal-workflow/manifest.json +1 -1
  43. package/internal-workflow/operations/implementation/SKILL.md +6 -1
  44. package/internal-workflow/schemas/implementation-report-v1.json +1 -1
  45. 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;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,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,kBAAkB,CAAC,MAAM,EAAE,eAAe;;;;;EAKzD;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,eAAe,GACxC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAAA;CAAE,CAUnF;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;;;;;;;;;;;;;;;+BArD1C,CAAC;;;;;;;;;;;;EAwDf;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"}
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":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAajD,MAAM,kBAAkB,GAAG,gHAAgH,CAAC;AAE5I,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC5D,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAyB;IAClD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,6BAA6B,CACpC,OAAoD,EAAE,WAAmB,EAAE,UAAkB;IAE7F,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAAE,OAAO,SAAS,CAAC;IACzG,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACpF,OAAO,GAAG,OAAO,CAAC,iBAAiB,SAAS,OAAO,CAAC,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAiE,EAAE,WAAmB,EAAE,UAAkB;IAE1G,MAAM,OAAO,GAAG,6BAA6B,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAChF,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,eAAe,OAAO,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAA6C,EAAE,MAAiB;IAC1G,MAAM,OAAO,GAAG,6BAA6B,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9F,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACzH,IAAI,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAyB,EAAE,MAAc;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,KAAK;YAAE,SAAS;QAC3D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAoC,EAAE,KAAuB;IACvG,OAAO;QACL,GAAG,eAAe,CAAC,QAAQ,CAAC;QAC5B,QAAQ,EAAE;YACR,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACzD,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;SACtE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAuB;IACnD,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC9E,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM;QACzF,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC9E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAoB;IACtD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACvI,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAE,MAAM;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC/E,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/H,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtI,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,WAAmB,EAAE,UAAkB;IACjF,OAAO,+BAA+B,KAAK,2CAA2C,WAAW,eAAe,UAAU,EAAE,CAAC;AAC/H,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAuB;IACxD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;QAChF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;KACrF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAgB,EAAE,MAAuB;IAEzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACnE,IAAI,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACpH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAc,EAAE,KAAe;IACzD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAmC;IACpE,OAAO,OAAO,EAAE,KAAK,KAAK,UAAU,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,OAAkD;IACxG,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;QACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAsB,CAAC,CAAC;QAChD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/G,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAsD,EACtD,KAAuD;IAEvD,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAA2B;IACvD,IAAI,OAAO,CAAC,MAAM,KAAK,gBAAgB;QAAE,OAAO,EAAE,MAAM,EAAE,gBAAyB,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;IAC1H,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAA2E;IAC9G,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;QAClC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU;KACvG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB;IACpC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC"}
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' | 'handoff-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: 'final-labels';
41
+ kind: 'terminal-comment';
57
42
  issueNumber: number;
58
- expected: string[];
43
+ marker: string;
44
+ bodySha256: string;
45
+ outcome: 'review-ready' | 'blocked' | 'internal-error' | 'cancelled';
46
+ attempt: number;
59
47
  } | {
60
- kind: 'blocked-labels';
48
+ kind: 'terminal-labels';
61
49
  issueNumber: number;
62
- expected: string[];
63
- blockKind: 'external' | 'safety' | 'decision-delta' | 'out-of-scope' | 'authority-boundary';
64
- resumable: boolean;
65
- evidenceCode: string;
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":"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"}
1
+ {"version":3,"file":"run-store.d.ts","sourceRoot":"","sources":["../../../src/v2/run-store.ts"],"names":[],"mappings":"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"}
@@ -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', 'blocked-comment', 'blocked-labels', 'continuation-worktree-create', 'outcome-evidence'].includes(reviewReadyEffect);
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' || kind === 'final-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' || kind === 'handoff-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 === 'blocked-comment') {
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
- if (!['external', 'safety', 'decision-delta', 'out-of-scope', 'authority-boundary'].includes(value.blockKind)) {
432
- throw new Error(`${field}.blockKind is invalid`);
433
- }
434
- if (typeof value.resumable !== 'boolean')
435
- throw new Error(`${field}.resumable is invalid`);
436
- assertNonEmptyString(value.evidenceCode, `${field}.evidenceCode`);
437
- if (hasOwn(value, 'blocker'))
438
- validateBlockerDetail(value.blocker, `${field}.blocker`);
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 blockedPublication = ['blocked-comment', 'blocked-labels', 'outcome-evidence'].includes(run.pendingEffect?.kind ?? '');
675
- const retainedQuiescentHistory = !batch && ((run.lifecycle === 'blocked' && run.terminalOutcome?.status === 'blocked') || blockedPublication);
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
  }