@telora/daemon 0.22.132 → 0.22.136
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/build-info.json +6 -3
- package/dist/audit/audit-hooks.d.ts +6 -2
- package/dist/audit/audit-hooks.d.ts.map +1 -1
- package/dist/audit/audit-hooks.js +12 -5
- package/dist/audit/audit-hooks.js.map +1 -1
- package/dist/audit/audit-phase.js +1 -1
- package/dist/audit/audit-phase.js.map +1 -1
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +1 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/completion/completion-phase-registry.d.ts +4 -0
- package/dist/completion/completion-phase-registry.d.ts.map +1 -1
- package/dist/completion/completion-phase-registry.js +63 -18
- package/dist/completion/completion-phase-registry.js.map +1 -1
- package/dist/completion/exit-classification.d.ts.map +1 -1
- package/dist/completion/exit-classification.js +1 -0
- package/dist/completion/exit-classification.js.map +1 -1
- package/dist/completion/review-approved-head-gate.d.ts +53 -0
- package/dist/completion/review-approved-head-gate.d.ts.map +1 -0
- package/dist/completion/review-approved-head-gate.js +124 -0
- package/dist/completion/review-approved-head-gate.js.map +1 -0
- package/dist/completion/review-census-record.d.ts +52 -0
- package/dist/completion/review-census-record.d.ts.map +1 -0
- package/dist/completion/review-census-record.js +145 -0
- package/dist/completion/review-census-record.js.map +1 -0
- package/dist/completion/review-exit-deps.d.ts +5 -1
- package/dist/completion/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit-deps.js +7 -2
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +29 -16
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-progress.d.ts +8 -0
- package/dist/completion/review-exit-progress.d.ts.map +1 -1
- package/dist/completion/review-exit-progress.js +14 -0
- package/dist/completion/review-exit-progress.js.map +1 -1
- package/dist/completion/review-exit-shortfall-park.d.ts +14 -0
- package/dist/completion/review-exit-shortfall-park.d.ts.map +1 -0
- package/dist/completion/review-exit-shortfall-park.js +52 -0
- package/dist/completion/review-exit-shortfall-park.js.map +1 -0
- package/dist/completion/review-exit-shortfall.js +1 -1
- package/dist/completion/review-exit-shortfall.js.map +1 -1
- package/dist/completion/review-exit-verdict-gate.d.ts +58 -0
- package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -1
- package/dist/completion/review-exit-verdict-gate.js +68 -8
- package/dist/completion/review-exit-verdict-gate.js.map +1 -1
- package/dist/completion/review-next-step.d.ts +15 -3
- package/dist/completion/review-next-step.d.ts.map +1 -1
- package/dist/completion/review-next-step.js +7 -2
- package/dist/completion/review-next-step.js.map +1 -1
- package/dist/completion/standing-approval-convergence.d.ts +68 -0
- package/dist/completion/standing-approval-convergence.d.ts.map +1 -0
- package/dist/completion/standing-approval-convergence.js +230 -0
- package/dist/completion/standing-approval-convergence.js.map +1 -0
- package/dist/completion/standing-approval-deps.d.ts +5 -0
- package/dist/completion/standing-approval-deps.d.ts.map +1 -0
- package/dist/completion/standing-approval-deps.js +37 -0
- package/dist/completion/standing-approval-deps.js.map +1 -0
- package/dist/completion/state-cascade.d.ts +11 -0
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +40 -1
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/completion/team-lifecycle.d.ts +14 -2
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +36 -36
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/completion/terminated-work-reconcile.d.ts +3 -1
- package/dist/completion/terminated-work-reconcile.d.ts.map +1 -1
- package/dist/completion/terminated-work-reconcile.js +24 -11
- package/dist/completion/terminated-work-reconcile.js.map +1 -1
- package/dist/delivery/delivery-advance-block.d.ts +6 -0
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +29 -3
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler.js +4 -1
- package/dist/delivery/delivery-reconciler.js.map +1 -1
- package/dist/delivery/operator-hold.d.ts.map +1 -1
- package/dist/delivery/operator-hold.js +3 -1
- package/dist/delivery/operator-hold.js.map +1 -1
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +6 -0
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/directive/directive-queue.d.ts +8 -0
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +20 -0
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/directive/phase-sync.d.ts +5 -0
- package/dist/directive/phase-sync.d.ts.map +1 -1
- package/dist/directive/phase-sync.js +11 -1
- package/dist/directive/phase-sync.js.map +1 -1
- package/dist/directive/stranded-review-reroute.d.ts +37 -0
- package/dist/directive/stranded-review-reroute.d.ts.map +1 -0
- package/dist/directive/stranded-review-reroute.js +150 -0
- package/dist/directive/stranded-review-reroute.js.map +1 -0
- package/dist/focus/focus-engine.d.ts.map +1 -1
- package/dist/focus/focus-engine.js +15 -3
- package/dist/focus/focus-engine.js.map +1 -1
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +9 -65
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-lifecycle.d.ts +12 -0
- package/dist/focus/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus/focus-lifecycle.js +66 -37
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-phase.d.ts.map +1 -1
- package/dist/focus/focus-phase.js +6 -0
- package/dist/focus/focus-phase.js.map +1 -1
- package/dist/focus/focus-spawn-decision.d.ts.map +1 -1
- package/dist/focus/focus-spawn-decision.js +1 -0
- package/dist/focus/focus-spawn-decision.js.map +1 -1
- package/dist/focus/focus-team-state.d.ts +10 -0
- package/dist/focus/focus-team-state.d.ts.map +1 -1
- package/dist/focus/focus-team-state.js +19 -1
- package/dist/focus/focus-team-state.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +1 -0
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts +10 -0
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +46 -4
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +11 -1
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts +42 -0
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +62 -33
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/pending-review-approved-head.d.ts +41 -0
- package/dist/focus/pending-review-approved-head.d.ts.map +1 -0
- package/dist/focus/pending-review-approved-head.js +198 -0
- package/dist/focus/pending-review-approved-head.js.map +1 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts +5 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.js +2 -1
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
- package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -1
- package/dist/focus/pending-spawn-review-next-step.js +26 -4
- package/dist/focus/pending-spawn-review-next-step.js.map +1 -1
- package/dist/focus/review-spawn-coverage.d.ts +87 -0
- package/dist/focus/review-spawn-coverage.d.ts.map +1 -0
- package/dist/focus/review-spawn-coverage.js +104 -0
- package/dist/focus/review-spawn-coverage.js.map +1 -0
- package/dist/focus/session-health.d.ts +5 -2
- package/dist/focus/session-health.d.ts.map +1 -1
- package/dist/focus/session-health.js +2 -1
- package/dist/focus/session-health.js.map +1 -1
- package/dist/focus/session-process-reap.d.ts +50 -0
- package/dist/focus/session-process-reap.d.ts.map +1 -0
- package/dist/focus/session-process-reap.js +77 -0
- package/dist/focus/session-process-reap.js.map +1 -0
- package/dist/focus/unchanged-reviewed-head.d.ts +40 -0
- package/dist/focus/unchanged-reviewed-head.d.ts.map +1 -0
- package/dist/focus/unchanged-reviewed-head.js +84 -0
- package/dist/focus/unchanged-reviewed-head.js.map +1 -0
- package/dist/focus/verify-open-issues.d.ts +4 -19
- package/dist/focus/verify-open-issues.d.ts.map +1 -1
- package/dist/focus/verify-open-issues.js +83 -41
- package/dist/focus/verify-open-issues.js.map +1 -1
- package/dist/git/focus-integration-sync.d.ts +61 -0
- package/dist/git/focus-integration-sync.d.ts.map +1 -0
- package/dist/git/focus-integration-sync.js +73 -0
- package/dist/git/focus-integration-sync.js.map +1 -0
- package/dist/git/focus-own-delta.d.ts +38 -0
- package/dist/git/focus-own-delta.d.ts.map +1 -0
- package/dist/git/focus-own-delta.js +193 -0
- package/dist/git/focus-own-delta.js.map +1 -0
- package/dist/git/index.d.ts +2 -0
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +4 -0
- package/dist/git/index.js.map +1 -1
- package/dist/git/merge.d.ts.map +1 -1
- package/dist/git/merge.js +11 -1
- package/dist/git/merge.js.map +1 -1
- package/dist/git/resolution-restore.d.ts +66 -0
- package/dist/git/resolution-restore.d.ts.map +1 -0
- package/dist/git/resolution-restore.js +331 -0
- package/dist/git/resolution-restore.js.map +1 -0
- package/dist/loops/engine.d.ts.map +1 -1
- package/dist/loops/engine.js.map +1 -1
- package/dist/merge/abandoned-merge-recovery.d.ts +72 -0
- package/dist/merge/abandoned-merge-recovery.d.ts.map +1 -0
- package/dist/merge/abandoned-merge-recovery.js +117 -0
- package/dist/merge/abandoned-merge-recovery.js.map +1 -0
- package/dist/merge/focus-merge.d.ts +19 -0
- package/dist/merge/focus-merge.d.ts.map +1 -1
- package/dist/merge/focus-merge.js +136 -99
- package/dist/merge/focus-merge.js.map +1 -1
- package/dist/merge/merge-back-activity.d.ts +11 -0
- package/dist/merge/merge-back-activity.d.ts.map +1 -0
- package/dist/merge/merge-back-activity.js +57 -0
- package/dist/merge/merge-back-activity.js.map +1 -0
- package/dist/merge/merge-back-conflict.d.ts +119 -0
- package/dist/merge/merge-back-conflict.d.ts.map +1 -0
- package/dist/merge/merge-back-conflict.js +178 -0
- package/dist/merge/merge-back-conflict.js.map +1 -0
- package/dist/merge/merge-back-followup.d.ts +109 -0
- package/dist/merge/merge-back-followup.d.ts.map +1 -0
- package/dist/merge/merge-back-followup.js +316 -0
- package/dist/merge/merge-back-followup.js.map +1 -0
- package/dist/merge/merge-back-loop.d.ts +2 -0
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +14 -15
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/merge/merge-conflict-escalation.d.ts +12 -0
- package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
- package/dist/merge/merge-conflict-escalation.js +37 -2
- package/dist/merge/merge-conflict-escalation.js.map +1 -1
- package/dist/merge/merge-gate-coverage.d.ts.map +1 -1
- package/dist/merge/merge-gate-coverage.js +1 -0
- package/dist/merge/merge-gate-coverage.js.map +1 -1
- package/dist/prompt/prompt-listing.d.ts +5 -0
- package/dist/prompt/prompt-listing.d.ts.map +1 -1
- package/dist/prompt/prompt-listing.js +35 -0
- package/dist/prompt/prompt-listing.js.map +1 -1
- package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -1
- package/dist/prompt-sections/routing-decider-sections.js +2 -0
- package/dist/prompt-sections/routing-decider-sections.js.map +1 -1
- package/dist/prompt-sections/shortfall-park-section.d.ts +43 -0
- package/dist/prompt-sections/shortfall-park-section.d.ts.map +1 -0
- package/dist/prompt-sections/shortfall-park-section.js +36 -0
- package/dist/prompt-sections/shortfall-park-section.js.map +1 -0
- package/dist/queries/agent-resolvable-promotion.d.ts +16 -2
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +30 -3
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/cause-key.d.ts +17 -22
- package/dist/queries/cause-key.d.ts.map +1 -1
- package/dist/queries/cause-key.js +50 -1
- package/dist/queries/cause-key.js.map +1 -1
- package/dist/queries/commit-attributions.d.ts +18 -0
- package/dist/queries/commit-attributions.d.ts.map +1 -0
- package/dist/queries/commit-attributions.js +39 -0
- package/dist/queries/commit-attributions.js.map +1 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +3 -1
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +21 -5
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +35 -9
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +2 -1
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/escalation-field-bounds.d.ts +48 -0
- package/dist/queries/escalation-field-bounds.d.ts.map +1 -0
- package/dist/queries/escalation-field-bounds.js +83 -0
- package/dist/queries/escalation-field-bounds.js.map +1 -0
- package/dist/queries/escalation-refusal.d.ts +88 -0
- package/dist/queries/escalation-refusal.d.ts.map +1 -0
- package/dist/queries/escalation-refusal.js +217 -0
- package/dist/queries/escalation-refusal.js.map +1 -0
- package/dist/queries/escalation-suppression.d.ts +6 -0
- package/dist/queries/escalation-suppression.d.ts.map +1 -1
- package/dist/queries/escalation-suppression.js +4 -13
- package/dist/queries/escalation-suppression.js.map +1 -1
- package/dist/queries/escalations.d.ts +5 -13
- package/dist/queries/escalations.d.ts.map +1 -1
- package/dist/queries/escalations.js +25 -30
- package/dist/queries/escalations.js.map +1 -1
- package/dist/queries/filing-observation.d.ts.map +1 -1
- package/dist/queries/filing-observation.js +3 -1
- package/dist/queries/filing-observation.js.map +1 -1
- package/dist/queries/focus-review-approval.d.ts +2 -0
- package/dist/queries/focus-review-approval.d.ts.map +1 -1
- package/dist/queries/focus-review-approval.js +7 -2
- package/dist/queries/focus-review-approval.js.map +1 -1
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +2 -1
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/incident-correlation.d.ts.map +1 -1
- package/dist/queries/incident-correlation.js +4 -1
- package/dist/queries/incident-correlation.js.map +1 -1
- package/dist/queries/misattributed-commits-record.d.ts +26 -0
- package/dist/queries/misattributed-commits-record.d.ts.map +1 -0
- package/dist/queries/misattributed-commits-record.js +5 -0
- package/dist/queries/misattributed-commits-record.js.map +1 -0
- package/dist/queries/reality-tree.d.ts.map +1 -1
- package/dist/queries/reality-tree.js +2 -1
- package/dist/queries/reality-tree.js.map +1 -1
- package/dist/queries/schemas.d.ts +3 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +1 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/shortfall-park-record.d.ts +48 -0
- package/dist/queries/shortfall-park-record.d.ts.map +1 -0
- package/dist/queries/shortfall-park-record.js +31 -0
- package/dist/queries/shortfall-park-record.js.map +1 -0
- package/dist/queries/shortfall-rulings.d.ts +71 -0
- package/dist/queries/shortfall-rulings.d.ts.map +1 -0
- package/dist/queries/shortfall-rulings.js +53 -0
- package/dist/queries/shortfall-rulings.js.map +1 -0
- package/dist/queries/verification.d.ts +20 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +48 -8
- package/dist/queries/verification.js.map +1 -1
- package/dist/resolvers/index.d.ts +2 -2
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/shared/delivery-trailer.d.ts +99 -0
- package/dist/resolvers/shared/delivery-trailer.d.ts.map +1 -0
- package/dist/resolvers/shared/delivery-trailer.js +103 -0
- package/dist/resolvers/shared/delivery-trailer.js.map +1 -0
- package/dist/resolvers/shared/git-diff.d.ts +11 -84
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +17 -84
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -1
- package/dist/resolvers/shared/review-window-commits.js +1 -0
- package/dist/resolvers/shared/review-window-commits.js.map +1 -1
- package/dist/session/session-lineage.d.ts.map +1 -1
- package/dist/session/session-lineage.js +1 -0
- package/dist/session/session-lineage.js.map +1 -1
- package/dist/shell/config.d.ts +2 -1
- package/dist/shell/config.d.ts.map +1 -1
- package/dist/shell/config.js +21 -4
- package/dist/shell/config.js.map +1 -1
- package/dist/shell/crash-recovery.d.ts +3 -7
- package/dist/shell/crash-recovery.d.ts.map +1 -1
- package/dist/shell/crash-recovery.js +28 -31
- package/dist/shell/crash-recovery.js.map +1 -1
- package/dist/shell/orphan-capture.d.ts +42 -0
- package/dist/shell/orphan-capture.d.ts.map +1 -0
- package/dist/shell/orphan-capture.js +53 -0
- package/dist/shell/orphan-capture.js.map +1 -0
- package/dist/shell/worker-pidfile.d.ts +22 -4
- package/dist/shell/worker-pidfile.d.ts.map +1 -1
- package/dist/shell/worker-pidfile.js +51 -13
- package/dist/shell/worker-pidfile.js.map +1 -1
- package/dist/spawn/helpers.d.ts +3 -0
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +28 -9
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/lead-launch.d.ts +34 -0
- package/dist/spawn/lead-launch.d.ts.map +1 -0
- package/dist/spawn/lead-launch.js +34 -0
- package/dist/spawn/lead-launch.js.map +1 -0
- package/dist/spawn/lead-process-ownership.d.ts +91 -0
- package/dist/spawn/lead-process-ownership.d.ts.map +1 -0
- package/dist/spawn/lead-process-ownership.js +120 -0
- package/dist/spawn/lead-process-ownership.js.map +1 -0
- package/dist/spawn/lifecycle.d.ts +43 -3
- package/dist/spawn/lifecycle.d.ts.map +1 -1
- package/dist/spawn/lifecycle.js +75 -44
- package/dist/spawn/lifecycle.js.map +1 -1
- package/dist/spawn/liveness.d.ts.map +1 -1
- package/dist/spawn/liveness.js +5 -1
- package/dist/spawn/liveness.js.map +1 -1
- package/dist/spawn/one-shot-process-ownership.d.ts +48 -0
- package/dist/spawn/one-shot-process-ownership.d.ts.map +1 -0
- package/dist/spawn/one-shot-process-ownership.js +44 -0
- package/dist/spawn/one-shot-process-ownership.js.map +1 -0
- package/dist/spawn/process-group-kill.d.ts +79 -0
- package/dist/spawn/process-group-kill.d.ts.map +1 -0
- package/dist/spawn/process-group-kill.js +210 -0
- package/dist/spawn/process-group-kill.js.map +1 -0
- package/dist/spawn/process-spawn.d.ts +18 -1
- package/dist/spawn/process-spawn.d.ts.map +1 -1
- package/dist/spawn/process-spawn.js +51 -20
- package/dist/spawn/process-spawn.js.map +1 -1
- package/dist/spawn/resolution-budget.d.ts +38 -0
- package/dist/spawn/resolution-budget.d.ts.map +1 -0
- package/dist/spawn/resolution-budget.js +87 -0
- package/dist/spawn/resolution-budget.js.map +1 -0
- package/dist/spawn/review-hold-park.d.ts.map +1 -1
- package/dist/spawn/review-hold-park.js +37 -5
- package/dist/spawn/review-hold-park.js.map +1 -1
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +9 -0
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/untracked-lead-sweep.d.ts +29 -0
- package/dist/spawn/untracked-lead-sweep.d.ts.map +1 -0
- package/dist/spawn/untracked-lead-sweep.js +100 -0
- package/dist/spawn/untracked-lead-sweep.js.map +1 -0
- package/dist/spawn/worker-registry.d.ts.map +1 -1
- package/dist/spawn/worker-registry.js +4 -1
- package/dist/spawn/worker-registry.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +8 -6
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/exit-capture-verify.d.ts +41 -0
- package/dist/testing/fixtures/exit-capture-verify.d.ts.map +1 -0
- package/dist/testing/fixtures/exit-capture-verify.js +152 -0
- package/dist/testing/fixtures/exit-capture-verify.js.map +1 -0
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/testing/fixtures/pending-spawn-world.d.ts +7 -0
- package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -1
- package/dist/testing/fixtures/pending-spawn-world.js +21 -1
- package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
- package/dist/testing/fixtures/stubborn-lead-process.d.ts +22 -0
- package/dist/testing/fixtures/stubborn-lead-process.d.ts.map +1 -0
- package/dist/testing/fixtures/stubborn-lead-process.js +68 -0
- package/dist/testing/fixtures/stubborn-lead-process.js.map +1 -0
- package/dist/types/config.d.ts +13 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/focus.d.ts +7 -0
- package/dist/types/focus.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/commit-verdict-record.d.ts +13 -3
- package/dist/verify/commit-verdict-record.d.ts.map +1 -1
- package/dist/verify/commit-verdict-record.js +45 -25
- package/dist/verify/commit-verdict-record.js.map +1 -1
- package/dist/verify/credit-rearm.d.ts +18 -0
- package/dist/verify/credit-rearm.d.ts.map +1 -0
- package/dist/verify/credit-rearm.js +69 -0
- package/dist/verify/credit-rearm.js.map +1 -0
- package/dist/verify/delivery-commit-set.d.ts +10 -0
- package/dist/verify/delivery-commit-set.d.ts.map +1 -0
- package/dist/verify/delivery-commit-set.js +82 -0
- package/dist/verify/delivery-commit-set.js.map +1 -0
- package/dist/verify/explicit-rearm.d.ts.map +1 -1
- package/dist/verify/explicit-rearm.js +2 -0
- package/dist/verify/explicit-rearm.js.map +1 -1
- package/dist/verify/failure-signature.d.ts.map +1 -1
- package/dist/verify/failure-signature.js +1 -0
- package/dist/verify/failure-signature.js.map +1 -1
- package/dist/verify/gate-run-registry.d.ts.map +1 -1
- package/dist/verify/gate-run-registry.js +3 -0
- package/dist/verify/gate-run-registry.js.map +1 -1
- package/dist/verify/injection-stamp.d.ts +29 -0
- package/dist/verify/injection-stamp.d.ts.map +1 -0
- package/dist/verify/injection-stamp.js +139 -0
- package/dist/verify/injection-stamp.js.map +1 -0
- package/dist/verify/misattributed-commits-read.d.ts +31 -0
- package/dist/verify/misattributed-commits-read.d.ts.map +1 -0
- package/dist/verify/misattributed-commits-read.js +47 -0
- package/dist/verify/misattributed-commits-read.js.map +1 -0
- package/dist/verify/misattributed-commits.d.ts +52 -0
- package/dist/verify/misattributed-commits.d.ts.map +1 -0
- package/dist/verify/misattributed-commits.js +148 -0
- package/dist/verify/misattributed-commits.js.map +1 -0
- package/dist/verify/no-own-delta-verdict.d.ts +47 -0
- package/dist/verify/no-own-delta-verdict.d.ts.map +1 -0
- package/dist/verify/no-own-delta-verdict.js +74 -0
- package/dist/verify/no-own-delta-verdict.js.map +1 -0
- package/dist/verify/shortfall-park-escalation.d.ts +41 -0
- package/dist/verify/shortfall-park-escalation.d.ts.map +1 -0
- package/dist/verify/shortfall-park-escalation.js +177 -0
- package/dist/verify/shortfall-park-escalation.js.map +1 -0
- package/dist/verify/shortfall-park.d.ts +109 -0
- package/dist/verify/shortfall-park.d.ts.map +1 -0
- package/dist/verify/shortfall-park.js +208 -0
- package/dist/verify/shortfall-park.js.map +1 -0
- package/dist/verify/shortfall-repeat.d.ts +47 -16
- package/dist/verify/shortfall-repeat.d.ts.map +1 -1
- package/dist/verify/shortfall-repeat.js +77 -23
- package/dist/verify/shortfall-repeat.js.map +1 -1
- package/dist/verify/shortfall-rulings.d.ts +106 -0
- package/dist/verify/shortfall-rulings.d.ts.map +1 -0
- package/dist/verify/shortfall-rulings.js +118 -0
- package/dist/verify/shortfall-rulings.js.map +1 -0
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +10 -4
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/verification-attribution-base.d.ts +26 -0
- package/dist/verify/verification-attribution-base.d.ts.map +1 -0
- package/dist/verify/verification-attribution-base.js +127 -0
- package/dist/verify/verification-attribution-base.js.map +1 -0
- package/dist/verify/verification-attribution-deps.d.ts +32 -0
- package/dist/verify/verification-attribution-deps.d.ts.map +1 -0
- package/dist/verify/verification-attribution-deps.js +209 -0
- package/dist/verify/verification-attribution-deps.js.map +1 -0
- package/dist/verify/verification-baseline.d.ts +6 -0
- package/dist/verify/verification-baseline.d.ts.map +1 -1
- package/dist/verify/verification-baseline.js +27 -11
- package/dist/verify/verification-baseline.js.map +1 -1
- package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
- package/dist/verify/verification-commit-sharing.js +30 -8
- package/dist/verify/verification-commit-sharing.js.map +1 -1
- package/dist/verify/verification-config.d.ts.map +1 -1
- package/dist/verify/verification-config.js +2 -0
- package/dist/verify/verification-config.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +3 -0
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +5 -1
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +61 -120
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +26 -4
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.d.ts +15 -0
- package/dist/verify/verification-deterministic.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.js +1 -12
- package/dist/verify/verification-deterministic.js.map +1 -1
- package/dist/verify/verification-engine.d.ts +9 -6
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +43 -62
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js +19 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/verification-failure-parser.d.ts +57 -1
- package/dist/verify/verification-failure-parser.d.ts.map +1 -1
- package/dist/verify/verification-failure-parser.js +116 -10
- package/dist/verify/verification-failure-parser.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +60 -43
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +115 -120
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verification-history-reset.d.ts +2 -1
- package/dist/verify/verification-history-reset.d.ts.map +1 -1
- package/dist/verify/verification-history-reset.js +4 -2
- package/dist/verify/verification-history-reset.js.map +1 -1
- package/dist/verify/verification-rework-issue.d.ts +87 -0
- package/dist/verify/verification-rework-issue.d.ts.map +1 -0
- package/dist/verify/verification-rework-issue.js +212 -0
- package/dist/verify/verification-rework-issue.js.map +1 -0
- package/dist/verify/verification-rework-messages.d.ts.map +1 -1
- package/dist/verify/verification-rework-messages.js +10 -0
- package/dist/verify/verification-rework-messages.js.map +1 -1
- package/dist/verify/verify-gate-stall.d.ts +2 -0
- package/dist/verify/verify-gate-stall.d.ts.map +1 -1
- package/dist/verify/verify-gate-stall.js +35 -9
- package/dist/verify/verify-gate-stall.js.map +1 -1
- package/dist/verify/verify-restatement.d.ts.map +1 -1
- package/dist/verify/verify-restatement.js +9 -2
- package/dist/verify/verify-restatement.js.map +1 -1
- package/dist/worktree/capture-attribution-read.d.ts +47 -0
- package/dist/worktree/capture-attribution-read.d.ts.map +1 -0
- package/dist/worktree/capture-attribution-read.js +98 -0
- package/dist/worktree/capture-attribution-read.js.map +1 -0
- package/dist/worktree/capture-attribution.d.ts +26 -0
- package/dist/worktree/capture-attribution.d.ts.map +1 -0
- package/dist/worktree/capture-attribution.js +111 -0
- package/dist/worktree/capture-attribution.js.map +1 -0
- package/dist/worktree/index.d.ts.map +1 -1
- package/dist/worktree/index.js +2 -1
- package/dist/worktree/index.js.map +1 -1
- package/dist/worktree/provision.d.ts.map +1 -1
- package/dist/worktree/provision.js +23 -6
- package/dist/worktree/provision.js.map +1 -1
- package/dist/worktree/safety.d.ts +14 -4
- package/dist/worktree/safety.d.ts.map +1 -1
- package/dist/worktree/safety.js +37 -7
- package/dist/worktree/safety.js.map +1 -1
- package/dist/worktree/scratch-guard.d.ts +53 -2
- package/dist/worktree/scratch-guard.d.ts.map +1 -1
- package/dist/worktree/scratch-guard.js +115 -30
- package/dist/worktree/scratch-guard.js.map +1 -1
- package/dist/worktree/unmerged-capture-escalation.d.ts +52 -0
- package/dist/worktree/unmerged-capture-escalation.d.ts.map +1 -0
- package/dist/worktree/unmerged-capture-escalation.js +64 -0
- package/dist/worktree/unmerged-capture-escalation.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { FocusDeliveryInfo } from '../types/index.js';
|
|
2
|
+
import type { updateDeliveryStatus } from '../queries/deliveries.js';
|
|
3
|
+
import type { getDeliveryIssues } from '../queries/issues.js';
|
|
4
|
+
import type { fetchEffectiveWorkflow } from '../queries/workflows.js';
|
|
5
|
+
import type { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
|
|
6
|
+
import type { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
7
|
+
import { type ExternalConditionEvaluator } from '../delivery/external-hold.js';
|
|
8
|
+
import { type CommitVerdictGateDeps, type GateReads } from './review-exit-verdict-gate.js';
|
|
9
|
+
import { type ReviewHeadApproval } from './review-approved-head-gate.js';
|
|
10
|
+
import type { ReviewCensus } from './review-census-record.js';
|
|
11
|
+
/** The focus a pass converges. */
|
|
12
|
+
export interface StandingApprovalFocus {
|
|
13
|
+
organizationId: string;
|
|
14
|
+
productId: string;
|
|
15
|
+
focusId: string;
|
|
16
|
+
focusName: string;
|
|
17
|
+
readOnly: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Injected reads and the single writer; production wiring lives in state-cascade.ts. */
|
|
20
|
+
export interface StandingApprovalDeps extends GateReads, Pick<CommitVerdictGateDeps, 'resolveJudgedCommit'> {
|
|
21
|
+
/** The focus head and the commit its current approval judged. Throws when unreadable. */
|
|
22
|
+
readReviewHeadApproval: () => Promise<ReviewHeadApproval>;
|
|
23
|
+
/** The focus's review censuses, newest first. */
|
|
24
|
+
listReviewCensuses: () => readonly ReviewCensus[];
|
|
25
|
+
isReviewSessionActive: (focusId: string) => boolean;
|
|
26
|
+
getDeliveryIssues: typeof getDeliveryIssues;
|
|
27
|
+
fetchEffectiveWorkflow: typeof fetchEffectiveWorkflow;
|
|
28
|
+
updateDeliveryStatus: typeof updateDeliveryStatus;
|
|
29
|
+
findOpenOperatorHoldForDelivery: typeof findOpenOperatorHoldForDelivery;
|
|
30
|
+
listOpenShortfallProposalIds: typeof listOpenShortfallProposalIds;
|
|
31
|
+
evaluateExternalCondition: ExternalConditionEvaluator;
|
|
32
|
+
}
|
|
33
|
+
/** What one pass did. */
|
|
34
|
+
export interface StandingApprovalOutcome {
|
|
35
|
+
/** Deliveries moved verify -> done on the standing approval. */
|
|
36
|
+
converged: string[];
|
|
37
|
+
/** Candidates left in verify, with the reason. */
|
|
38
|
+
held: Array<{
|
|
39
|
+
deliveryId: string;
|
|
40
|
+
reason: string;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Whether a gate_state carries no hold or failure detail of any kind. Defensive over the JSONB. Pure.
|
|
45
|
+
*
|
|
46
|
+
* `shortfallProposalIds` (the review exit's undisposed-proposal marker) is NOT read
|
|
47
|
+
* here: it only renders a hold this pass re-reads LIVE, fail-closed, before any done
|
|
48
|
+
* write (resolveShortfallHold). Nothing clears that marker at an approved head -- the
|
|
49
|
+
* review exit wrote it and no review runs there -- so treating it as a hold would
|
|
50
|
+
* strand a delivery whose proposals an operator ruling has since disposed. The done
|
|
51
|
+
* write clears gate_state, marker included.
|
|
52
|
+
*/
|
|
53
|
+
export declare function gateStateHoldsNothing(gateState: unknown): boolean;
|
|
54
|
+
/** Whether a delivery sits in verify with a durable verify PASS and no hold. Pure. */
|
|
55
|
+
export declare function isStandingApprovalCandidate(d: Pick<FocusDeliveryInfo, 'executionStatus' | 'verificationOutcome' | 'gateState'>): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Whether the newest census of `approvedSha` is an approving one naming the
|
|
58
|
+
* delivery at its current re-code iteration. Pure.
|
|
59
|
+
*/
|
|
60
|
+
export declare function censusCoversDelivery(censuses: readonly ReviewCensus[], approvedSha: string, delivery: Pick<FocusDeliveryInfo, 'id' | 'iterationCount'>): boolean;
|
|
61
|
+
/** Test seam: forget logged hold reasons. */
|
|
62
|
+
export declare function __resetStandingApprovalConvergenceForTests(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Converge every covered, passed, unheld verify delivery of the focus on its
|
|
65
|
+
* standing approval (see the module header). Never throws.
|
|
66
|
+
*/
|
|
67
|
+
export declare function convergeOnStandingApproval(focus: StandingApprovalFocus, deliveries: readonly FocusDeliveryInfo[], deps: StandingApprovalDeps): Promise<StandingApprovalOutcome>;
|
|
68
|
+
//# sourceMappingURL=standing-approval-convergence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standing-approval-convergence.d.ts","sourceRoot":"","sources":["../../src/completion/standing-approval-convergence.ts"],"names":[],"mappings":"AAmEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAI/E,OAAO,EAA6C,KAAK,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1H,OAAO,EAAwB,KAAK,qBAAqB,EAAE,KAAK,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACjH,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM9D,kCAAkC;AAClC,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,yFAAyF;AACzF,MAAM,WAAW,oBAAqB,SAAQ,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACzG,yFAAyF;IACzF,sBAAsB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC1D,iDAAiD;IACjD,kBAAkB,EAAE,MAAM,SAAS,YAAY,EAAE,CAAC;IAClD,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,+BAA+B,EAAE,OAAO,+BAA+B,CAAC;IACxE,4BAA4B,EAAE,OAAO,4BAA4B,CAAC;IAClE,yBAAyB,EAAE,0BAA0B,CAAC;CACvD;AAED,yBAAyB;AACzB,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kDAAkD;IAClD,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAOD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAQjE;AAED,sFAAsF;AACtF,wBAAgB,2BAA2B,CACzC,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,WAAW,CAAC,GAClF,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,gBAAgB,CAAC,GACzD,OAAO,CAMT;AAKD,6CAA6C;AAC7C,wBAAgB,0CAA0C,IAAI,IAAI,CAEjE;AA6DD;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,SAAS,iBAAiB,EAAE,EACxC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CA4ClC"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/completion/standing-approval-convergence.test.ts,
|
|
3
|
+
// packages/daemon/src/integration/approved-head-hold-release-regression.test.ts,
|
|
4
|
+
// packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
|
|
5
|
+
// packages/daemon/src/integration/standing-approval-release-regression.test.ts
|
|
6
|
+
// PINNED-BY-END
|
|
7
|
+
/**
|
|
8
|
+
* A verify delivery released at an already-approved focus head converges on the
|
|
9
|
+
* STANDING approval: no second review of the unchanged commit, no second approval.
|
|
10
|
+
*
|
|
11
|
+
* Review runs once per distinct focus head (completion/review-approved-head-gate.ts).
|
|
12
|
+
* But a verify delivery can become closable at an approved head with no new commit:
|
|
13
|
+
* the review approved the commit while the delivery was held (a shortfall park,
|
|
14
|
+
* undisposed shortfall proposals, a pending gate verdict), then an operator ruling
|
|
15
|
+
* released the park and verify re-judged the SAME commit as passing. Only a review
|
|
16
|
+
* exit moves verify -> done, so the delivery would sit in verify forever -- and
|
|
17
|
+
* re-opening review for it (the former same-head exception) re-ran review and
|
|
18
|
+
* stamped another approval of the unchanged reviewed_sha.
|
|
19
|
+
*
|
|
20
|
+
* Why converging on that approval is honest: the approval judged the code at this
|
|
21
|
+
* exact commit and approved it; the delivery was in verify when it did (the review
|
|
22
|
+
* census, completion/review-census-record.ts, names it, at the same re-code
|
|
23
|
+
* iteration); and the only thing that kept it out of done was a hold, which is now
|
|
24
|
+
* lowered and which verify has re-judged as a PASS at the same commit. Nothing the
|
|
25
|
+
* review judged has changed, so the review's verdict still stands for it. Where any
|
|
26
|
+
* of those facts is missing, it does NOT converge:
|
|
27
|
+
* - the focus head is not EXACTLY the commit the current approval judged
|
|
28
|
+
* (isHeadAlreadyApproved: both known, same commit) -- a moved head or a revoked
|
|
29
|
+
* approval is review eligibility's business, not this pass's;
|
|
30
|
+
* - the newest census of that commit is not an approving one, or does not name the
|
|
31
|
+
* delivery at its current iteration count (a delivery that reached verify after
|
|
32
|
+
* the approval, or was sent back to coding since, was never judged by it);
|
|
33
|
+
* - the delivery has no durable verify PASS (org_nodes.verification_outcome) or
|
|
34
|
+
* its gate_state carries any hold or failure detail (gateStateHoldsNothing);
|
|
35
|
+
* - a review session is live on the focus (its exit owns routing).
|
|
36
|
+
*
|
|
37
|
+
* Every candidate then crosses the SAME machinery the review exit's report-backed
|
|
38
|
+
* done crosses, in its order (completion/review-exit-phase.ts):
|
|
39
|
+
* resolveReconciledWrite with the standing approval as the approved report
|
|
40
|
+
* (blocking open work -> not done, left for the open-work pass), the operator-hold
|
|
41
|
+
* gate (resolveOperatorHold), the external-hold gate (resolveExternalHold), the
|
|
42
|
+
* shortfall-proposal hold (resolveShortfallHold) and the commit-verdict gate's done
|
|
43
|
+
* read (readDoneRouteVerdict: a PASSING verdict, or no gate configured, for the
|
|
44
|
+
* judged commit -- which must itself be the approved commit), then the done write
|
|
45
|
+
* through updateDeliveryStatus with gate_state cleared and a verify -> done
|
|
46
|
+
* transition recorded. It writes NO focus_reviews row and NO auto-approval record:
|
|
47
|
+
* the approval it reuses is already the merge gate's evidence for exactly this
|
|
48
|
+
* commit (merge/merge-gate-coverage.ts reads the same readLatestApprovedReviewSha).
|
|
49
|
+
*
|
|
50
|
+
* A held delivery is left in verify WITHOUT a hold marker, unlike the review exit:
|
|
51
|
+
* those markers are cleared by the review spawn park and the review exit, and no
|
|
52
|
+
* review runs at an approved head -- a marker would strand the delivery after its
|
|
53
|
+
* hold lifted. This pass writes nothing for a hold and re-reads every hold on the
|
|
54
|
+
* next poll instead (one log line per delivery per reason).
|
|
55
|
+
*
|
|
56
|
+
* FAILS CLOSED: an unreadable head, approval, census, issue list, workflow or hold
|
|
57
|
+
* leaves the delivery in verify; the next poll retries. A read failure is never
|
|
58
|
+
* converted into done.
|
|
59
|
+
*
|
|
60
|
+
* Runs once per focus per cascade poll, after checkAutoReview
|
|
61
|
+
* (completion/state-cascade.ts runFocusCascadePass).
|
|
62
|
+
*
|
|
63
|
+
* @module completion/standing-approval-convergence
|
|
64
|
+
*/
|
|
65
|
+
import { DELIVERY_STATUS } from '@telora/daemon-core';
|
|
66
|
+
import { sameCommit } from '../queries/focus-review-approval.js';
|
|
67
|
+
import { resolveReconciledWrite } from '../delivery/delivery-reconciler-apply.js';
|
|
68
|
+
import { resolveOperatorHold, describeOperatorHold } from '../delivery/operator-hold.js';
|
|
69
|
+
import { resolveExternalHold, describeExternalHold } from '../delivery/external-hold.js';
|
|
70
|
+
import { resolveShortfallHold, describeShortfallHold } from './review-exit-shortfall.js';
|
|
71
|
+
import { readDoneRouteVerdict } from './review-exit-verdict-gate.js';
|
|
72
|
+
import { isHeadAlreadyApproved } from './review-approved-head-gate.js';
|
|
73
|
+
import { readShortfallPark } from '../verify/shortfall-park.js';
|
|
74
|
+
import { createLogger } from '../shell/log.js';
|
|
75
|
+
const log = createLogger({ module: 'state-cascade' });
|
|
76
|
+
/** gate_state keys that record a verify failure or a hold (never a pass). */
|
|
77
|
+
const HOLD_OR_FAILURE_KEYS = [
|
|
78
|
+
'verification', 'shortfallReconciliation', 'evidenceUnavailable', 'operatorHold', 'externalHold', 'commitVerdictHold',
|
|
79
|
+
];
|
|
80
|
+
/**
|
|
81
|
+
* Whether a gate_state carries no hold or failure detail of any kind. Defensive over the JSONB. Pure.
|
|
82
|
+
*
|
|
83
|
+
* `shortfallProposalIds` (the review exit's undisposed-proposal marker) is NOT read
|
|
84
|
+
* here: it only renders a hold this pass re-reads LIVE, fail-closed, before any done
|
|
85
|
+
* write (resolveShortfallHold). Nothing clears that marker at an approved head -- the
|
|
86
|
+
* review exit wrote it and no review runs there -- so treating it as a hold would
|
|
87
|
+
* strand a delivery whose proposals an operator ruling has since disposed. The done
|
|
88
|
+
* write clears gate_state, marker included.
|
|
89
|
+
*/
|
|
90
|
+
export function gateStateHoldsNothing(gateState) {
|
|
91
|
+
if (gateState == null)
|
|
92
|
+
return true;
|
|
93
|
+
if (typeof gateState !== 'object' || Array.isArray(gateState))
|
|
94
|
+
return false;
|
|
95
|
+
const gate = gateState;
|
|
96
|
+
const blocking = Array.isArray(gate.blocking) ? gate.blocking : [];
|
|
97
|
+
if (blocking.some((b) => !(b != null && typeof b === 'object' && b.passed === true)))
|
|
98
|
+
return false;
|
|
99
|
+
if (HOLD_OR_FAILURE_KEYS.some((k) => gate[k] != null))
|
|
100
|
+
return false;
|
|
101
|
+
return readShortfallPark(gateState) === null;
|
|
102
|
+
}
|
|
103
|
+
/** Whether a delivery sits in verify with a durable verify PASS and no hold. Pure. */
|
|
104
|
+
export function isStandingApprovalCandidate(d) {
|
|
105
|
+
return d.executionStatus === DELIVERY_STATUS.VERIFY && d.verificationOutcome === 'passed' && gateStateHoldsNothing(d.gateState);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Whether the newest census of `approvedSha` is an approving one naming the
|
|
109
|
+
* delivery at its current re-code iteration. Pure.
|
|
110
|
+
*/
|
|
111
|
+
export function censusCoversDelivery(censuses, approvedSha, delivery) {
|
|
112
|
+
const newest = censuses
|
|
113
|
+
.filter((c) => sameCommit(c.sha, approvedSha))
|
|
114
|
+
.reduce((a, c) => (a === null || Date.parse(c.recordedAt) > Date.parse(a.recordedAt) ? c : a), null);
|
|
115
|
+
if (!newest?.approving)
|
|
116
|
+
return false;
|
|
117
|
+
return newest.verifyDeliveries.some((v) => v.id === delivery.id && v.iterationCount === (delivery.iterationCount ?? 0));
|
|
118
|
+
}
|
|
119
|
+
/** The last hold reason logged per delivery (one line per delivery per reason, not one per poll). */
|
|
120
|
+
const lastLoggedReason = new Map();
|
|
121
|
+
/** Test seam: forget logged hold reasons. */
|
|
122
|
+
export function __resetStandingApprovalConvergenceForTests() {
|
|
123
|
+
lastLoggedReason.clear();
|
|
124
|
+
}
|
|
125
|
+
function logHeldOnce(focus, d, sha, reason) {
|
|
126
|
+
if (lastLoggedReason.get(d.id) === reason)
|
|
127
|
+
return;
|
|
128
|
+
lastLoggedReason.set(d.id, reason);
|
|
129
|
+
log.info(`[state-cascade] Delivery "${d.name}" on "${focus.focusName}" passed verify at the approved head ${sha.slice(0, 12)} ` +
|
|
130
|
+
`but does not converge on the standing approval: ${reason}. Left in verify; re-read next poll.`);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* The reason the review exit's done gates withhold `d`, or null when every gate lets
|
|
134
|
+
* it through. `shortfall` is the focus-scoped proposal read, taken once per pass.
|
|
135
|
+
*/
|
|
136
|
+
async function doneWithheldBy(deps, focus, d, approvedSha, shortfall) {
|
|
137
|
+
const issues = await deps.getDeliveryIssues(d.id);
|
|
138
|
+
const decision = resolveReconciledWrite({
|
|
139
|
+
input: {
|
|
140
|
+
currentStatus: DELIVERY_STATUS.VERIFY,
|
|
141
|
+
issues: issues.map((i) => ({ status: i.status, issueType: i.issueType })),
|
|
142
|
+
gitState: { worktreeCommitted: true },
|
|
143
|
+
guardVerdict: null,
|
|
144
|
+
// The standing approval is the approved report this delivery's review stamped.
|
|
145
|
+
reviewState: { reviewRequested: true, reportExists: true, sessionType: 'review', succeeded: true, outcome: 'approved', inspected: true },
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
if (decision.target !== DELIVERY_STATUS.DONE)
|
|
149
|
+
return `the reconciler routes it to ${decision.target} (${decision.result.reason})`;
|
|
150
|
+
const operatorHold = await resolveOperatorHold(deps, d.id, focus.focusId);
|
|
151
|
+
if (operatorHold.held)
|
|
152
|
+
return describeOperatorHold(operatorHold);
|
|
153
|
+
const externalHold = await resolveExternalHold(deps, d.id, d.gateState, deps.evaluateExternalCondition);
|
|
154
|
+
if (externalHold.held)
|
|
155
|
+
return describeExternalHold(externalHold);
|
|
156
|
+
if (!shortfall.clear)
|
|
157
|
+
return describeShortfallHold(shortfall);
|
|
158
|
+
const verdict = await readDoneRouteVerdict(deps, { ...focus, currentBranchTip: approvedSha }, { read_only: focus.readOnly }, d);
|
|
159
|
+
if (verdict.state !== 'passed' && verdict.state !== 'unconfigured') {
|
|
160
|
+
return `the gate verdict for ${(verdict.sha ?? '<unreadable>').slice(0, 12)} is ${verdict.state}`;
|
|
161
|
+
}
|
|
162
|
+
if (verdict.sha === null || !sameCommit(verdict.sha, approvedSha)) {
|
|
163
|
+
return `the judged commit ${(verdict.sha ?? '<unreadable>').slice(0, 12)} is not the approved commit`;
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
/** Read the head/approval pair; null (logged) when it cannot be read or the head is not the approved commit. */
|
|
168
|
+
async function readApprovedHead(deps, focus) {
|
|
169
|
+
let read;
|
|
170
|
+
try {
|
|
171
|
+
read = await deps.readReviewHeadApproval();
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
log.warn(`[state-cascade] "${focus.focusName}": approved head unreadable -- no standing-approval convergence this poll: ${err.message}`);
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
return isHeadAlreadyApproved(read) ? read.approvedSha : null;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Converge every covered, passed, unheld verify delivery of the focus on its
|
|
181
|
+
* standing approval (see the module header). Never throws.
|
|
182
|
+
*/
|
|
183
|
+
export async function convergeOnStandingApproval(focus, deliveries, deps) {
|
|
184
|
+
const outcome = { converged: [], held: [] };
|
|
185
|
+
const candidates = deliveries.filter(isStandingApprovalCandidate);
|
|
186
|
+
for (const d of deliveries)
|
|
187
|
+
if (!candidates.includes(d))
|
|
188
|
+
lastLoggedReason.delete(d.id);
|
|
189
|
+
if (candidates.length === 0 || deps.isReviewSessionActive(focus.focusId))
|
|
190
|
+
return outcome;
|
|
191
|
+
const approvedSha = await readApprovedHead(deps, focus);
|
|
192
|
+
if (approvedSha === null)
|
|
193
|
+
return outcome;
|
|
194
|
+
const censuses = deps.listReviewCensuses();
|
|
195
|
+
const covered = candidates.filter((d) => censusCoversDelivery(censuses, approvedSha, d));
|
|
196
|
+
for (const d of candidates.filter((c) => !covered.includes(c))) {
|
|
197
|
+
const reason = 'no approving review of that commit saw it in verify at its current iteration';
|
|
198
|
+
outcome.held.push({ deliveryId: d.id, reason });
|
|
199
|
+
logHeldOnce(focus, d, approvedSha, reason);
|
|
200
|
+
}
|
|
201
|
+
if (covered.length === 0)
|
|
202
|
+
return outcome;
|
|
203
|
+
const shortfall = await resolveShortfallHold(deps, focus.focusId, focus.focusName);
|
|
204
|
+
for (const d of covered) {
|
|
205
|
+
try {
|
|
206
|
+
const reason = await doneWithheldBy(deps, focus, d, approvedSha, shortfall);
|
|
207
|
+
if (reason !== null) {
|
|
208
|
+
outcome.held.push({ deliveryId: d.id, reason });
|
|
209
|
+
logHeldOnce(focus, d, approvedSha, reason);
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const doneStage = (await deps.fetchEffectiveWorkflow(d.id)).stages.find((s) => s.name === DELIVERY_STATUS.DONE);
|
|
213
|
+
await deps.updateDeliveryStatus(d.id, DELIVERY_STATUS.DONE, doneStage?.id ?? null, null, undefined, {
|
|
214
|
+
organizationId: focus.organizationId, fromStatus: DELIVERY_STATUS.VERIFY,
|
|
215
|
+
});
|
|
216
|
+
lastLoggedReason.delete(d.id);
|
|
217
|
+
outcome.converged.push(d.id);
|
|
218
|
+
log.info(`[state-cascade] Delivery "${d.name}" moved from verify to done on "${focus.focusName}": it converged on the ` +
|
|
219
|
+
`standing approval at ${approvedSha.slice(0, 12)} (the current focus_reviews approval or recorded auto-approval ` +
|
|
220
|
+
`of that commit, whose review saw it in verify); verify passed and no hold stands. No review run, no approval written.`);
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
const reason = `a read or write failed (${err.message})`;
|
|
224
|
+
outcome.held.push({ deliveryId: d.id, reason });
|
|
225
|
+
logHeldOnce(focus, d, approvedSha, reason);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return outcome;
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=standing-approval-convergence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standing-approval-convergence.js","sourceRoot":"","sources":["../../src/completion/standing-approval-convergence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ReviewHeadApproval } from './review-approved-head-gate.js';
|
|
2
|
+
import type { StandingApprovalDeps } from './standing-approval-convergence.js';
|
|
3
|
+
/** The production deps for one focus; `readReviewHeadApproval` is the cascade's own head/approval read for it. */
|
|
4
|
+
export declare function defaultStandingApprovalDeps(productId: string, focusId: string, readReviewHeadApproval: () => Promise<ReviewHeadApproval>): StandingApprovalDeps;
|
|
5
|
+
//# sourceMappingURL=standing-approval-deps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standing-approval-deps.d.ts","sourceRoot":"","sources":["../../src/completion/standing-approval-deps.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,kHAAkH;AAClH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,sBAAsB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,GACxD,oBAAoB,CAatB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/completion/standing-approval-convergence.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* Production wiring of the standing-approval convergence
|
|
6
|
+
* (completion/standing-approval-convergence.ts): the same reads and single writer
|
|
7
|
+
* the review exit is wired with (completion/review-exit-deps.ts), bound to one
|
|
8
|
+
* focus. Kept out of the convergence module so its tests import it without the
|
|
9
|
+
* query layer.
|
|
10
|
+
*
|
|
11
|
+
* @module completion/standing-approval-deps
|
|
12
|
+
*/
|
|
13
|
+
import { updateDeliveryStatus } from '../queries/deliveries.js';
|
|
14
|
+
import { getDeliveryIssues } from '../queries/issues.js';
|
|
15
|
+
import { fetchEffectiveWorkflow } from '../queries/workflows.js';
|
|
16
|
+
import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
|
|
17
|
+
import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
18
|
+
import { getActiveTeams } from '../focus/focus-team-state.js';
|
|
19
|
+
import { commitGateSeams } from '../verify/commit-gate-configured.js';
|
|
20
|
+
import { makeDeferredRequestClosureEvaluator } from '../delivery/external-hold.js';
|
|
21
|
+
import { listReviewCensuses } from './review-census-record.js';
|
|
22
|
+
/** The production deps for one focus; `readReviewHeadApproval` is the cascade's own head/approval read for it. */
|
|
23
|
+
export function defaultStandingApprovalDeps(productId, focusId, readReviewHeadApproval) {
|
|
24
|
+
return {
|
|
25
|
+
...commitGateSeams,
|
|
26
|
+
readReviewHeadApproval,
|
|
27
|
+
listReviewCensuses: () => listReviewCensuses(productId, focusId),
|
|
28
|
+
isReviewSessionActive: (id) => getActiveTeams().get(id)?.sessionType === 'review',
|
|
29
|
+
getDeliveryIssues,
|
|
30
|
+
fetchEffectiveWorkflow,
|
|
31
|
+
updateDeliveryStatus,
|
|
32
|
+
findOpenOperatorHoldForDelivery,
|
|
33
|
+
listOpenShortfallProposalIds,
|
|
34
|
+
evaluateExternalCondition: makeDeferredRequestClosureEvaluator(productId),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=standing-approval-deps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standing-approval-deps.js","sourceRoot":"","sources":["../../src/completion/standing-approval-deps.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,kFAAkF;AAClF,gBAAgB;AAEhB;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,kHAAkH;AAClH,MAAM,UAAU,2BAA2B,CACzC,SAAiB,EACjB,OAAe,EACf,sBAAyD;IAEzD,OAAO;QACL,GAAG,eAAe;QAClB,sBAAsB;QACtB,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC;QAChE,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,KAAK,QAAQ;QACjF,iBAAiB;QACjB,sBAAsB;QACtB,oBAAoB;QACpB,+BAA+B;QAC/B,4BAA4B;QAC5B,yBAAyB,EAAE,mCAAmC,CAAC,SAAS,CAAC;KAC1E,CAAC;AACJ,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { FocusDeliveryInfo } from '../types/index.js';
|
|
|
3
3
|
import { type SettleSweepOutcome } from './settle-injection-sweep.js';
|
|
4
4
|
import { type FocusExecutionPhase } from '../focus/focus-phase.js';
|
|
5
5
|
import { type ReviewNextStepIssue } from './review-next-step.js';
|
|
6
|
+
import { type ReviewHeadApproval } from './review-approved-head-gate.js';
|
|
6
7
|
/** Injectable dependencies for cascade functions (testing). */
|
|
7
8
|
export interface CascadeDeps {
|
|
8
9
|
getFocusDeliveries: (focusId: string) => Promise<FocusDeliveryInfo[]>;
|
|
@@ -56,6 +57,16 @@ export interface CascadeDeps {
|
|
|
56
57
|
* open-work matrix; a partial test deps object omitting it reads no issues.
|
|
57
58
|
*/
|
|
58
59
|
getFocusIssues?: (focusId: string) => Promise<readonly ReviewNextStepIssue[]>;
|
|
60
|
+
/**
|
|
61
|
+
* The focus branch head and the commit its current approval judged
|
|
62
|
+
* (completion/review-approved-head-gate.ts). checkAutoReview declines to open
|
|
63
|
+
* the window when both are known and name the same commit: review runs once per
|
|
64
|
+
* distinct focus head, so a gate_state rewrite that invalidates the in-memory
|
|
65
|
+
* signature cannot re-approve an unchanged head. Fails OPEN on a throw or an
|
|
66
|
+
* unknown value. Wired per focus by runFocusCascadePass (it needs the row's
|
|
67
|
+
* branch_name); a partial test deps object omitting it behaves as before.
|
|
68
|
+
*/
|
|
69
|
+
readReviewHeadApproval?: (focusId: string) => Promise<ReviewHeadApproval>;
|
|
59
70
|
}
|
|
60
71
|
/**
|
|
61
72
|
* Whether a settle sweep's outcome permits latching the focus as swept (quiet
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-cascade.d.ts","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state-cascade.d.ts","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAW3D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAA8C,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAgB7G,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAQxC,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D;;;;;;;;;OASG;IACH,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;IAC9E;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC3E;AAwCD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAExE;AAcD;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAIxD;AAoFD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAyFf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,EACjC,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAsEf;AAwKD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
2
|
// Pinned by: packages/daemon/src/completion/delivery-judgment-completeness.test.ts,
|
|
3
|
+
// packages/daemon/src/completion/review-approved-head-gate.test.ts,
|
|
3
4
|
// packages/daemon/src/completion/review-cycle-cap-regression.test.ts,
|
|
4
5
|
// packages/daemon/src/completion/review-exit-breaker-hold.test.ts,
|
|
5
6
|
// packages/daemon/src/completion/review-next-step.test.ts,
|
|
@@ -8,8 +9,15 @@
|
|
|
8
9
|
// packages/daemon/src/completion/state-cascade.test.ts,
|
|
9
10
|
// packages/daemon/src/focus/focus-reaches-review-with-held-delivery.test.ts,
|
|
10
11
|
// packages/daemon/src/focus/mixed-aggregate-review-gate.test.ts,
|
|
12
|
+
// packages/daemon/src/focus/parked-shortfall-spawn.test.ts,
|
|
11
13
|
// packages/daemon/src/focus/pending-spawn-review-next-step.test.ts,
|
|
12
|
-
// packages/daemon/src/focus/review-cycle-cap-hold.test.ts
|
|
14
|
+
// packages/daemon/src/focus/review-cycle-cap-hold.test.ts,
|
|
15
|
+
// packages/daemon/src/integration/approved-head-gate-failure-respawn-regression.test.ts,
|
|
16
|
+
// packages/daemon/src/integration/approved-head-hold-release-regression.test.ts,
|
|
17
|
+
// packages/daemon/src/integration/failed-verdict-review-exit-respawn-regression.test.ts,
|
|
18
|
+
// packages/daemon/src/integration/failed-verdict-review-loop-regression.test.ts,
|
|
19
|
+
// packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
|
|
20
|
+
// packages/daemon/src/integration/standing-approval-release-regression.test.ts
|
|
13
21
|
// PINNED-BY-END
|
|
14
22
|
/**
|
|
15
23
|
* Deterministic state cascade engine.
|
|
@@ -56,6 +64,9 @@ import { reconcileCoverageIncompleteHold } from './coverage-stabilized.js';
|
|
|
56
64
|
import { reconcileReviewCycleCapFiling } from './review-cycle-cap.js';
|
|
57
65
|
import { resolveReviewCycleCapHold } from '../focus/review-cycle-cap-hold.js';
|
|
58
66
|
import { hasOpenFocusEscalation as _hasOpenFocusEscalation } from '../queries/escalations.js';
|
|
67
|
+
import { declinesReviewAtApprovedHead, readReviewHeadApproval, } from './review-approved-head-gate.js';
|
|
68
|
+
import { convergeOnStandingApproval } from './standing-approval-convergence.js';
|
|
69
|
+
import { defaultStandingApprovalDeps } from './standing-approval-deps.js';
|
|
59
70
|
import { createLogger } from '../shell/log.js';
|
|
60
71
|
const log = createLogger({ module: 'state-cascade' });
|
|
61
72
|
const defaultDeps = {
|
|
@@ -78,6 +89,8 @@ const defaultDeps = {
|
|
|
78
89
|
* re-iteration (status change, new merge commit) still re-triggers review.
|
|
79
90
|
*/
|
|
80
91
|
const lastReviewSignature = new Map();
|
|
92
|
+
/** Focuses whose current all-parked episode was already logged (one line per episode, not one per poll). */
|
|
93
|
+
const parkedFocusesLogged = new Set();
|
|
81
94
|
/**
|
|
82
95
|
* Focuses whose anchored-injection settle sweep has already fully succeeded this
|
|
83
96
|
* run, so a winding_down focus is not re-fetched every poll (keeping a terminal
|
|
@@ -123,6 +136,7 @@ function computeReviewSignature(deliveries) {
|
|
|
123
136
|
export function __resetReviewSignaturesForTesting() {
|
|
124
137
|
lastReviewSignature.clear();
|
|
125
138
|
settledSweptFocuses.clear();
|
|
139
|
+
parkedFocusesLogged.clear();
|
|
126
140
|
}
|
|
127
141
|
/**
|
|
128
142
|
* When a focus reaches the verifying phase and auto-review is enabled
|
|
@@ -192,6 +206,13 @@ function declinesReviewWindowOnIssues(focusId, next) {
|
|
|
192
206
|
}
|
|
193
207
|
return false;
|
|
194
208
|
}
|
|
209
|
+
function logParkedFocusOnce(focusId, parkedCount) {
|
|
210
|
+
if (parkedFocusesLogged.has(focusId))
|
|
211
|
+
return;
|
|
212
|
+
parkedFocusesLogged.add(focusId);
|
|
213
|
+
log.info(`[state-cascade] Not opening a review window on focus ${focusId}: all ${parkedCount} verify delivery(ies) are ` +
|
|
214
|
+
`parked on a repeating verify shortfall -- neither review nor coding is next until verify releases a park.`);
|
|
215
|
+
}
|
|
195
216
|
export async function checkAutoReview(focusId, phase, pipelineConfig, reviewRequestedAt, deliveries, deps = defaultDeps) {
|
|
196
217
|
// The window OPENS at convergence (phase 'verifying' = active === 0, verify > 0):
|
|
197
218
|
// that is exactly when a review team can spawn (a focus runs one team; a review
|
|
@@ -217,6 +238,12 @@ export async function checkAutoReview(focusId, phase, pipelineConfig, reviewRequ
|
|
|
217
238
|
});
|
|
218
239
|
if (next.step === 'not_converged')
|
|
219
240
|
return;
|
|
241
|
+
// Every verify delivery is parked on a repeating shortfall: no review window, no skip record -- verify re-judgement is next.
|
|
242
|
+
if (next.step === 'parked') {
|
|
243
|
+
logParkedFocusOnce(focusId, next.verifyDeliveries.length);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
parkedFocusesLogged.delete(focusId);
|
|
220
247
|
const { verifyDeliveries } = next;
|
|
221
248
|
if (next.step === 'review_disabled') {
|
|
222
249
|
await recordDisabledReviewSkip(deps, focusId, verifyDeliveries.length);
|
|
@@ -248,6 +275,10 @@ export async function checkAutoReview(focusId, phase, pipelineConfig, reviewRequ
|
|
|
248
275
|
log.info(`[state-cascade] Auto-review HELD for focus ${focusId}: review-cycle cap reached without converging; not re-stamping.`);
|
|
249
276
|
return;
|
|
250
277
|
}
|
|
278
|
+
// Approved head: the focus head is the commit its current approval already judged, so a review would only re-approve it.
|
|
279
|
+
// A delivery released at that head converges on the standing approval instead (standing-approval-convergence.ts).
|
|
280
|
+
if (await declinesReviewAtApprovedHead(focusId, deps.readReviewHeadApproval))
|
|
281
|
+
return;
|
|
251
282
|
try {
|
|
252
283
|
await deps.setReviewRequestedAt(focusId, new Date().toISOString());
|
|
253
284
|
lastReviewSignature.set(focusId, signature);
|
|
@@ -369,14 +400,22 @@ async function runFocusCascadePass(pc, focus) {
|
|
|
369
400
|
deliveries: deliveries.map(d => ({ executionStatus: d.executionStatus })),
|
|
370
401
|
reviewRequestedAt: focus.review_requested_at,
|
|
371
402
|
});
|
|
403
|
+
const readHeadApproval = () => readReviewHeadApproval({
|
|
404
|
+
productId: pc.productId, focusId: focus.focus_id, branchName: focus.branch_name, repoPath: pc.repoPath,
|
|
405
|
+
integrationBranch: pc.integrationBranch,
|
|
406
|
+
});
|
|
372
407
|
await checkAutoReview(focus.focus_id, phase, focus.pipeline_config, focus.review_requested_at, deliveries,
|
|
373
408
|
// The review-cycle cap hold reads this row's count -- the same hold every spawn gate reads.
|
|
409
|
+
// The approved-head gate reads this row's branch identity.
|
|
374
410
|
{
|
|
375
411
|
...defaultDeps,
|
|
376
412
|
isReviewCycleCapHeld: () => resolveReviewCycleCapHold({
|
|
377
413
|
focusId: focus.focus_id, focusName: focus.focus_name, reviewCycleCount: focus.review_cycle_count,
|
|
378
414
|
}),
|
|
415
|
+
readReviewHeadApproval: readHeadApproval,
|
|
379
416
|
});
|
|
417
|
+
// A verify delivery released at the approved head closes on that approval, not on a second review of the same commit.
|
|
418
|
+
await convergeOnStandingApproval({ organizationId: pc.organizationId, productId: pc.productId, focusId: focus.focus_id, focusName: focus.focus_name, readOnly: focus.read_only }, deliveries, defaultStandingApprovalDeps(pc.productId, focus.focus_id, readHeadApproval));
|
|
380
419
|
await clearStaleReviewRequest(focus.focus_id, phase, focus.review_requested_at, deliveries, focus.reviewed_through_sha);
|
|
381
420
|
// Retire anchored injections at focus scope on the lifecycle that
|
|
382
421
|
// ACTUALLY runs -- the derived winding_down settle (TEL-5). This
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-cascade.js","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state-cascade.js","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"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"}
|