@straiffi/archon 1.10.1 → 1.10.2

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 (170) hide show
  1. package/dist/client/assets/ActivityView-CdDT5tgr.js +1 -0
  2. package/dist/client/assets/{GitHubActionsDialog-BABPYwJP.js → GitHubActionsDialog-NdYtgMhg.js} +1 -1
  3. package/dist/client/assets/{VerificationDialog-LN87YY0r.js → VerificationDialog-BfIKtVjt.js} +1 -1
  4. package/dist/client/assets/{architectureDiagram-3BPJPVTR-DBXhcjPI.js → architectureDiagram-3BPJPVTR-C4zoWnXM.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-GPEHLZMM-c3auwNH7.js → blockDiagram-GPEHLZMM-ZhRwV8ma.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-AAUBKEIU-DH2YznEQ.js → c4Diagram-AAUBKEIU-CA2USxCJ.js} +1 -1
  7. package/dist/client/assets/channel-C4I-VlJu.js +1 -0
  8. package/dist/client/assets/{chunk-2J33WTMH-D0_MoyXZ.js → chunk-2J33WTMH-CY32Brnt.js} +1 -1
  9. package/dist/client/assets/{chunk-3OPIFGDE-DLvSp1DN.js → chunk-3OPIFGDE-H70UH7rH.js} +1 -1
  10. package/dist/client/assets/{chunk-5ZQYHXKU-B4sX8Htk.js → chunk-5ZQYHXKU-DC1dllSt.js} +1 -1
  11. package/dist/client/assets/{chunk-727SXJPM-CkdnShG1.js → chunk-727SXJPM-DVIgI7hM.js} +1 -1
  12. package/dist/client/assets/{chunk-AQP2D5EJ-BdPfgkcs.js → chunk-AQP2D5EJ-gwSYEPou.js} +1 -1
  13. package/dist/client/assets/{chunk-CSCIHK7Q-CK-DpVF6.js → chunk-CSCIHK7Q-Z1cfABPc.js} +1 -1
  14. package/dist/client/assets/{chunk-KSCS5N6A-DSbTWVl2.js → chunk-KSCS5N6A-DFoW6dtq.js} +1 -1
  15. package/dist/client/assets/{chunk-L5ZTLDWV-DuQ4EPLl.js → chunk-L5ZTLDWV-CmQbbP8b.js} +1 -1
  16. package/dist/client/assets/{chunk-LZXEDZCA-CtpoXWMY.js → chunk-LZXEDZCA-Ba16nX-R.js} +2 -2
  17. package/dist/client/assets/{chunk-ND2GUHAM-CDfNOP6o.js → chunk-ND2GUHAM-Bc7u1Zqm.js} +1 -1
  18. package/dist/client/assets/{chunk-NZK2D7GU-s6ReY4ev.js → chunk-NZK2D7GU-DNXYx7JX.js} +1 -1
  19. package/dist/client/assets/{chunk-O5CBEL6O-DxqYGKhS.js → chunk-O5CBEL6O-Ba00cuZ5.js} +1 -1
  20. package/dist/client/assets/{chunk-WU5MYG2G-BvrhxyV8.js → chunk-WU5MYG2G-SJ_ny5dU.js} +1 -1
  21. package/dist/client/assets/classDiagram-4FO5ZUOK-Ca3KxBnW.js +1 -0
  22. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CSpMessw.js +1 -0
  23. package/dist/client/assets/{dagre-BM42HDAG-DEK_rftr.js → dagre-BM42HDAG-CL2dKbj9.js} +1 -1
  24. package/dist/client/assets/{diagram-2AECGRRQ-CpobcZnv.js → diagram-2AECGRRQ-DQq1qZ0l.js} +1 -1
  25. package/dist/client/assets/{diagram-5GNKFQAL-zL1D1L_8.js → diagram-5GNKFQAL-Zf0YQuRe.js} +1 -1
  26. package/dist/client/assets/{diagram-KO2AKTUF-gyW-Vc7c.js → diagram-KO2AKTUF-DcUxL9SG.js} +1 -1
  27. package/dist/client/assets/{diagram-LMA3HP47-DDEYc8sh.js → diagram-LMA3HP47-BAIixEu7.js} +1 -1
  28. package/dist/client/assets/{diagram-OG6HWLK6-BtUrfJnE.js → diagram-OG6HWLK6-Dhhjm84p.js} +1 -1
  29. package/dist/client/assets/{erDiagram-TEJ5UH35-qGrmpmmk.js → erDiagram-TEJ5UH35-BcQOacBP.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-I6XJVG4X-DO1Nm1FA.js → flowDiagram-I6XJVG4X-BZIJqLp3.js} +1 -1
  31. package/dist/client/assets/{ganttDiagram-6RSMTGT7-DGuMVCAc.js → ganttDiagram-6RSMTGT7-DFC6qgrY.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CehPAc8-.js → gitGraphDiagram-PVQCEYII-Ds0nwSU0.js} +1 -1
  33. package/dist/client/assets/index-Bg3l17L3.css +2 -0
  34. package/dist/client/assets/index-D_KmViSu.js +276 -0
  35. package/dist/client/assets/{infoDiagram-5YYISTIA-BkRaMDId.js → infoDiagram-5YYISTIA-DfDrR5Mz.js} +1 -1
  36. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-B45ubODJ.js → ishikawaDiagram-YF4QCWOH-B2v4Byji.js} +1 -1
  37. package/dist/client/assets/{journeyDiagram-JHISSGLW-BLxrlitK.js → journeyDiagram-JHISSGLW-CO6laklO.js} +1 -1
  38. package/dist/client/assets/{kanban-definition-UN3LZRKU-DmyeJDyy.js → kanban-definition-UN3LZRKU-BziFO199.js} +1 -1
  39. package/dist/client/assets/{line-BhwjsX6t.js → line-Vb0A8-Oe.js} +1 -1
  40. package/dist/client/assets/{mermaid-parser.core-CPvivy_u.js → mermaid-parser.core-Bm3Xv0Zt.js} +1 -1
  41. package/dist/client/assets/{mermaid.core-Dr0kld-g.js → mermaid.core-DXBRp0XG.js} +3 -3
  42. package/dist/client/assets/{mindmap-definition-RKZ34NQL-dfudPzBR.js → mindmap-definition-RKZ34NQL-4GueJvPT.js} +1 -1
  43. package/dist/client/assets/{pieDiagram-4H26LBE5-BhsIQVNX.js → pieDiagram-4H26LBE5-Djy0sVJR.js} +1 -1
  44. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CAKxScLD.js → quadrantDiagram-W4KKPZXB-3rWAi4K5.js} +1 -1
  45. package/dist/client/assets/{requirementDiagram-4Y6WPE33-Br6jIbke.js → requirementDiagram-4Y6WPE33-D7-WCnjH.js} +1 -1
  46. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BqujNgnY.js → sankeyDiagram-5OEKKPKP-B4-3BUQ2.js} +1 -1
  47. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-Dr_VM_ei.js → sequenceDiagram-3UESZ5HK-DCWomuSc.js} +1 -1
  48. package/dist/client/assets/{stateDiagram-AJRCARHV-CDbSbbTW.js → stateDiagram-AJRCARHV-DpsWWFaO.js} +1 -1
  49. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BE_IAuYt.js +1 -0
  50. package/dist/client/assets/{timeline-definition-PNZ67QCA-CnuLuWDs.js → timeline-definition-PNZ67QCA-B0Mh4MHF.js} +1 -1
  51. package/dist/client/assets/{vennDiagram-CIIHVFJN-CVAhxdBZ.js → vennDiagram-CIIHVFJN-Dpxr8LTG.js} +1 -1
  52. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-Dmczey27.js → wardleyDiagram-YWT4CUSO-BdAz5ERd.js} +1 -1
  53. package/dist/client/assets/{xychartDiagram-2RQKCTM6-Bl6JGLCU.js → xychartDiagram-2RQKCTM6-BV9Ah-jk.js} +1 -1
  54. package/dist/client/index.html +2 -2
  55. package/dist/server/db.js +640 -0
  56. package/dist/server/db.js.map +1 -1
  57. package/dist/server/index.js +787 -124
  58. package/dist/server/index.js.map +1 -1
  59. package/dist/server/lib/agentCatalog.js +35 -0
  60. package/dist/server/lib/agentCatalog.js.map +1 -0
  61. package/dist/server/lib/agentModelConfig.js +151 -0
  62. package/dist/server/lib/agentModelConfig.js.map +1 -0
  63. package/dist/server/lib/agentRuns.js +1 -0
  64. package/dist/server/lib/agentRuns.js.map +1 -1
  65. package/dist/server/lib/automationCheckGate.js +98 -9
  66. package/dist/server/lib/automationCheckGate.js.map +1 -1
  67. package/dist/server/lib/automationLoopAgentEvidence.js +42 -0
  68. package/dist/server/lib/automationLoopAgentEvidence.js.map +1 -0
  69. package/dist/server/lib/automationLoopProjection.js +339 -0
  70. package/dist/server/lib/automationLoopProjection.js.map +1 -0
  71. package/dist/server/lib/automationProgression.js +115 -6
  72. package/dist/server/lib/automationProgression.js.map +1 -1
  73. package/dist/server/lib/automationReconciliation.js +27 -11
  74. package/dist/server/lib/automationReconciliation.js.map +1 -1
  75. package/dist/server/lib/automationResumeDecision.js +55 -15
  76. package/dist/server/lib/automationResumeDecision.js.map +1 -1
  77. package/dist/server/lib/automationReviewGate.js +352 -26
  78. package/dist/server/lib/automationReviewGate.js.map +1 -1
  79. package/dist/server/lib/buildFlow.js +12 -0
  80. package/dist/server/lib/buildFlow.js.map +1 -1
  81. package/dist/server/lib/bundleReviewOperations.js +40 -23
  82. package/dist/server/lib/bundleReviewOperations.js.map +1 -1
  83. package/dist/server/lib/chatOperations.js +26 -4
  84. package/dist/server/lib/chatOperations.js.map +1 -1
  85. package/dist/server/lib/checkAutoFix.js +5 -4
  86. package/dist/server/lib/checkAutoFix.js.map +1 -1
  87. package/dist/server/lib/checkAutoFixDetails.js +54 -9
  88. package/dist/server/lib/checkAutoFixDetails.js.map +1 -1
  89. package/dist/server/lib/checkGateEvaluations.js +6 -1
  90. package/dist/server/lib/checkGateEvaluations.js.map +1 -1
  91. package/dist/server/lib/checkRepair.js +30 -0
  92. package/dist/server/lib/checkRepair.js.map +1 -1
  93. package/dist/server/lib/claudeAgentProvider.js +19 -0
  94. package/dist/server/lib/claudeAgentProvider.js.map +1 -1
  95. package/dist/server/lib/executionRuns.js +17 -3
  96. package/dist/server/lib/executionRuns.js.map +1 -1
  97. package/dist/server/lib/executionTimeline.js +3 -0
  98. package/dist/server/lib/executionTimeline.js.map +1 -1
  99. package/dist/server/lib/lightweightPrompt.js +13 -40
  100. package/dist/server/lib/lightweightPrompt.js.map +1 -1
  101. package/dist/server/lib/mobileAccess.js +47 -3
  102. package/dist/server/lib/mobileAccess.js.map +1 -1
  103. package/dist/server/lib/modelResolutionErrors.js +24 -0
  104. package/dist/server/lib/modelResolutionErrors.js.map +1 -0
  105. package/dist/server/lib/models.js +9 -9
  106. package/dist/server/lib/models.js.map +1 -1
  107. package/dist/server/lib/projectAutoConfig.js +15 -52
  108. package/dist/server/lib/projectAutoConfig.js.map +1 -1
  109. package/dist/server/lib/projectMemoryScan.js +15 -9
  110. package/dist/server/lib/projectMemoryScan.js.map +1 -1
  111. package/dist/server/lib/projects.js +59 -4
  112. package/dist/server/lib/projects.js.map +1 -1
  113. package/dist/server/lib/reviewRepairCompletion.js +126 -0
  114. package/dist/server/lib/reviewRepairCompletion.js.map +1 -0
  115. package/dist/server/lib/reviewRepairIterationRecords.js +149 -0
  116. package/dist/server/lib/reviewRepairIterationRecords.js.map +1 -0
  117. package/dist/server/lib/reviewRepairIterations.js +590 -0
  118. package/dist/server/lib/reviewRepairIterations.js.map +1 -0
  119. package/dist/server/lib/reviewRepairReconciliation.js +588 -0
  120. package/dist/server/lib/reviewRepairReconciliation.js.map +1 -0
  121. package/dist/server/lib/reviewerConfig.js +18 -7
  122. package/dist/server/lib/reviewerConfig.js.map +1 -1
  123. package/dist/server/lib/run.js +7 -2
  124. package/dist/server/lib/run.js.map +1 -1
  125. package/dist/server/lib/specArtifact.js +1 -1
  126. package/dist/server/lib/specArtifact.js.map +1 -1
  127. package/dist/server/lib/specGraphFeature.js +2 -2
  128. package/dist/server/lib/specGraphFeature.js.map +1 -1
  129. package/dist/server/lib/specOperations.js +26 -4
  130. package/dist/server/lib/specOperations.js.map +1 -1
  131. package/dist/server/lib/specRepositoryEvidenceFormatting.js +2 -2
  132. package/dist/server/lib/specRepositoryEvidenceFormatting.js.map +1 -1
  133. package/dist/server/lib/specRepositoryImpact.js +3 -3
  134. package/dist/server/lib/specRepositoryImpact.js.map +1 -1
  135. package/dist/server/lib/specReviewContext.js +7 -1
  136. package/dist/server/lib/specReviewContext.js.map +1 -1
  137. package/dist/server/lib/specReviewOperations.js +20 -7
  138. package/dist/server/lib/specReviewOperations.js.map +1 -1
  139. package/dist/server/lib/specSnapshotEvidence.js +3 -3
  140. package/dist/server/lib/specSnapshotEvidence.js.map +1 -1
  141. package/dist/server/lib/ticketAutomation.js +9 -11
  142. package/dist/server/lib/ticketAutomation.js.map +1 -1
  143. package/dist/server/lib/ticketAutomationCommit.js +21 -11
  144. package/dist/server/lib/ticketAutomationCommit.js.map +1 -1
  145. package/dist/server/lib/ticketFollowUpOperations.js +3 -1
  146. package/dist/server/lib/ticketFollowUpOperations.js.map +1 -1
  147. package/dist/server/lib/ticketSettingsOperations.js +9 -0
  148. package/dist/server/lib/ticketSettingsOperations.js.map +1 -1
  149. package/dist/server/lib/ticketWorkflowOperations.js +2 -6
  150. package/dist/server/lib/ticketWorkflowOperations.js.map +1 -1
  151. package/dist/server/lib/tickets.js +16 -6
  152. package/dist/server/lib/tickets.js.map +1 -1
  153. package/dist/server/lib/types.js +45 -0
  154. package/dist/server/lib/types.js.map +1 -1
  155. package/dist/server/workers/followUp.js +76 -1
  156. package/dist/server/workers/followUp.js.map +1 -1
  157. package/dist/server/workers/review.js +292 -60
  158. package/dist/server/workers/review.js.map +1 -1
  159. package/dist/server/workers/specReview.js +17 -8
  160. package/dist/server/workers/specReview.js.map +1 -1
  161. package/dist/server/workers/specSession.js +33 -23
  162. package/dist/server/workers/specSession.js.map +1 -1
  163. package/package.json +1 -1
  164. package/dist/client/assets/ActivityView-C5OrI0uK.js +0 -1
  165. package/dist/client/assets/channel-CYsnLOcX.js +0 -1
  166. package/dist/client/assets/classDiagram-4FO5ZUOK-CElk31Q4.js +0 -1
  167. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-lnAahwmt.js +0 -1
  168. package/dist/client/assets/index-1CokwSFm.css +0 -2
  169. package/dist/client/assets/index-DtefHOHC.js +0 -276
  170. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-p-kfFJi7.js +0 -1
@@ -0,0 +1,590 @@
1
+ import { randomUUID } from 'crypto';
2
+ import db from '../db.js';
3
+ import { withExecutionRunTransaction, } from './executionRuns.js';
4
+ import { assertReviewRepairIterationChanged, hydrateDecision, loadActiveReviewRepairIteration, loadReviewRepairIteration, loadReviewRepairIterationByAction, loadReviewRepairIterationByTriggeringReview, loadReviewRepairIterationByVerification, requireReviewRepairIteration, serializeEffectiveConfig, serializeWorkspaceEvidence, } from './reviewRepairIterationRecords.js';
5
+ const DECISION_CODE_PATTERN = /^[a-z][a-z0-9_]{0,99}$/;
6
+ export const getReviewRepairIteration = loadReviewRepairIteration;
7
+ export const getReviewRepairIterationByTriggeringReview = loadReviewRepairIterationByTriggeringReview;
8
+ export const getActiveReviewRepairIteration = loadActiveReviewRepairIteration;
9
+ export const getReviewRepairIterationByAction = loadReviewRepairIterationByAction;
10
+ export const getReviewRepairIterationByVerification = loadReviewRepairIterationByVerification;
11
+ const requireIteration = requireReviewRepairIteration;
12
+ const assertChanged = assertReviewRepairIterationChanged;
13
+ const enqueueIterationUpdated = (transaction, iteration, updatedAt = iteration.updated_at) => {
14
+ transaction.enqueueReviewLoopIterationUpdated({
15
+ project_id: iteration.project_id,
16
+ automation_progression_run_id: iteration.automation_progression_run_id,
17
+ iteration_id: iteration.id,
18
+ updated_at: updatedAt,
19
+ });
20
+ };
21
+ export const appendReviewRepairIterationDecisionInTransaction = (transaction, input) => {
22
+ void transaction;
23
+ requireIteration(input.projectId, input.iterationId);
24
+ if (!DECISION_CODE_PATTERN.test(input.decisionCode)) {
25
+ throw new Error('Review repair decision code must be a stable snake-case identifier');
26
+ }
27
+ if (input.operationRunId) {
28
+ const operation = db.prepare(`
29
+ SELECT 1 FROM execution_runs execution
30
+ JOIN review_repair_iterations iteration ON iteration.id = ?
31
+ WHERE execution.id = ? AND execution.project_id = iteration.project_id
32
+ `).get(input.iterationId, input.operationRunId);
33
+ if (!operation) {
34
+ throw new Error('Review repair decision operation does not belong to the iteration project');
35
+ }
36
+ }
37
+ if (input.decisionPoint !== 'resume' && input.decisionPoint !== 'gate_admission') {
38
+ const existing = db.prepare(`
39
+ SELECT id, iteration_id, operation_run_id, sequence, decision_point, effective_automation_config_json,
40
+ decision_code, created_at
41
+ FROM review_repair_iteration_decisions
42
+ WHERE iteration_id = ? AND decision_point = ?
43
+ AND (operation_run_id = ? OR (operation_run_id IS NULL AND ? IS NULL))
44
+ LIMIT 1
45
+ `).get(input.iterationId, input.decisionPoint, input.operationRunId ?? null, input.operationRunId ?? null);
46
+ if (existing) {
47
+ return hydrateDecision(existing);
48
+ }
49
+ }
50
+ const id = randomUUID();
51
+ const createdAt = new Date().toISOString();
52
+ const inserted = db.prepare(`
53
+ INSERT INTO review_repair_iteration_decisions (
54
+ id, iteration_id, operation_run_id, sequence, decision_point,
55
+ effective_automation_config_json, decision_code, created_at
56
+ )
57
+ SELECT ?, ?, ?, COALESCE(MAX(sequence), 0) + 1, ?, ?, ?, ?
58
+ FROM review_repair_iteration_decisions
59
+ WHERE iteration_id = ?
60
+ `).run(id, input.iterationId, input.operationRunId ?? null, input.decisionPoint, serializeEffectiveConfig(input.effectiveAutomationConfig), input.decisionCode, createdAt, input.iterationId);
61
+ if (inserted.changes !== 1) {
62
+ throw new Error('Review repair decision could not be appended');
63
+ }
64
+ const row = db.prepare(`
65
+ SELECT id, iteration_id, operation_run_id, sequence, decision_point, effective_automation_config_json,
66
+ decision_code, created_at
67
+ FROM review_repair_iteration_decisions WHERE id = ?
68
+ `).get(id);
69
+ enqueueIterationUpdated(transaction, requireIteration(input.projectId, input.iterationId), createdAt);
70
+ return hydrateDecision(row);
71
+ };
72
+ export const appendReviewRepairIterationDecision = (input) => withExecutionRunTransaction(transaction => appendReviewRepairIterationDecisionInTransaction(transaction, input), undefined, 'immediate');
73
+ export const listReviewRepairIterationDecisions = (projectId, iterationId) => {
74
+ requireIteration(projectId, iterationId);
75
+ return db.prepare(`
76
+ SELECT decision.id, decision.iteration_id, decision.operation_run_id, decision.sequence, decision.decision_point,
77
+ decision.effective_automation_config_json, decision.decision_code, decision.created_at
78
+ FROM review_repair_iteration_decisions decision
79
+ JOIN review_repair_iterations iteration ON iteration.id = decision.iteration_id
80
+ WHERE iteration.project_id = ? AND decision.iteration_id = ?
81
+ ORDER BY decision.sequence ASC
82
+ `).all(projectId, iterationId).map(hydrateDecision);
83
+ };
84
+ export const assertReviewRepairIterationDeletionEligible = (projectId, ticketId) => {
85
+ const active = db.prepare(`
86
+ SELECT 1 FROM review_repair_iterations
87
+ WHERE project_id = ? AND owner_ticket_id = ? AND phase <> 'terminal'
88
+ LIMIT 1
89
+ `).get(projectId, ticketId);
90
+ if (active) {
91
+ throw new Error('Cannot delete a ticket while Review repair work is active');
92
+ }
93
+ };
94
+ export const deleteTerminalReviewRepairIterationsForTicketInTransaction = (transaction, projectId, ticketId) => {
95
+ void transaction;
96
+ assertReviewRepairIterationDeletionEligible(projectId, ticketId);
97
+ db.prepare(`
98
+ UPDATE review_repair_iterations
99
+ SET deletion_claimed_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP
100
+ WHERE project_id = ? AND owner_ticket_id = ?
101
+ AND phase = 'terminal' AND deletion_claimed_at IS NULL
102
+ `).run(projectId, ticketId);
103
+ db.prepare(`
104
+ DELETE FROM review_repair_iteration_decisions
105
+ WHERE iteration_id IN (
106
+ SELECT id FROM review_repair_iterations
107
+ WHERE project_id = ? AND owner_ticket_id = ? AND deletion_claimed_at IS NOT NULL
108
+ )
109
+ `).run(projectId, ticketId);
110
+ db.prepare(`
111
+ DELETE FROM review_repair_iterations
112
+ WHERE project_id = ? AND owner_ticket_id = ? AND deletion_claimed_at IS NOT NULL
113
+ `).run(projectId, ticketId);
114
+ };
115
+ export const deleteTerminalReviewRepairIterationsForTicket = (projectId, ticketId) => withExecutionRunTransaction(transaction => deleteTerminalReviewRepairIterationsForTicketInTransaction(transaction, projectId, ticketId), undefined, 'immediate');
116
+ export const claimReviewRepairIterationInTransaction = (transaction, input) => {
117
+ const existing = getReviewRepairIterationByTriggeringReview(input.projectId, input.triggeringReviewExecutionRunId);
118
+ if (existing) {
119
+ if (existing.worktree_bundle_id !== input.worktreeBundleId
120
+ || existing.owner_ticket_id !== input.ownerTicketId
121
+ || existing.automation_progression_run_id !== input.automationProgressionRunId
122
+ || existing.triggering_review_run_id !== input.triggeringReviewRunId
123
+ || existing.triggering_blocking_count !== input.triggeringBlockingCount) {
124
+ throw new Error('Triggering Review already has a conflicting repair iteration claim');
125
+ }
126
+ return existing;
127
+ }
128
+ if (!Number.isSafeInteger(input.triggeringBlockingCount) || input.triggeringBlockingCount < 0) {
129
+ throw new Error('Invalid triggering Review blocking count');
130
+ }
131
+ const id = randomUUID();
132
+ const createdAt = new Date().toISOString();
133
+ const inserted = db.prepare(`
134
+ INSERT INTO review_repair_iterations (
135
+ id, project_id, worktree_bundle_id, owner_ticket_id,
136
+ automation_progression_run_id, ordinal, triggering_review_execution_run_id,
137
+ triggering_review_run_id, triggering_blocking_count,
138
+ claim_effective_automation_config_json, workspace_evidence_json,
139
+ observed_at, created_at, updated_at
140
+ )
141
+ SELECT ?, ?, ?, ?, ?, COALESCE(MAX(ordinal), 0) + 1, ?, ?, ?, ?, ?, ?, ?, ?
142
+ FROM review_repair_iterations
143
+ WHERE automation_progression_run_id = ?
144
+ `).run(id, input.projectId, input.worktreeBundleId, input.ownerTicketId, input.automationProgressionRunId, input.triggeringReviewExecutionRunId, input.triggeringReviewRunId, input.triggeringBlockingCount, serializeEffectiveConfig(input.effectiveAutomationConfig), serializeWorkspaceEvidence(input.workspaceEvidence), createdAt, createdAt, createdAt, input.automationProgressionRunId);
145
+ if (inserted.changes !== 1) {
146
+ throw new Error('Review repair iteration could not be claimed');
147
+ }
148
+ const iteration = requireIteration(input.projectId, id);
149
+ const projection = db.prepare(`
150
+ INSERT INTO bundle_automation_state (
151
+ project_id, worktree_bundle_id, review_iteration_count, fix_loop_active,
152
+ automation_progression_run_id, created_at, updated_at
153
+ ) VALUES (?, ?, ?, 1, ?, ?, ?)
154
+ ON CONFLICT(project_id, worktree_bundle_id) DO UPDATE SET
155
+ review_iteration_count = MAX(bundle_automation_state.review_iteration_count, excluded.review_iteration_count),
156
+ fix_loop_active = 1,
157
+ automation_progression_run_id = excluded.automation_progression_run_id,
158
+ updated_at = excluded.updated_at
159
+ WHERE bundle_automation_state.automation_progression_run_id IS NULL
160
+ OR bundle_automation_state.automation_progression_run_id = excluded.automation_progression_run_id
161
+ `).run(input.projectId, input.worktreeBundleId, iteration.ordinal, input.automationProgressionRunId, createdAt, createdAt);
162
+ if (projection.changes !== 1) {
163
+ throw new Error('Review repair compatibility projection has conflicting progression ownership');
164
+ }
165
+ appendReviewRepairIterationDecisionInTransaction(transaction, {
166
+ projectId: input.projectId,
167
+ iterationId: id,
168
+ decisionPoint: 'claim',
169
+ effectiveAutomationConfig: input.effectiveAutomationConfig,
170
+ decisionCode: input.decisionCode,
171
+ });
172
+ transaction.appendLifecycleEvent({
173
+ projectId: input.projectId,
174
+ runId: input.automationProgressionRunId,
175
+ eventType: 'review_loop_iteration_started',
176
+ metadata: {
177
+ iteration_id: id,
178
+ iteration_ordinal: iteration.ordinal,
179
+ phase: 'observed',
180
+ },
181
+ });
182
+ enqueueIterationUpdated(transaction, iteration);
183
+ return iteration;
184
+ };
185
+ export const claimReviewRepairIteration = (input) => withExecutionRunTransaction(transaction => claimReviewRepairIterationInTransaction(transaction, input), input.broadcaster, 'immediate');
186
+ const phaseTimestampColumns = {
187
+ action_claimed: 'action_claimed_at',
188
+ action_active: 'action_active_at',
189
+ gate_pending: 'gate_pending_at',
190
+ gate_active: 'gate_active_at',
191
+ verification_pending: 'verification_pending_at',
192
+ verification_active: 'verification_active_at',
193
+ };
194
+ const nextPhases = {
195
+ observed: ['action_claimed'],
196
+ action_claimed: ['action_active'],
197
+ action_active: ['gate_pending'],
198
+ gate_pending: ['gate_active'],
199
+ gate_active: ['verification_pending'],
200
+ verification_pending: ['verification_active'],
201
+ verification_active: [],
202
+ };
203
+ export const compareAndSetReviewRepairIterationPhaseInTransaction = (transaction, input) => {
204
+ const timestampColumn = phaseTimestampColumns[input.nextPhase];
205
+ if (!timestampColumn || !nextPhases[input.expectedPhase]?.includes(input.nextPhase)) {
206
+ throw new Error('Invalid Review repair compare-and-set target phase');
207
+ }
208
+ const current = requireIteration(input.projectId, input.iterationId);
209
+ const expectedActionEnvelope = input.expectedActionEnvelopeRunId === undefined
210
+ ? current.action_envelope_run_id
211
+ : input.expectedActionEnvelopeRunId;
212
+ const expectedAction = input.expectedActionRunId === undefined ? current.action_run_id : input.expectedActionRunId;
213
+ const expectedGate = input.expectedGateBatchRunId === undefined ? current.gate_batch_run_id : input.expectedGateBatchRunId;
214
+ const expectedVerification = input.expectedVerificationRunId === undefined
215
+ ? current.resulting_review_execution_run_id
216
+ : input.expectedVerificationRunId;
217
+ const changed = db.prepare(`
218
+ UPDATE review_repair_iterations
219
+ SET phase = ?, ${timestampColumn} = COALESCE(${timestampColumn}, ?),
220
+ workspace_evidence_json = COALESCE(?, workspace_evidence_json), updated_at = ?
221
+ WHERE id = ? AND project_id = ? AND phase = ?
222
+ AND action_envelope_run_id IS ? AND action_run_id IS ?
223
+ AND gate_batch_run_id IS ? AND resulting_review_execution_run_id IS ?
224
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
225
+ `).run(input.nextPhase, new Date().toISOString(), serializeWorkspaceEvidence(input.workspaceEvidence), new Date().toISOString(), input.iterationId, input.projectId, input.expectedPhase, expectedActionEnvelope, expectedAction, expectedGate, expectedVerification, input.projectId);
226
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale Review repair iteration phase transition');
227
+ enqueueIterationUpdated(transaction, iteration);
228
+ return iteration;
229
+ };
230
+ export const compareAndSetReviewRepairIterationPhase = (input) => withExecutionRunTransaction(transaction => compareAndSetReviewRepairIterationPhaseInTransaction(transaction, input), input.broadcaster);
231
+ export const recordReviewRepairWorkspaceEvidenceInTransaction = (transaction, input) => {
232
+ const changed = db.prepare(`
233
+ UPDATE review_repair_iterations
234
+ SET workspace_evidence_json = ?, updated_at = ?
235
+ WHERE id = ? AND project_id = ? AND phase = ?
236
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
237
+ `).run(serializeWorkspaceEvidence(input.workspaceEvidence), new Date().toISOString(), input.iterationId, input.projectId, input.expectedPhase, input.projectId);
238
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale Review repair workspace evidence assignment');
239
+ enqueueIterationUpdated(transaction, iteration);
240
+ return iteration;
241
+ };
242
+ const attachPointer = (transaction, input, column, nextPhase, timestampColumn) => {
243
+ const changed = db.prepare(`
244
+ UPDATE review_repair_iterations
245
+ SET ${column} = ?, phase = ?, ${timestampColumn} = COALESCE(${timestampColumn}, ?), updated_at = ?
246
+ WHERE id = ? AND project_id = ? AND phase = ? AND ${column} IS NULL
247
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
248
+ `).run(input.runId, nextPhase, new Date().toISOString(), new Date().toISOString(), input.iterationId, input.projectId, input.expectedPhase, input.projectId);
249
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale or duplicate Review repair pointer assignment');
250
+ enqueueIterationUpdated(transaction, iteration);
251
+ return iteration;
252
+ };
253
+ const assertAttachPhase = (input, expectedPhase) => {
254
+ if (input.expectedPhase !== expectedPhase) {
255
+ throw new Error('Invalid Review repair pointer phase');
256
+ }
257
+ };
258
+ export const attachReviewRepairActionEnvelopeInTransaction = (transaction, input) => {
259
+ assertAttachPhase(input, 'observed');
260
+ return attachPointer(transaction, input, 'action_envelope_run_id', 'action_claimed', 'action_claimed_at');
261
+ };
262
+ export const attachReviewRepairActionEnvelope = (input) => (withExecutionRunTransaction(transaction => attachReviewRepairActionEnvelopeInTransaction(transaction, input), input.broadcaster));
263
+ export const attachReviewRepairActionInTransaction = (transaction, input) => {
264
+ assertAttachPhase(input, 'action_claimed');
265
+ return attachPointer(transaction, input, 'action_run_id', 'action_active', 'action_active_at');
266
+ };
267
+ export const attachReviewRepairAction = (input) => (withExecutionRunTransaction(transaction => attachReviewRepairActionInTransaction(transaction, input), input.broadcaster));
268
+ export const attachReviewRepairVerificationInTransaction = (transaction, input) => {
269
+ assertAttachPhase(input, 'verification_pending');
270
+ return attachPointer(transaction, input, 'resulting_review_execution_run_id', 'verification_active', 'verification_active_at');
271
+ };
272
+ export const attachReviewRepairVerification = (input) => (withExecutionRunTransaction(transaction => attachReviewRepairVerificationInTransaction(transaction, input), input.broadcaster));
273
+ export const selectReviewRepairGateBatchInTransaction = (transaction, input) => {
274
+ const current = requireIteration(input.projectId, input.iterationId);
275
+ if (!['gate_pending', 'gate_active'].includes(input.expectedPhase)) {
276
+ throw new Error('Invalid Review repair gate selection phase');
277
+ }
278
+ if (current.gate_batch_run_id !== null
279
+ && current.gate_batch_run_id !== input.runId
280
+ && (current.gate_evaluation_id !== null || current.resulting_review_execution_run_id !== null)) {
281
+ throw new Error('Review repair gate replacement has dependent evidence');
282
+ }
283
+ if (current.gate_batch_run_id === input.runId) {
284
+ return current;
285
+ }
286
+ const expectedCurrent = input.expectedCurrentBatchRunId ?? null;
287
+ const changed = db.prepare(`
288
+ UPDATE review_repair_iterations
289
+ SET gate_batch_run_id = ?, phase = 'gate_active', gate_active_at = COALESCE(gate_active_at, ?),
290
+ updated_at = ?
291
+ WHERE id = ? AND project_id = ? AND phase = ? AND gate_batch_run_id IS ?
292
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
293
+ `).run(input.runId, new Date().toISOString(), new Date().toISOString(), input.iterationId, input.projectId, input.expectedPhase, expectedCurrent, input.projectId);
294
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale or unrelated Review repair gate batch');
295
+ enqueueIterationUpdated(transaction, iteration);
296
+ return iteration;
297
+ };
298
+ export const selectReviewRepairGateBatch = (input) => withExecutionRunTransaction(transaction => selectReviewRepairGateBatchInTransaction(transaction, input), input.broadcaster);
299
+ const replaceRetryPointer = (transaction, input, column) => {
300
+ const current = requireIteration(input.projectId, input.iterationId);
301
+ const hasDownstreamEvidence = column === 'action_envelope_run_id'
302
+ ? current.action_run_id !== null
303
+ : column === 'action_run_id'
304
+ ? current.gate_batch_run_id !== null || current.resulting_review_execution_run_id !== null
305
+ : current.resulting_review_run_id !== null;
306
+ if (hasDownstreamEvidence) {
307
+ throw new Error('Review repair retry replacement has dependent evidence');
308
+ }
309
+ const changed = db.prepare(`
310
+ UPDATE review_repair_iterations SET ${column} = ?, updated_at = ?
311
+ WHERE id = ? AND project_id = ? AND phase = ? AND ${column} = ?
312
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
313
+ `).run(input.runId, new Date().toISOString(), input.iterationId, input.projectId, input.expectedPhase, input.expectedCurrentRunId, input.projectId);
314
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale or invalid Review repair retry replacement');
315
+ enqueueIterationUpdated(transaction, iteration);
316
+ return iteration;
317
+ };
318
+ export const replaceReviewRepairActionEnvelopeRetryInTransaction = (transaction, input) => {
319
+ return replaceRetryPointer(transaction, input, 'action_envelope_run_id');
320
+ };
321
+ export const replaceReviewRepairActionEnvelopeRetry = (input) => (withExecutionRunTransaction(transaction => replaceReviewRepairActionEnvelopeRetryInTransaction(transaction, input), input.broadcaster));
322
+ export const replaceReviewRepairActionRetryInTransaction = (transaction, input) => {
323
+ return replaceRetryPointer(transaction, input, 'action_run_id');
324
+ };
325
+ export const replaceReviewRepairActionRetry = (input) => (withExecutionRunTransaction(transaction => replaceReviewRepairActionRetryInTransaction(transaction, input), input.broadcaster));
326
+ export const replaceReviewRepairVerificationRetryInTransaction = (transaction, input) => {
327
+ const current = requireIteration(input.projectId, input.iterationId);
328
+ if (!current.resulting_review_run_id) {
329
+ return replaceRetryPointer(transaction, input, 'resulting_review_execution_run_id');
330
+ }
331
+ const priorResult = db.prepare('SELECT status FROM review_runs WHERE id = ?').get(current.resulting_review_run_id);
332
+ if (!priorResult || priorResult.status === 'completed') {
333
+ throw new Error('Completed Review repair verification evidence cannot be replaced');
334
+ }
335
+ const timestamp = new Date().toISOString();
336
+ const changed = db.prepare(`
337
+ UPDATE review_repair_iterations
338
+ SET resulting_review_execution_run_id = ?, resulting_review_run_id = NULL, updated_at = ?
339
+ WHERE id = ? AND project_id = ? AND phase = ?
340
+ AND resulting_review_execution_run_id = ? AND resulting_review_run_id = ?
341
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
342
+ `).run(input.runId, timestamp, input.iterationId, input.projectId, input.expectedPhase, input.expectedCurrentRunId, current.resulting_review_run_id, input.projectId);
343
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale or invalid Review repair verification retry');
344
+ enqueueIterationUpdated(transaction, iteration);
345
+ return iteration;
346
+ };
347
+ export const replaceReviewRepairVerificationRetry = (input) => (withExecutionRunTransaction(transaction => replaceReviewRepairVerificationRetryInTransaction(transaction, input), input.broadcaster));
348
+ export const resetReviewRepairGateForRetryInTransaction = (transaction, input) => {
349
+ const timestamp = new Date().toISOString();
350
+ const changed = db.prepare(`
351
+ UPDATE review_repair_iterations
352
+ SET phase = 'gate_pending', gate_batch_run_id = NULL, gate_source_batch_run_id = NULL,
353
+ gate_evaluation_id = NULL, workspace_evidence_json = NULL, gate_pending_at = ?, updated_at = ?
354
+ WHERE id = ? AND project_id = ? AND phase = 'gate_active' AND gate_batch_run_id IS ?
355
+ AND resulting_review_execution_run_id IS NULL
356
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
357
+ `).run(timestamp, timestamp, input.iterationId, input.projectId, input.expectedGateBatchRunId, input.projectId);
358
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale Review repair gate retry');
359
+ transaction.appendLifecycleEvent({
360
+ projectId: iteration.project_id,
361
+ runId: iteration.automation_progression_run_id,
362
+ eventType: 'review_loop_gate_retry',
363
+ metadata: {
364
+ iteration_id: iteration.id,
365
+ iteration_ordinal: iteration.ordinal,
366
+ },
367
+ });
368
+ enqueueIterationUpdated(transaction, iteration);
369
+ return iteration;
370
+ };
371
+ export const resetReviewRepairGateForRetry = (input) => (withExecutionRunTransaction(transaction => resetReviewRepairGateForRetryInTransaction(transaction, input), input.broadcaster, 'immediate'));
372
+ export const rewindStaleReviewRepairVerificationInTransaction = (transaction, input) => {
373
+ const timestamp = new Date().toISOString();
374
+ const changed = db.prepare(`
375
+ UPDATE review_repair_iterations
376
+ SET phase = 'gate_pending', outcome = NULL, stop_reason = NULL,
377
+ gate_batch_run_id = NULL, gate_source_batch_run_id = NULL,
378
+ gate_evaluation_id = NULL, workspace_evidence_json = NULL,
379
+ resulting_review_execution_run_id = NULL, resulting_review_run_id = NULL,
380
+ resulting_blocking_count = NULL, gate_pending_at = ?, gate_active_at = NULL,
381
+ verification_pending_at = NULL, verification_active_at = NULL, updated_at = ?
382
+ WHERE id = ? AND project_id = ? AND phase = 'paused'
383
+ AND outcome = 'paused' AND stop_reason = 'stale_evidence'
384
+ AND resulting_review_execution_run_id = ?
385
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
386
+ `).run(timestamp, timestamp, input.iterationId, input.projectId, input.expectedVerificationRunId, input.projectId);
387
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale Review repair verification rewind');
388
+ transaction.appendLifecycleEvent({
389
+ projectId: iteration.project_id,
390
+ runId: iteration.automation_progression_run_id,
391
+ eventType: 'review_loop_stale_verification_rewound',
392
+ metadata: {
393
+ iteration_id: iteration.id,
394
+ iteration_ordinal: iteration.ordinal,
395
+ stale_verification_run_id: input.expectedVerificationRunId,
396
+ },
397
+ });
398
+ enqueueIterationUpdated(transaction, iteration);
399
+ return iteration;
400
+ };
401
+ export const rewindStaleReviewRepairVerification = (input) => withExecutionRunTransaction(transaction => rewindStaleReviewRepairVerificationInTransaction(transaction, input), input.broadcaster, 'immediate');
402
+ export const attachReviewRepairGateEvaluationInTransaction = (transaction, input) => {
403
+ const current = requireIteration(input.projectId, input.iterationId);
404
+ if (current.phase === input.expectedPhase
405
+ && current.gate_batch_run_id === input.expectedGateBatchRunId
406
+ && current.gate_source_batch_run_id === input.sourceBatchRunId
407
+ && current.gate_evaluation_id === input.evaluationId) {
408
+ return current;
409
+ }
410
+ const changed = db.prepare(`
411
+ UPDATE review_repair_iterations
412
+ SET gate_source_batch_run_id = ?, gate_evaluation_id = ?, updated_at = ?
413
+ WHERE id = ? AND project_id = ? AND phase = ? AND gate_batch_run_id = ?
414
+ AND gate_source_batch_run_id IS NULL AND gate_evaluation_id IS NULL
415
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
416
+ `).run(input.sourceBatchRunId, input.evaluationId, new Date().toISOString(), input.iterationId, input.projectId, input.expectedPhase, input.expectedGateBatchRunId, input.projectId);
417
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale or duplicate Review repair gate evaluation');
418
+ enqueueIterationUpdated(transaction, iteration);
419
+ return iteration;
420
+ };
421
+ export const attachReviewRepairGateEvaluation = (input) => withExecutionRunTransaction(transaction => attachReviewRepairGateEvaluationInTransaction(transaction, input), input.broadcaster);
422
+ export const attachReviewRepairResultInTransaction = (transaction, input) => {
423
+ const current = requireIteration(input.projectId, input.iterationId);
424
+ if (current.phase === input.expectedPhase
425
+ && current.resulting_review_execution_run_id === input.expectedVerificationRunId
426
+ && current.resulting_review_run_id === input.resultingReviewRunId) {
427
+ return current;
428
+ }
429
+ const changed = db.prepare(`
430
+ UPDATE review_repair_iterations SET resulting_review_run_id = ?, updated_at = ?
431
+ WHERE id = ? AND project_id = ? AND phase = ?
432
+ AND resulting_review_execution_run_id = ? AND resulting_review_run_id IS NULL
433
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
434
+ `).run(input.resultingReviewRunId, new Date().toISOString(), input.iterationId, input.projectId, input.expectedPhase, input.expectedVerificationRunId, input.projectId);
435
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale or duplicate resulting Review assignment');
436
+ enqueueIterationUpdated(transaction, iteration);
437
+ return iteration;
438
+ };
439
+ export const attachReviewRepairResult = (input) => (withExecutionRunTransaction(transaction => attachReviewRepairResultInTransaction(transaction, input), input.broadcaster));
440
+ export const pauseReviewRepairIterationInTransaction = (transaction, input) => {
441
+ const current = requireIteration(input.projectId, input.iterationId);
442
+ const currentPointer = current.resulting_review_execution_run_id
443
+ ?? current.gate_batch_run_id
444
+ ?? current.action_run_id
445
+ ?? current.action_envelope_run_id;
446
+ if (currentPointer !== input.expectedCurrentRunId) {
447
+ throw new Error('Stale Review repair iteration pause');
448
+ }
449
+ const timestamp = new Date().toISOString();
450
+ const changed = db.prepare(`
451
+ UPDATE review_repair_iterations
452
+ SET phase = 'paused', outcome = 'paused', stop_reason = ?, paused_at = ?,
453
+ workspace_evidence_json = COALESCE(?, workspace_evidence_json), updated_at = ?
454
+ WHERE id = ? AND project_id = ? AND phase = ?
455
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
456
+ `).run(input.stopReason, timestamp, serializeWorkspaceEvidence(input.workspaceEvidence), timestamp, input.iterationId, input.projectId, input.expectedPhase, input.projectId);
457
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale Review repair iteration pause');
458
+ db.prepare(`
459
+ UPDATE bundle_automation_state SET fix_loop_active = 0, updated_at = ?
460
+ WHERE project_id = ? AND worktree_bundle_id = ?
461
+ AND automation_progression_run_id = ?
462
+ `).run(timestamp, iteration.project_id, iteration.worktree_bundle_id, iteration.automation_progression_run_id);
463
+ transaction.appendLifecycleEvent({
464
+ projectId: iteration.project_id,
465
+ runId: iteration.automation_progression_run_id,
466
+ eventType: 'review_loop_iteration_paused',
467
+ metadata: {
468
+ iteration_id: iteration.id,
469
+ iteration_ordinal: iteration.ordinal,
470
+ phase: iteration.phase,
471
+ outcome: iteration.outcome,
472
+ stop_reason: iteration.stop_reason,
473
+ },
474
+ });
475
+ enqueueIterationUpdated(transaction, iteration);
476
+ return iteration;
477
+ };
478
+ export const pauseReviewRepairIteration = (input) => withExecutionRunTransaction(transaction => pauseReviewRepairIterationInTransaction(transaction, input), input.broadcaster);
479
+ export const resolveReviewRepairIterationResumePhase = (iteration) => {
480
+ if (iteration.resulting_review_execution_run_id) {
481
+ return 'verification_active';
482
+ }
483
+ const hasGateAdmissionEvidence = iteration.gate_evaluation_id !== null
484
+ || iteration.workspace_evidence !== null;
485
+ if (iteration.verification_pending_at && hasGateAdmissionEvidence) {
486
+ return 'verification_pending';
487
+ }
488
+ if (iteration.gate_batch_run_id || hasGateAdmissionEvidence) {
489
+ return 'gate_active';
490
+ }
491
+ if (iteration.gate_pending_at) {
492
+ return 'gate_pending';
493
+ }
494
+ if (iteration.action_run_id) {
495
+ return 'action_active';
496
+ }
497
+ if (iteration.action_envelope_run_id) {
498
+ return 'action_claimed';
499
+ }
500
+ return 'observed';
501
+ };
502
+ export const resumePausedReviewRepairIterationInTransaction = (transaction, input) => {
503
+ const current = requireIteration(input.projectId, input.iterationId);
504
+ const currentPointer = current.resulting_review_execution_run_id
505
+ ?? current.gate_batch_run_id
506
+ ?? current.action_run_id
507
+ ?? current.action_envelope_run_id;
508
+ if (current.phase !== 'paused' || currentPointer !== input.expectedCurrentRunId) {
509
+ throw new Error('Stale Review repair iteration resume');
510
+ }
511
+ const nextPhase = resolveReviewRepairIterationResumePhase(current);
512
+ const timestamp = new Date().toISOString();
513
+ const changed = db.prepare(`
514
+ UPDATE review_repair_iterations
515
+ SET phase = ?, outcome = NULL, stop_reason = NULL, updated_at = ?
516
+ WHERE id = ? AND project_id = ? AND phase = 'paused'
517
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
518
+ `).run(nextPhase, timestamp, input.iterationId, input.projectId, input.projectId);
519
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale Review repair iteration resume');
520
+ db.prepare(`
521
+ UPDATE bundle_automation_state SET fix_loop_active = 1, updated_at = ?
522
+ WHERE project_id = ? AND worktree_bundle_id = ?
523
+ AND automation_progression_run_id = ?
524
+ `).run(timestamp, iteration.project_id, iteration.worktree_bundle_id, iteration.automation_progression_run_id);
525
+ transaction.appendLifecycleEvent({
526
+ projectId: iteration.project_id,
527
+ runId: iteration.automation_progression_run_id,
528
+ eventType: 'review_loop_iteration_resumed',
529
+ metadata: {
530
+ iteration_id: iteration.id,
531
+ iteration_ordinal: iteration.ordinal,
532
+ phase: iteration.phase,
533
+ },
534
+ });
535
+ enqueueIterationUpdated(transaction, iteration);
536
+ return iteration;
537
+ };
538
+ export const resumePausedReviewRepairIteration = (input) => withExecutionRunTransaction(transaction => resumePausedReviewRepairIterationInTransaction(transaction, input), input.broadcaster, 'immediate');
539
+ export const terminalizeReviewRepairIterationInTransaction = (transaction, input) => {
540
+ if (input.resultingBlockingCount !== undefined
541
+ && input.resultingBlockingCount !== null
542
+ && (!Number.isSafeInteger(input.resultingBlockingCount) || input.resultingBlockingCount < 0)) {
543
+ throw new Error('Invalid resulting Review blocking count');
544
+ }
545
+ const current = requireIteration(input.projectId, input.iterationId);
546
+ if (['repaired', 'continuing', 'unchanged', 'exhausted'].includes(input.outcome)
547
+ && (current.resulting_review_execution_run_id === null
548
+ || current.resulting_review_run_id === null
549
+ || input.resultingBlockingCount === undefined
550
+ || input.resultingBlockingCount === null)) {
551
+ throw new Error('Completed Review repair outcomes require completed verification evidence');
552
+ }
553
+ const currentPointer = current.resulting_review_execution_run_id
554
+ ?? current.gate_batch_run_id
555
+ ?? current.action_run_id
556
+ ?? current.action_envelope_run_id;
557
+ if (currentPointer !== input.expectedCurrentRunId) {
558
+ throw new Error('Stale Review repair iteration terminalization');
559
+ }
560
+ const timestamp = new Date().toISOString();
561
+ const changed = db.prepare(`
562
+ UPDATE review_repair_iterations
563
+ SET phase = 'terminal', outcome = ?, stop_reason = ?, resulting_blocking_count = ?,
564
+ terminal_at = ?, workspace_evidence_json = COALESCE(?, workspace_evidence_json), updated_at = ?
565
+ WHERE id = ? AND project_id = ? AND phase = ?
566
+ AND EXISTS (SELECT 1 FROM projects WHERE id = ? AND deletion_started_at IS NULL)
567
+ `).run(input.outcome, input.stopReason ?? null, input.resultingBlockingCount ?? null, timestamp, serializeWorkspaceEvidence(input.workspaceEvidence), timestamp, input.iterationId, input.projectId, input.expectedPhase, input.projectId);
568
+ const iteration = assertChanged(changed.changes, input.projectId, input.iterationId, 'Stale Review repair iteration terminalization');
569
+ db.prepare(`
570
+ UPDATE bundle_automation_state SET fix_loop_active = 0, updated_at = ?
571
+ WHERE project_id = ? AND worktree_bundle_id = ?
572
+ AND automation_progression_run_id = ?
573
+ `).run(timestamp, iteration.project_id, iteration.worktree_bundle_id, iteration.automation_progression_run_id);
574
+ transaction.appendLifecycleEvent({
575
+ projectId: iteration.project_id,
576
+ runId: iteration.automation_progression_run_id,
577
+ eventType: 'review_loop_iteration_terminal',
578
+ metadata: {
579
+ iteration_id: iteration.id,
580
+ iteration_ordinal: iteration.ordinal,
581
+ phase: iteration.phase,
582
+ outcome: iteration.outcome,
583
+ stop_reason: iteration.stop_reason,
584
+ },
585
+ });
586
+ enqueueIterationUpdated(transaction, iteration);
587
+ return iteration;
588
+ };
589
+ export const terminalizeReviewRepairIteration = (input) => withExecutionRunTransaction(transaction => terminalizeReviewRepairIterationInTransaction(transaction, input), input.broadcaster);
590
+ //# sourceMappingURL=reviewRepairIterations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewRepairIterations.js","sourceRoot":"","sources":["../../../server/lib/reviewRepairIterations.ts"],"names":[],"mappings":"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"}