@telora/daemon 0.23.47 → 0.23.54
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 +4 -3
- package/dist/cli/open.d.ts +67 -12
- package/dist/cli/open.d.ts.map +1 -1
- package/dist/cli/open.js +164 -62
- package/dist/cli/open.js.map +1 -1
- package/dist/completion/review-exit/review-census-record.d.ts.map +1 -1
- package/dist/completion/review-exit/review-census-record.js +2 -0
- package/dist/completion/review-exit/review-census-record.js.map +1 -1
- package/dist/completion/state-cascade/failed-verdict-stranded-filing.d.ts +35 -0
- package/dist/completion/state-cascade/failed-verdict-stranded-filing.d.ts.map +1 -0
- package/dist/completion/state-cascade/failed-verdict-stranded-filing.js +93 -0
- package/dist/completion/state-cascade/failed-verdict-stranded-filing.js.map +1 -0
- package/dist/completion/state-cascade/review-approved-head-gate.d.ts.map +1 -1
- package/dist/completion/state-cascade/review-approved-head-gate.js +1 -0
- package/dist/completion/state-cascade/review-approved-head-gate.js.map +1 -1
- package/dist/completion/state-cascade/review-next-step.d.ts +19 -6
- package/dist/completion/state-cascade/review-next-step.d.ts.map +1 -1
- package/dist/completion/state-cascade/review-next-step.js +6 -2
- package/dist/completion/state-cascade/review-next-step.js.map +1 -1
- package/dist/completion/state-cascade/review-request-gate.d.ts +5 -0
- package/dist/completion/state-cascade/review-request-gate.d.ts.map +1 -1
- package/dist/completion/state-cascade/review-request-gate.js +7 -1
- package/dist/completion/state-cascade/review-request-gate.js.map +1 -1
- package/dist/completion/state-cascade/review-verify-judgment-gate.d.ts +137 -0
- package/dist/completion/state-cascade/review-verify-judgment-gate.d.ts.map +1 -0
- package/dist/completion/state-cascade/review-verify-judgment-gate.js +98 -0
- package/dist/completion/state-cascade/review-verify-judgment-gate.js.map +1 -0
- package/dist/completion/state-cascade/standing-approval-convergence.d.ts +8 -2
- package/dist/completion/state-cascade/standing-approval-convergence.d.ts.map +1 -1
- package/dist/completion/state-cascade/standing-approval-convergence.js +33 -7
- package/dist/completion/state-cascade/standing-approval-convergence.js.map +1 -1
- package/dist/completion/state-cascade/standing-approval-failed-verdict.d.ts +107 -0
- package/dist/completion/state-cascade/standing-approval-failed-verdict.d.ts.map +1 -0
- package/dist/completion/state-cascade/standing-approval-failed-verdict.js +121 -0
- package/dist/completion/state-cascade/standing-approval-failed-verdict.js.map +1 -0
- package/dist/completion/state-cascade/standing-approval-stranded.d.ts +29 -3
- package/dist/completion/state-cascade/standing-approval-stranded.d.ts.map +1 -1
- package/dist/completion/state-cascade/standing-approval-stranded.js +120 -7
- package/dist/completion/state-cascade/standing-approval-stranded.js.map +1 -1
- package/dist/completion/state-cascade/state-cascade.d.ts +14 -0
- package/dist/completion/state-cascade/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade/state-cascade.js +15 -6
- package/dist/completion/state-cascade/state-cascade.js.map +1 -1
- package/dist/completion/team-exit/status-advance-phase.d.ts +7 -0
- package/dist/completion/team-exit/status-advance-phase.d.ts.map +1 -1
- package/dist/completion/team-exit/status-advance-phase.js +26 -17
- package/dist/completion/team-exit/status-advance-phase.js.map +1 -1
- package/dist/composition/advance-precheck-context.d.ts.map +1 -1
- package/dist/composition/advance-precheck-context.js +3 -0
- package/dist/composition/advance-precheck-context.js.map +1 -1
- package/dist/composition/execution-migrations-context.d.ts.map +1 -1
- package/dist/composition/execution-migrations-context.js +1 -20
- package/dist/composition/execution-migrations-context.js.map +1 -1
- package/dist/composition/runtime-delivery-advance-context.d.ts +12 -3
- package/dist/composition/runtime-delivery-advance-context.d.ts.map +1 -1
- package/dist/composition/runtime-delivery-advance-context.js +36 -4
- package/dist/composition/runtime-delivery-advance-context.js.map +1 -1
- package/dist/composition/standing-approval-context.d.ts.map +1 -1
- package/dist/composition/standing-approval-context.js +4 -0
- package/dist/composition/standing-approval-context.js.map +1 -1
- package/dist/composition/state-cascade-context.d.ts +9 -0
- package/dist/composition/state-cascade-context.d.ts.map +1 -1
- package/dist/composition/state-cascade-context.js +21 -1
- package/dist/composition/state-cascade-context.js.map +1 -1
- package/dist/composition/verification-context.js +1 -1
- package/dist/composition/verify-feedback-context.d.ts +5 -1
- package/dist/composition/verify-feedback-context.d.ts.map +1 -1
- package/dist/composition/verify-feedback-context.js +8 -3
- package/dist/composition/verify-feedback-context.js.map +1 -1
- package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
- package/dist/delivery/delivery-lifecycle.js +3 -0
- package/dist/delivery/delivery-lifecycle.js.map +1 -1
- package/dist/delivery/paused-revival.d.ts.map +1 -1
- package/dist/delivery/paused-revival.js +2 -1
- package/dist/delivery/paused-revival.js.map +1 -1
- package/dist/delivery/recorded-concerns.d.ts +5 -2
- package/dist/delivery/recorded-concerns.d.ts.map +1 -1
- package/dist/delivery/recorded-concerns.js +8 -4
- package/dist/delivery/recorded-concerns.js.map +1 -1
- package/dist/focus/focus-poller-auto-advance.d.ts +15 -0
- package/dist/focus/focus-poller-auto-advance.d.ts.map +1 -1
- package/dist/focus/focus-poller-auto-advance.js +23 -15
- package/dist/focus/focus-poller-auto-advance.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 +10 -9
- package/dist/focus/pending-spawn-review-next-step.js.map +1 -1
- package/dist/focus/ready-focus-team-work.d.ts.map +1 -1
- package/dist/focus/ready-focus-team-work.js +2 -1
- package/dist/focus/ready-focus-team-work.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts +5 -0
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +12 -2
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/gate-verdict-section.d.ts.map +1 -1
- package/dist/prompt-sections/gate-verdict-section.js +3 -1
- package/dist/prompt-sections/gate-verdict-section.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts +10 -0
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +21 -6
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/prompt-sections/prompt-listing.d.ts +33 -0
- package/dist/prompt-sections/prompt-listing.d.ts.map +1 -1
- package/dist/prompt-sections/prompt-listing.js +67 -13
- package/dist/prompt-sections/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 +6 -2
- package/dist/prompt-sections/routing-decider-sections.js.map +1 -1
- package/dist/prompt-sections/shared.js +1 -1
- package/dist/prompt-sections/shortfall-gap-lines.d.ts +32 -0
- package/dist/prompt-sections/shortfall-gap-lines.d.ts.map +1 -0
- package/dist/prompt-sections/shortfall-gap-lines.js +58 -0
- package/dist/prompt-sections/shortfall-gap-lines.js.map +1 -0
- package/dist/prompt-sections/shortfall-park-section.d.ts +7 -1
- package/dist/prompt-sections/shortfall-park-section.d.ts.map +1 -1
- package/dist/prompt-sections/shortfall-park-section.js +27 -0
- package/dist/prompt-sections/shortfall-park-section.js.map +1 -1
- package/dist/queries/api-client/shared.js +1 -1
- package/dist/queries/delivery-gate-state/delivery-gate-state.d.ts +43 -16
- package/dist/queries/delivery-gate-state/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state/delivery-gate-state.js +43 -11
- package/dist/queries/delivery-gate-state/delivery-gate-state.js.map +1 -1
- package/dist/queries/delivery-gate-state/shortfall-judgment-record.d.ts +56 -0
- package/dist/queries/delivery-gate-state/shortfall-judgment-record.d.ts.map +1 -0
- package/dist/queries/delivery-gate-state/shortfall-judgment-record.js +123 -0
- package/dist/queries/delivery-gate-state/shortfall-judgment-record.js.map +1 -0
- package/dist/queries/delivery-gate-state/verify-own-holds.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state/verify-own-holds.js +2 -1
- package/dist/queries/delivery-gate-state/verify-own-holds.js.map +1 -1
- package/dist/queries/escalations/cause-key.d.ts +9 -1
- package/dist/queries/escalations/cause-key.d.ts.map +1 -1
- package/dist/queries/escalations/cause-key.js +16 -2
- package/dist/queries/escalations/cause-key.js.map +1 -1
- package/dist/queries/escalations/filing-observation.d.ts.map +1 -1
- package/dist/queries/escalations/filing-observation.js +3 -0
- package/dist/queries/escalations/filing-observation.js.map +1 -1
- package/dist/queries/focus-review/focus-review-approval.d.ts.map +1 -1
- package/dist/queries/focus-review/focus-review-approval.js +1 -0
- package/dist/queries/focus-review/focus-review-approval.js.map +1 -1
- package/dist/queries/focuses/focuses.d.ts.map +1 -1
- package/dist/queries/focuses/focuses.js +8 -4
- package/dist/queries/focuses/focuses.js.map +1 -1
- package/dist/queries/verification/shortfall-rulings.d.ts.map +1 -1
- package/dist/queries/verification/shortfall-rulings.js +3 -1
- package/dist/queries/verification/shortfall-rulings.js.map +1 -1
- package/dist/queries/verification/verification.js +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/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +13 -1
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/supervision/agent-resolvable-promotion.d.ts +3 -2
- package/dist/supervision/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/supervision/agent-resolvable-promotion.js +3 -2
- package/dist/supervision/agent-resolvable-promotion.js.map +1 -1
- package/dist/supervision/escalation-clearing.d.ts +14 -1
- package/dist/supervision/escalation-clearing.d.ts.map +1 -1
- package/dist/supervision/escalation-clearing.js +28 -1
- package/dist/supervision/escalation-clearing.js.map +1 -1
- package/dist/supervision/escalation-suppression.js +1 -1
- package/dist/supervision/focus-delivery-aggregate-phase.d.ts.map +1 -1
- package/dist/supervision/focus-delivery-aggregate-phase.js +1 -0
- package/dist/supervision/focus-delivery-aggregate-phase.js.map +1 -1
- package/dist/supervision/holds.d.ts.map +1 -1
- package/dist/supervision/holds.js +1 -0
- package/dist/supervision/holds.js.map +1 -1
- package/dist/supervision/null-role-spawn.d.ts.map +1 -1
- package/dist/supervision/null-role-spawn.js +1 -0
- package/dist/supervision/null-role-spawn.js.map +1 -1
- package/dist/supervision/stop-registry.d.ts +1 -0
- package/dist/supervision/stop-registry.d.ts.map +1 -1
- package/dist/supervision/stop-rows-delivery.d.ts +8 -0
- package/dist/supervision/stop-rows-delivery.d.ts.map +1 -1
- package/dist/supervision/stop-rows-delivery.js +28 -2
- package/dist/supervision/stop-rows-delivery.js.map +1 -1
- package/dist/supervision/team-work.d.ts.map +1 -1
- package/dist/supervision/team-work.js +1 -0
- package/dist/supervision/team-work.js.map +1 -1
- package/dist/supervision/verify-gate-stall.d.ts.map +1 -1
- package/dist/supervision/verify-gate-stall.js +1 -0
- package/dist/supervision/verify-gate-stall.js.map +1 -1
- package/dist/testing/fixtures/api-client.js +1 -1
- package/dist/testing/fixtures/escalation-store.d.ts +35 -0
- package/dist/testing/fixtures/escalation-store.d.ts.map +1 -0
- package/dist/testing/fixtures/escalation-store.js +86 -0
- package/dist/testing/fixtures/escalation-store.js.map +1 -0
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/testing/fixtures/recording-api-client.js +1 -1
- package/dist/testing/fixtures/shortfall-rework-hold-deps.d.ts +22 -0
- package/dist/testing/fixtures/shortfall-rework-hold-deps.d.ts.map +1 -0
- package/dist/testing/fixtures/shortfall-rework-hold-deps.js +44 -0
- package/dist/testing/fixtures/shortfall-rework-hold-deps.js.map +1 -0
- package/dist/testing/fixtures/verification-feedback-deps.d.ts +7 -2
- package/dist/testing/fixtures/verification-feedback-deps.d.ts.map +1 -1
- package/dist/testing/fixtures/verification-feedback-deps.js +15 -19
- package/dist/testing/fixtures/verification-feedback-deps.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/issue-description-budget.d.ts.map +1 -1
- package/dist/types/issue-description-budget.js +1 -0
- package/dist/types/issue-description-budget.js.map +1 -1
- package/dist/types/issue-status.d.ts +17 -0
- package/dist/types/issue-status.d.ts.map +1 -1
- package/dist/types/issue-status.js +23 -1
- package/dist/types/issue-status.js.map +1 -1
- package/dist/verify/effect-reconciliation/pending-injection-stamp.d.ts.map +1 -1
- package/dist/verify/effect-reconciliation/pending-injection-stamp.js +1 -0
- package/dist/verify/effect-reconciliation/pending-injection-stamp.js.map +1 -1
- package/dist/verify/effect-reconciliation/verify-reconciliation.d.ts +18 -3
- package/dist/verify/effect-reconciliation/verify-reconciliation.d.ts.map +1 -1
- package/dist/verify/effect-reconciliation/verify-reconciliation.js +26 -6
- package/dist/verify/effect-reconciliation/verify-reconciliation.js.map +1 -1
- package/dist/verify/effect-reconciliation/verify-restatement.d.ts +8 -0
- package/dist/verify/effect-reconciliation/verify-restatement.d.ts.map +1 -1
- package/dist/verify/effect-reconciliation/verify-restatement.js +5 -2
- package/dist/verify/effect-reconciliation/verify-restatement.js.map +1 -1
- package/dist/verify/engine/verification-commit-sharing.d.ts +6 -0
- package/dist/verify/engine/verification-commit-sharing.d.ts.map +1 -1
- package/dist/verify/engine/verification-commit-sharing.js +34 -1
- package/dist/verify/engine/verification-commit-sharing.js.map +1 -1
- package/dist/verify/engine/verification-deps.js +1 -1
- package/dist/verify/engine/verification-engine.d.ts.map +1 -1
- package/dist/verify/engine/verification-engine.js +12 -3
- package/dist/verify/engine/verification-engine.js.map +1 -1
- package/dist/verify/gate-config/verification-config.js +1 -1
- package/dist/verify/gate-verdicts/commit-verdict-record.js +1 -1
- package/dist/verify/gate-verdicts/explicit-gate-outcome.d.ts.map +1 -1
- package/dist/verify/gate-verdicts/explicit-gate-outcome.js +2 -0
- package/dist/verify/gate-verdicts/explicit-gate-outcome.js.map +1 -1
- package/dist/verify/gate-verdicts/gate-run-registry.js +1 -1
- package/dist/verify/gate-verdicts/own-gate-verdict.d.ts +10 -0
- package/dist/verify/gate-verdicts/own-gate-verdict.d.ts.map +1 -1
- package/dist/verify/gate-verdicts/own-gate-verdict.js +3 -2
- package/dist/verify/gate-verdicts/own-gate-verdict.js.map +1 -1
- package/dist/verify/outcome-routing/shortfall-rework-issue.d.ts +101 -0
- package/dist/verify/outcome-routing/shortfall-rework-issue.d.ts.map +1 -0
- package/dist/verify/outcome-routing/shortfall-rework-issue.js +250 -0
- package/dist/verify/outcome-routing/shortfall-rework-issue.js.map +1 -0
- package/dist/verify/outcome-routing/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/outcome-routing/verification-evidence-unavailable-feedback.js +4 -1
- package/dist/verify/outcome-routing/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/outcome-routing/verification-feedback.d.ts +38 -7
- package/dist/verify/outcome-routing/verification-feedback.d.ts.map +1 -1
- package/dist/verify/outcome-routing/verification-feedback.js +45 -46
- package/dist/verify/outcome-routing/verification-feedback.js.map +1 -1
- package/dist/verify/outcome-routing/verification-history-reset.d.ts +2 -1
- package/dist/verify/outcome-routing/verification-history-reset.d.ts.map +1 -1
- package/dist/verify/outcome-routing/verification-history-reset.js +5 -2
- package/dist/verify/outcome-routing/verification-history-reset.js.map +1 -1
- package/dist/verify/outcome-routing/verification-model-unavailable-hold.d.ts +2 -1
- package/dist/verify/outcome-routing/verification-model-unavailable-hold.d.ts.map +1 -1
- package/dist/verify/outcome-routing/verification-model-unavailable-hold.js +5 -1
- package/dist/verify/outcome-routing/verification-model-unavailable-hold.js.map +1 -1
- package/dist/verify/outcome-routing/verification-rework-issue.d.ts.map +1 -1
- package/dist/verify/outcome-routing/verification-rework-issue.js +4 -1
- package/dist/verify/outcome-routing/verification-rework-issue.js.map +1 -1
- package/dist/verify/outcome-routing/verification-rework-messages.d.ts +8 -2
- package/dist/verify/outcome-routing/verification-rework-messages.d.ts.map +1 -1
- package/dist/verify/outcome-routing/verification-rework-messages.js +18 -7
- package/dist/verify/outcome-routing/verification-rework-messages.js.map +1 -1
- package/dist/verify/run-selection/default-on-guards.d.ts +15 -0
- package/dist/verify/run-selection/default-on-guards.d.ts.map +1 -1
- package/dist/verify/run-selection/default-on-guards.js +18 -1
- package/dist/verify/run-selection/default-on-guards.js.map +1 -1
- package/dist/verify/run-selection/explicit-rearm.d.ts.map +1 -1
- package/dist/verify/run-selection/explicit-rearm.js +1 -0
- package/dist/verify/run-selection/explicit-rearm.js.map +1 -1
- package/dist/verify/run-selection/pre-review-gate-dispatch.d.ts.map +1 -1
- package/dist/verify/run-selection/pre-review-gate-dispatch.js +15 -6
- package/dist/verify/run-selection/pre-review-gate-dispatch.js.map +1 -1
- package/dist/verify/run-selection/reselection-log-line.d.ts +1 -1
- package/dist/verify/run-selection/reselection-log-line.d.ts.map +1 -1
- package/dist/verify/run-selection/reselection-log-line.js +6 -2
- package/dist/verify/run-selection/reselection-log-line.js.map +1 -1
- package/dist/verify/run-selection/unanswered-dispatch.d.ts +20 -0
- package/dist/verify/run-selection/unanswered-dispatch.d.ts.map +1 -0
- package/dist/verify/run-selection/unanswered-dispatch.js +85 -0
- package/dist/verify/run-selection/unanswered-dispatch.js.map +1 -0
- package/dist/verify/run-selection/verification-default-on.d.ts.map +1 -1
- package/dist/verify/run-selection/verification-default-on.js +2 -1
- package/dist/verify/run-selection/verification-default-on.js.map +1 -1
- package/dist/verify/shortfalls/delivery-commit-set.d.ts.map +1 -1
- package/dist/verify/shortfalls/delivery-commit-set.js +2 -1
- package/dist/verify/shortfalls/delivery-commit-set.js.map +1 -1
- package/dist/verify/shortfalls/latest-shortfall-judgment.d.ts +24 -0
- package/dist/verify/shortfalls/latest-shortfall-judgment.d.ts.map +1 -0
- package/dist/verify/shortfalls/latest-shortfall-judgment.js +94 -0
- package/dist/verify/shortfalls/latest-shortfall-judgment.js.map +1 -0
- package/dist/verify/shortfalls/parked-shortfall-reuse.d.ts.map +1 -1
- package/dist/verify/shortfalls/parked-shortfall-reuse.js +20 -6
- package/dist/verify/shortfalls/parked-shortfall-reuse.js.map +1 -1
- package/dist/verify/shortfalls/shortfall-judgment-log.d.ts +12 -0
- package/dist/verify/shortfalls/shortfall-judgment-log.d.ts.map +1 -0
- package/dist/verify/shortfalls/shortfall-judgment-log.js +56 -0
- package/dist/verify/shortfalls/shortfall-judgment-log.js.map +1 -0
- package/dist/verify/shortfalls/shortfall-park-escalation.d.ts.map +1 -1
- package/dist/verify/shortfalls/shortfall-park-escalation.js +6 -2
- package/dist/verify/shortfalls/shortfall-park-escalation.js.map +1 -1
- package/dist/verify/shortfalls/shortfall-park.d.ts +9 -0
- package/dist/verify/shortfalls/shortfall-park.d.ts.map +1 -1
- package/dist/verify/shortfalls/shortfall-park.js +23 -19
- package/dist/verify/shortfalls/shortfall-park.js.map +1 -1
- package/dist/verify/shortfalls/shortfall-repeat.d.ts +14 -0
- package/dist/verify/shortfalls/shortfall-repeat.d.ts.map +1 -1
- package/dist/verify/shortfalls/shortfall-repeat.js +15 -1
- package/dist/verify/shortfalls/shortfall-repeat.js.map +1 -1
- package/dist/verify/shortfalls/shortfall-rework-hold.d.ts +66 -0
- package/dist/verify/shortfalls/shortfall-rework-hold.d.ts.map +1 -0
- package/dist/verify/shortfalls/shortfall-rework-hold.js +230 -0
- package/dist/verify/shortfalls/shortfall-rework-hold.js.map +1 -0
- package/dist/verify/shortfalls/shortfall-rulings.d.ts +40 -10
- package/dist/verify/shortfalls/shortfall-rulings.d.ts.map +1 -1
- package/dist/verify/shortfalls/shortfall-rulings.js +59 -15
- package/dist/verify/shortfalls/shortfall-rulings.js.map +1 -1
- package/dist/worktree/focus-worktree-state.d.ts.map +1 -1
- package/dist/worktree/focus-worktree-state.js +1 -0
- package/dist/worktree/focus-worktree-state.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,93 @@
|
|
|
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/state-cascade/failed-verdict-stranded-filing.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* What the stranded-delivery filing SAYS when the delivery is held by a failed
|
|
6
|
+
* verify verdict at the approved head (completion/state-cascade/standing-approval-failed-verdict.ts):
|
|
7
|
+
* every held node, by name, and the act that moves it.
|
|
8
|
+
*
|
|
9
|
+
* The passed-delivery filing (completion/state-cascade/standing-approval-stranded.ts
|
|
10
|
+
* buildStrandedEscalation) says "it passed verify at ...", which a failed verdict
|
|
11
|
+
* is not, and names a decline reason, not a node. An operator handed this filing
|
|
12
|
+
* must be able to act from it alone: so it names each held node with what was
|
|
13
|
+
* declared, what was achieved and why it falls short -- or, for a node the judge
|
|
14
|
+
* returned nothing parseable for, says so instead of rendering the placeholder as
|
|
15
|
+
* a gap -- from the live shortfall detail, else the kept last judgment; and it
|
|
16
|
+
* names the act: a shortfall ruling on those nodes (the
|
|
17
|
+
* verify/shortfalls/shortfall-park-escalation.ts ruling tool, or a routing
|
|
18
|
+
* decider's escalation_update carrying shortfallRuling), which verify honours on
|
|
19
|
+
* its next tick with no new commit, or a new delivery commit that closes the gap.
|
|
20
|
+
*
|
|
21
|
+
* Text only, and a LEAF: the envelope (kind, disposition, anchor, cause key) is
|
|
22
|
+
* the stranded module's, so both variants keep one propose-a-human-act shape.
|
|
23
|
+
* Bounded: each free-text field is clipped and the node list is rendered under a
|
|
24
|
+
* budget (types/issue-description-budget.ts), under the escalation description
|
|
25
|
+
* limit.
|
|
26
|
+
*
|
|
27
|
+
* @module completion/state-cascade/failed-verdict-stranded-filing
|
|
28
|
+
*/
|
|
29
|
+
import { clipText, ISSUE_DESCRIPTION_FIELD_CAP, renderBudgetedList, } from '../../types/issue-description-budget.js';
|
|
30
|
+
import { unjudgedShortfallSentence, } from '../../queries/delivery-gate-state/shortfall-judgment-record.js';
|
|
31
|
+
import { SHORTFALL_RULING_ACTION, SHORTFALL_RULING_TOOL } from '../../verify/shortfalls/shortfall-park-escalation.js';
|
|
32
|
+
/** Characters the held-node list may take in the description. */
|
|
33
|
+
const NODE_LIST_BUDGET = 2600;
|
|
34
|
+
/** One held node, as the description lists it. Pure. */
|
|
35
|
+
function nodeItem(n) {
|
|
36
|
+
const field = (text) => clipText(text, ISSUE_DESCRIPTION_FIELD_CAP);
|
|
37
|
+
const head = `tree node ${n.nodeId}\n declared: ${field(n.declared)}\n`;
|
|
38
|
+
if (n.unjudged) {
|
|
39
|
+
return `${head} NO JUDGMENT: ${unjudgedShortfallSentence(n.unjudged)} -- not a gap in the delivery's diff (recorded: ${field(n.reason)})`;
|
|
40
|
+
}
|
|
41
|
+
const citation = n.diffCitation ? `\n diff citation: ${field(n.diffCitation)}` : '';
|
|
42
|
+
return `${head} achieved: ${field(n.achieved)}\n reason: ${field(n.reason)}${citation}`;
|
|
43
|
+
}
|
|
44
|
+
/** The ruling act, worded once for the act and the description. Pure. */
|
|
45
|
+
function rulingAct(nodeIds) {
|
|
46
|
+
return `rule each held node (${nodeIds}) met or excused with a rationale (${SHORTFALL_RULING_TOOL} action ` +
|
|
47
|
+
`${SHORTFALL_RULING_ACTION}, or telora_agent escalation_update with shortfallRuling)`;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The text of the filing for a delivery whose latest verify judgment of the
|
|
51
|
+
* approved commit is a failure (module header). `examined` is false when the pass
|
|
52
|
+
* could not read what else would move it (`reason` says which read). Pure.
|
|
53
|
+
*/
|
|
54
|
+
export function buildFailedVerdictFilingText(input) {
|
|
55
|
+
const { focusName, deliveryName, approvedSha, polls, reason, examined, failed } = input;
|
|
56
|
+
const sha = approvedSha.slice(0, 12);
|
|
57
|
+
const nodeIds = failed.nodes.map((n) => n.nodeId).join(', ');
|
|
58
|
+
const act = `Decide delivery "${deliveryName}" on focus "${focusName}": verify's latest judgment of ${sha}, the commit the ` +
|
|
59
|
+
`focus's standing approval judged, is a FAILURE on node(s) ${nodeIds}. Either ${rulingAct(nodeIds)} -- verify ` +
|
|
60
|
+
`then re-judges ${sha} on its next tick with no new commit -- or have the delivery's team land a new delivery ` +
|
|
61
|
+
`commit (Telora-Delivery trailer) that closes the gap.`;
|
|
62
|
+
const outcome = failed.outcome === 'failed' ? 'recorded failed' : 'reset to unrecorded by its re-work round trip';
|
|
63
|
+
const why = examined
|
|
64
|
+
? `the daemon found nothing that will move it on at least ${polls} consecutive polls: no verify run is in ` +
|
|
65
|
+
`flight for it, it is not parked, no ruling has been recorded since that judgment, and it owes no open work`
|
|
66
|
+
: `the daemon could not examine what else would move it on at least ${polls} consecutive polls: ${reason}`;
|
|
67
|
+
const list = renderBudgetedList(failed.nodes.map(nodeItem), NODE_LIST_BUDGET, {
|
|
68
|
+
moreNote: '(every held node is on the delivery\'s gate_state)',
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
act,
|
|
72
|
+
description: `Delivery "${deliveryName}" is stranded in verify on focus "${focusName}". Verify's latest judgment of ${sha} -- ` +
|
|
73
|
+
`the commit the focus's current approval judged -- is a FAILURE (the row's verify outcome is ${outcome}), and ` +
|
|
74
|
+
`${why}.\n\n` +
|
|
75
|
+
`Held node(s) (verify's judgment at ${failed.heldAt}, commit ${failed.judgedSha.slice(0, 12)}):\n` +
|
|
76
|
+
`${list.lines.join('\n')}\n\n` +
|
|
77
|
+
`No review opens at a head an approval already judged, and verify does not judge an unchanged commit again on ` +
|
|
78
|
+
`its own, so no daemon pass will move this delivery until one of these lands:\n` +
|
|
79
|
+
`- a ruling: ${rulingAct(nodeIds)}. Verify re-judges ${sha} on its next tick, taking the recorded gate verdict, ` +
|
|
80
|
+
`and a passing re-judgement converges the delivery on the standing approval -- no empty commit is needed; or\n` +
|
|
81
|
+
`- a new delivery commit (Telora-Delivery trailer) that closes the gap, judged fresh at the focus's next ` +
|
|
82
|
+
`pre-review run.`,
|
|
83
|
+
whatWasTried: `Standing-approval convergence examined the delivery on each poll (at least ${polls} consecutive): verify's ` +
|
|
84
|
+
`latest judgment of the approved commit stayed the same failure and nothing that re-judges it appeared.`,
|
|
85
|
+
metadata: {
|
|
86
|
+
judgedSha: failed.judgedSha,
|
|
87
|
+
heldAt: failed.heldAt,
|
|
88
|
+
heldNodeIds: failed.nodes.map((n) => n.nodeId),
|
|
89
|
+
verificationOutcome: failed.outcome,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=failed-verdict-stranded-filing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failed-verdict-stranded-filing.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/failed-verdict-stranded-filing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-approved-head-gate.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-approved-head-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-approved-head-gate.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-approved-head-gate.ts"],"names":[],"mappings":"AAuDA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAK7F,uFAAuF;AACvF,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mFAAmF;IACnF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,kIAAkI;AAClI,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,qDAAqD;IACrD,qBAAqB,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpF,mHAAmH;IACnH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,GAAG;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxI;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,EAChE,GAAG,EAAE,gBAAgB,GACpB,WAAW,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC,CAK1D;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAmB7B;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAEvE;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,SAAS,GACnE,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// packages/daemon/src/composition/review-holds-context.test.ts,
|
|
4
4
|
// packages/daemon/src/integration/approved-head-gate-failure-respawn-regression.test.ts,
|
|
5
5
|
// packages/daemon/src/integration/approved-head-hold-release-regression.test.ts,
|
|
6
|
+
// packages/daemon/src/integration/failed-verdict-ruling-rejudge-regression.test.ts,
|
|
6
7
|
// packages/daemon/src/integration/fully-merged-focus-sibling-red-scenario.test.ts,
|
|
7
8
|
// packages/daemon/src/integration/merge-back-approved-head-regression.test.ts,
|
|
8
9
|
// packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-approved-head-gate.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-approved-head-gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-approved-head-gate.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-approved-head-gate.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,6FAA6F;AAC7F,kEAAkE;AAClE,2FAA2F;AAC3F,mFAAmF;AACnF,sFAAsF;AACtF,qFAAqF;AACrF,iFAAiF;AACjF,4FAA4F;AAC5F,iFAAiF;AACjF,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAyB,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AAwCtD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,eAAgE,EAChE,GAAqB;IAErB,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAC7D,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EACzG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CACtE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAgC,EAChC,IAAgC;IAEhC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IACrC,IAAI,WAAW,IAAI,iBAAiB,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;QAChG,+EAA+E;QAC/E,+EAA+E;QAC/E,uEAAuE;QACvE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACtH,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CACN,yBAAyB,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,8CAA8C;gBACnH,uCAAuC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qDAAqD,CACrH,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAC5D,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1G,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAe,EACf,IAAoE;IAEpE,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,qEAAqE,OAAO,IAAI;YAChF,wCAAyC,GAAa,CAAC,OAAO,EAAE,CACjE,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,GAAG,CAAC,IAAI,CACN,wDAAwD,OAAO,aAAa;QAC5E,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qDAAqD;QAC3F,8CAA8C,CAC/C,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -19,13 +19,25 @@ export interface ReviewNextStepIssue {
|
|
|
19
19
|
* The complete review-next-step decision.
|
|
20
20
|
* - not_converged -- the focus is not in phase 'verifying' (nothing active,
|
|
21
21
|
* at least one verify): no review window opens here.
|
|
22
|
-
* - parked -- converged, and
|
|
23
|
-
* repeating verify shortfall (verify/shortfalls/shortfall-park.ts)
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* window opens and no coding
|
|
22
|
+
* - parked -- converged, and a verify delivery is parked on a
|
|
23
|
+
* repeating verify shortfall (verify/shortfalls/shortfall-park.ts)
|
|
24
|
+
* while no UNPARKED one owes open work: neither a coding pass
|
|
25
|
+
* nor a review is next -- verify re-judging a changed commit
|
|
26
|
+
* set (or a ruling) is. No window opens and no coding
|
|
27
|
+
* directive spawns. This holds when only SOME are parked,
|
|
28
|
+
* too: a review opened for the unparked siblings would
|
|
29
|
+
* approve the very head the parked delivery FAILED (or, once
|
|
30
|
+
* a sibling moved the head, has no judgment for at all), and
|
|
31
|
+
* one head would carry a review approval and a verify failure
|
|
32
|
+
* for the same delivery. The park's own escalation
|
|
33
|
+
* (verify/shortfalls/shortfall-park-escalation.ts, handed to a
|
|
34
|
+
* routing decider at once) names the ruling that releases it;
|
|
35
|
+
* the siblings' review waits for that release. When EVERY
|
|
36
|
+
* verify delivery is parked the answer is 'parked' before
|
|
37
|
+
* enablement or issues are read.
|
|
27
38
|
* - review_disabled -- converged, but pipeline_config.review.enabled === false:
|
|
28
|
-
* the verify deliveries reach done with no verdict
|
|
39
|
+
* the verify deliveries reach done with no verdict (a parked
|
|
40
|
+
* one stays held in verify by its park).
|
|
29
41
|
* - open_work -- converged and review-enabled, but an UNPARKED verify
|
|
30
42
|
* delivery carries an open Task/Bug (To Do / In Progress /
|
|
31
43
|
* Blocked): a coding pass, not a review, is next. Open
|
|
@@ -47,6 +59,7 @@ export type ReviewNextStep<D extends ReviewNextStepDelivery> = {
|
|
|
47
59
|
} | {
|
|
48
60
|
step: 'parked';
|
|
49
61
|
verifyDeliveries: D[];
|
|
62
|
+
parkedDeliveries: D[];
|
|
50
63
|
} | {
|
|
51
64
|
step: 'review_disabled';
|
|
52
65
|
verifyDeliveries: D[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-next-step.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-next-step.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AAMvG,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED
|
|
1
|
+
{"version":3,"file":"review-next-step.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-next-step.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AAMvG,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,sBAAsB,IACvD;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;IAAC,gBAAgB,EAAE,CAAC,EAAE,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,gBAAgB,EAAE,CAAC,EAAE,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,gBAAgB,EAAE,CAAC,EAAE,CAAA;CAAE,CAAC;AAa9C;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,SAAS,sBAAsB,EAAE,KAAK,EAAE;IACnF,KAAK,EAAE,2BAA2B,CAAC;IACnC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;IACzB,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;IAC1D;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CACrD,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAuB7B"}
|
|
@@ -54,9 +54,10 @@ export async function resolveReviewNextStep(input) {
|
|
|
54
54
|
const verifyDeliveries = input.deliveries.filter((d) => d.executionStatus === DELIVERY_STATUS.VERIFY);
|
|
55
55
|
if (verifyDeliveries.length === 0)
|
|
56
56
|
return { step: 'not_converged' };
|
|
57
|
-
const
|
|
57
|
+
const parkedDeliveries = verifyDeliveries.filter((d) => shortfallParkRefusingRework(d) !== null);
|
|
58
|
+
const unparked = verifyDeliveries.filter((d) => !parkedDeliveries.includes(d));
|
|
58
59
|
if (unparked.length === 0)
|
|
59
|
-
return { step: 'parked', verifyDeliveries };
|
|
60
|
+
return { step: 'parked', verifyDeliveries, parkedDeliveries };
|
|
60
61
|
if (!isReviewEnabled(input.pipelineConfig))
|
|
61
62
|
return { step: 'review_disabled', verifyDeliveries };
|
|
62
63
|
let issues;
|
|
@@ -72,6 +73,9 @@ export async function resolveReviewNextStep(input) {
|
|
|
72
73
|
const openIssueCount = splitOpenWork(work, concernIds).owed.length;
|
|
73
74
|
if (openIssueCount > 0)
|
|
74
75
|
return { step: 'open_work', verifyDeliveries, openIssueCount };
|
|
76
|
+
// A parked sibling's failure stands at this head: no review may approve it (the 'parked' step above).
|
|
77
|
+
if (parkedDeliveries.length > 0)
|
|
78
|
+
return { step: 'parked', verifyDeliveries, parkedDeliveries };
|
|
75
79
|
return { step: 'review', verifyDeliveries };
|
|
76
80
|
}
|
|
77
81
|
//# sourceMappingURL=review-next-step.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-next-step.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-next-step.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,oFAAoF;AACpF,6DAA6D;AAC7D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"review-next-step.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-next-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
* judges the commit it reviewed (completion/review-exit-holds/review-exit-verdict-gate.ts),
|
|
24
24
|
* and reuses this verdict when the review committed nothing.
|
|
25
25
|
*
|
|
26
|
+
* A pass here is necessary, not sufficient. The per-commit record is written
|
|
27
|
+
* when the gate command's verdict is rendered, before the same dispatch
|
|
28
|
+
* reconciles the delivery's effects and records its outcome, so the request then
|
|
29
|
+
* waits for verify to FINISH judging HEAD (review-verify-judgment-gate.ts).
|
|
30
|
+
*
|
|
26
31
|
* Rationale: docs/DECISIONS.md ("The full gate runs once per focus HEAD, before review").
|
|
27
32
|
*
|
|
28
33
|
* @module completion/state-cascade/review-request-gate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-request-gate.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-request-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-request-gate.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-request-gate.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAE7H,oDAAoD;AACpD,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,kGAAkG;IAClG,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACzD;AAED,oCAAoC;AACpC,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qDAAqD;AACrD,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,oFAAoF;AACpF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAID,2GAA2G;AAC3G,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,CAE9F;AAED,+EAA+E;AAC/E,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE,wBAAwB,EACjC,gBAAgB,EAAE,SAAS,yBAAyB,EAAE,GACrD,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED,yDAAyD;AACzD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAE/E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
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/state-cascade/review-request-gate.test.ts
|
|
2
|
+
// Pinned by: packages/daemon/src/completion/state-cascade/review-request-gate.test.ts,
|
|
3
|
+
// packages/daemon/src/integration/review-opens-after-verify-judgment-regression.test.ts
|
|
3
4
|
// PINNED-BY-END
|
|
4
5
|
/**
|
|
5
6
|
* The gate half of the review REQUEST: a focus's review window opens only on a
|
|
@@ -26,6 +27,11 @@
|
|
|
26
27
|
* judges the commit it reviewed (completion/review-exit-holds/review-exit-verdict-gate.ts),
|
|
27
28
|
* and reuses this verdict when the review committed nothing.
|
|
28
29
|
*
|
|
30
|
+
* A pass here is necessary, not sufficient. The per-commit record is written
|
|
31
|
+
* when the gate command's verdict is rendered, before the same dispatch
|
|
32
|
+
* reconciles the delivery's effects and records its outcome, so the request then
|
|
33
|
+
* waits for verify to FINISH judging HEAD (review-verify-judgment-gate.ts).
|
|
34
|
+
*
|
|
29
35
|
* Rationale: docs/DECISIONS.md ("The full gate runs once per focus HEAD, before review").
|
|
30
36
|
*
|
|
31
37
|
* @module completion/state-cascade/review-request-gate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-request-gate.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-request-gate.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"review-request-gate.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-request-gate.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uFAAuF;AACvF,0FAA0F;AAC1F,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,oBAAoB,EAAyC,MAAM,gDAAgD,CAAC;AA4B7H,MAAM,UAAU,GAAgC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEhF,2GAA2G;AAC3G,MAAM,UAAU,wBAAwB,CAAC,MAAmC;IAC1E,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC;AACtE,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAA2B,EAC3B,OAAiC,EACjC,gBAAsD;IAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE;QACtF,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU,EAAE,CAAC,CAAC,EAAE;QAChB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;KACvB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACV,OAAO,EAAE,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;AAC1D,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,wBAAwB,CAAC,OAA6B;IACpE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,cAAc,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The verify half of the review REQUEST: a focus's review window opens only once
|
|
3
|
+
* verify has FINISHED judging the focus HEAD.
|
|
4
|
+
*
|
|
5
|
+
* The gate half (review-request-gate.ts) reads the gate's per-commit verdict.
|
|
6
|
+
* That record is written the moment the gate command's verdict is rendered --
|
|
7
|
+
* BEFORE the same dispatch reconciles the delivery's declared effects against
|
|
8
|
+
* what the commit achieved, records the delivery's outcome and routes a failure
|
|
9
|
+
* to re-work (verify/engine/verification-engine.ts runVerificationForDelivery).
|
|
10
|
+
* A window opened on the gate verdict alone can therefore put a review approval
|
|
11
|
+
* and a verify failure on one commit. So checkAutoReview (state-cascade.ts) asks
|
|
12
|
+
* here after the gate half, and opens the window only when, for every verify
|
|
13
|
+
* delivery of the focus:
|
|
14
|
+
*
|
|
15
|
+
* - no verify run for it is selected and not finished
|
|
16
|
+
* (verify/gate-verdicts/gate-run-registry.ts: a registration ends only after
|
|
17
|
+
* its dispatch recorded the outcome and routed any failure) -> else in_flight;
|
|
18
|
+
* - it is not PARKED on a repeating shortfall -> else parked;
|
|
19
|
+
* - and, where verify judges it, a verify outcome is recorded FOR HEAD: a
|
|
20
|
+
* pass -> judged; a failure -> failed (its rework is next, not a review);
|
|
21
|
+
* none -> unrecorded.
|
|
22
|
+
*
|
|
23
|
+
* WHAT ATTRIBUTES AN OUTCOME TO HEAD. Only a record that names the commit:
|
|
24
|
+
* - a default-on delivery: the scan's pass memory names HEAD
|
|
25
|
+
* (verify/run-selection/default-on-guards.ts recordedPassSha). It is written
|
|
26
|
+
* by the dispatch after the delivery's outcome was recorded, so after the
|
|
27
|
+
* reconciliation, and only for a pass at a known judged commit. It is in
|
|
28
|
+
* process: a restarted daemon reads unrecorded, selects the delivery once and
|
|
29
|
+
* takes the commit's recorded gate verdict in place of a run;
|
|
30
|
+
* - an explicit-method delivery: the verdict its run recorded
|
|
31
|
+
* (verify/gate-verdicts/explicit-gate-outcome.ts readDeliveryGateOutcome, in
|
|
32
|
+
* process, else on gate_state) applies to HEAD under the gate its row names --
|
|
33
|
+
* it judged HEAD, or judged no commit and so applies to the delivery. It is
|
|
34
|
+
* recorded after the reconciliation too, a failure included.
|
|
35
|
+
* The delivery row's own verification_outcome is NOT a source: it names no commit
|
|
36
|
+
* (a pass recorded for one commit reads as a pass at every later one) and the edge
|
|
37
|
+
* resets a failure to null, so it attributes nothing to HEAD. A finished run that
|
|
38
|
+
* rendered no verdict writes neither record: unrecorded.
|
|
39
|
+
*
|
|
40
|
+
* WHICH DELIVERIES. A delivery verify does not judge never gets an outcome and
|
|
41
|
+
* holds nothing: no gate governs it (verify/gate-config/commit-gate-configured.ts
|
|
42
|
+
* -- a read-only focus, no injection anchor, no gate command, the verification
|
|
43
|
+
* loop off). A PARKED delivery (verify/shortfalls/shortfall-park.ts) keeps the
|
|
44
|
+
* window SHUT: its failure is recorded and stands, judged at a head the park
|
|
45
|
+
* fixed -- the focus head, or an older one a sibling's commit has moved past, so
|
|
46
|
+
* at the head it has either a failure or no judgment at all. A review opened for
|
|
47
|
+
* its unparked siblings would approve that head over the failure, and one head
|
|
48
|
+
* would carry a review approval and a verify failure for the same delivery. It is
|
|
49
|
+
* not rework either: a ruling on its nodes or a new delivery commit releases the
|
|
50
|
+
* park (shortfall-rulings.ts re-selects it), and the park's own escalation
|
|
51
|
+
* (verify/shortfalls/shortfall-park-escalation.ts, handed to a routing decider at
|
|
52
|
+
* once) names that ruling -- that is the route the siblings' review waits on.
|
|
53
|
+
* review-next-step.ts makes the same call one step earlier ('parked'), so the
|
|
54
|
+
* window and the pending-spawn gate agree; this read is the gate the criterion
|
|
55
|
+
* names. A run in flight for a parked delivery reads in_flight: its re-judgement
|
|
56
|
+
* is being rendered.
|
|
57
|
+
*
|
|
58
|
+
* NO WEDGE. This read fails closed, so every way a dispatch can end must leave
|
|
59
|
+
* its delivery with a record for HEAD, out of this read, or selectable again --
|
|
60
|
+
* and the scan selects a focus's verify deliveries for as long as no window is
|
|
61
|
+
* open (verify/run-selection/pre-review-gate-dispatch.ts). A pass writes the
|
|
62
|
+
* record. A failure the gate itself rendered is the gate half's. A pass the
|
|
63
|
+
* reconciliation demoted keeps its run mark only behind a park, which is out of
|
|
64
|
+
* this read: routed to re-work (its return to verify, at the same HEAD too, is
|
|
65
|
+
* judged again), left in verify by a route that did not land, or thrown out of
|
|
66
|
+
* once the gate verdict was recorded, the dispatch drops its own run mark
|
|
67
|
+
* (verify/run-selection/unanswered-dispatch.ts) and the delivery is judged again
|
|
68
|
+
* on the recorded verdict, with no gate run. A dispatch that could not reach its
|
|
69
|
+
* model or make a checkout is un-marked by the scan's guards, and one that
|
|
70
|
+
* started nothing released its mark.
|
|
71
|
+
* An explicit row needs no mark: the edge lists it again while its outcome is
|
|
72
|
+
* null or pending, and the explicit re-arm scan
|
|
73
|
+
* (verify/run-selection/explicit-rearm.ts) selects a pass with no record of its
|
|
74
|
+
* run. A reconciliation whose model retrying cannot cure waits for new input
|
|
75
|
+
* (verify/outcome-routing/incurable-model-hold.ts): the window stays shut with
|
|
76
|
+
* it, and its own escalation names the input that releases it.
|
|
77
|
+
*
|
|
78
|
+
* A read that throws holds the request and is retried next poll. One log line
|
|
79
|
+
* per distinct reason, delivery set and HEAD.
|
|
80
|
+
*
|
|
81
|
+
* History: docs/daemon/history-team-lifecycle.md (completion/state-cascade/review-verify-judgment-gate.ts).
|
|
82
|
+
*
|
|
83
|
+
* @module completion/state-cascade/review-verify-judgment-gate
|
|
84
|
+
*/
|
|
85
|
+
import type { CommitGateSeams } from '../../verify/gate-config/commit-gate-configured.js';
|
|
86
|
+
import { type GateReads } from '../../verify/gate-verdicts/own-gate-verdict.js';
|
|
87
|
+
/** The reads the verify half takes: whether verify judges a delivery, its run in flight, and its recorded outcome. */
|
|
88
|
+
export interface ReviewVerifyJudgmentDeps extends Pick<GateReads, 'isCommitGateConfigured' | 'resolveCommitGate'> {
|
|
89
|
+
/** The commit a focus's deliveries are judged on (its worktree HEAD), or null when unreadable. */
|
|
90
|
+
resolveJudgedCommit: (focusId: string) => string | null;
|
|
91
|
+
/** Whether a verify run for the delivery is selected and not finished (verify/gate-verdicts/gate-run-registry.ts). */
|
|
92
|
+
isGateRunSelected: (deliveryId: string) => boolean;
|
|
93
|
+
/** The verdict an explicit-method run recorded for the delivery, when it applies to `sha` under `gateKey`. */
|
|
94
|
+
readDeliveryGateOutcome: CommitGateSeams['readDeliveryGateOutcome'];
|
|
95
|
+
/** The commit the delivery's default-on verify last passed on, or null (verify/run-selection/default-on-guards.ts). */
|
|
96
|
+
readPassedSha: (deliveryId: string) => string | null;
|
|
97
|
+
}
|
|
98
|
+
/** The focus the request is for. */
|
|
99
|
+
export interface ReviewVerifyJudgmentSubject {
|
|
100
|
+
productId: string;
|
|
101
|
+
focusId: string;
|
|
102
|
+
focusReadOnly: boolean;
|
|
103
|
+
}
|
|
104
|
+
/** The slice of a verify delivery the read takes. */
|
|
105
|
+
export interface ReviewVerifyJudgmentDelivery {
|
|
106
|
+
id: string;
|
|
107
|
+
injectionId: string | null;
|
|
108
|
+
executionStatus?: string | null;
|
|
109
|
+
gateState?: unknown;
|
|
110
|
+
}
|
|
111
|
+
/** Where verify stands on the focus HEAD: finished with it (judged), or what still keeps the window shut. */
|
|
112
|
+
export type VerifyJudgmentState = 'judged' | 'in_flight' | 'parked' | 'unrecorded' | 'failed';
|
|
113
|
+
/** Verify's judgment of the focus HEAD, combined across its verify deliveries. */
|
|
114
|
+
export interface FocusHeadVerifyJudgment {
|
|
115
|
+
state: VerifyJudgmentState;
|
|
116
|
+
sha: string | null;
|
|
117
|
+
/** The deliveries in `state` when it keeps the window shut; empty when judged. */
|
|
118
|
+
deliveryIds: string[];
|
|
119
|
+
}
|
|
120
|
+
/** Read whether verify has finished judging the focus HEAD across its verify deliveries. */
|
|
121
|
+
export declare function readFocusHeadVerifyJudgment(deps: ReviewVerifyJudgmentDeps, subject: ReviewVerifyJudgmentSubject, verifyDeliveries: readonly ReviewVerifyJudgmentDelivery[]): Promise<FocusHeadVerifyJudgment>;
|
|
122
|
+
/** True when the judgment lets the review window open. */
|
|
123
|
+
export declare function verifyJudgmentOpensReviewWindow(judgment: FocusHeadVerifyJudgment): boolean;
|
|
124
|
+
/** The reader checkAutoReview is handed (bound per focus by the cascade pass), over the delivery rows it holds. */
|
|
125
|
+
export type FocusHeadVerifyJudgmentReader<D extends ReviewVerifyJudgmentDelivery = ReviewVerifyJudgmentDelivery> = (focusId: string, verifyDeliveries: readonly D[]) => Promise<FocusHeadVerifyJudgment>;
|
|
126
|
+
/** Test-only: forget every logged decline. */
|
|
127
|
+
export declare function __resetReviewVerifyJudgmentGateForTests(): void;
|
|
128
|
+
/**
|
|
129
|
+
* The review request waits on verify having finished judging the focus HEAD
|
|
130
|
+
* (module header). In flight or unrecorded: the verification tick answers it.
|
|
131
|
+
* Failed: that failure routes re-work, so no review is spawned. Parked: a ruling
|
|
132
|
+
* or a new delivery commit releases it. A read that
|
|
133
|
+
* throws holds the request (fail closed) and is retried next poll. An absent
|
|
134
|
+
* reader holds nothing.
|
|
135
|
+
*/
|
|
136
|
+
export declare function declinesReviewBeforeVerifyJudged<D extends ReviewVerifyJudgmentDelivery>(focusId: string, verifyDeliveries: readonly D[], read: FocusHeadVerifyJudgmentReader<D> | undefined): Promise<boolean>;
|
|
137
|
+
//# sourceMappingURL=review-verify-judgment-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-verify-judgment-gate.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-verify-judgment-gate.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AAC1F,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAMlG,sHAAsH;AACtH,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,SAAS,EAAE,wBAAwB,GAAG,mBAAmB,CAAC;IAC/G,kGAAkG;IAClG,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxD,sHAAsH;IACtH,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,8GAA8G;IAC9G,uBAAuB,EAAE,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACpE,uHAAuH;IACvH,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACtD;AAED,oCAAoC;AACpC,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qDAAqD;AACrD,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,6GAA6G;AAC7G,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE9F,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,kFAAkF;IAClF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AA2BD,4FAA4F;AAC5F,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,wBAAwB,EAC9B,OAAO,EAAE,2BAA2B,EACpC,gBAAgB,EAAE,SAAS,4BAA4B,EAAE,GACxD,OAAO,CAAC,uBAAuB,CAAC,CAQlC;AAED,0DAA0D;AAC1D,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAE1F;AAED,mHAAmH;AACnH,MAAM,MAAM,6BAA6B,CAAC,CAAC,SAAS,4BAA4B,GAAG,4BAA4B,IAAI,CACjH,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,SAAS,CAAC,EAAE,KAC3B,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAKtC,8CAA8C;AAC9C,wBAAgB,uCAAuC,IAAI,IAAI,CAE9D;AAiBD;;;;;;;GAOG;AACH,wBAAsB,gCAAgC,CAAC,CAAC,SAAS,4BAA4B,EAC3F,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,SAAS,CAAC,EAAE,EAC9B,IAAI,EAAE,6BAA6B,CAAC,CAAC,CAAC,GAAG,SAAS,GACjD,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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/state-cascade/review-verify-judgment-gate.test.ts,
|
|
3
|
+
// packages/daemon/src/integration/review-opens-after-verify-judgment-regression.test.ts
|
|
4
|
+
// PINNED-BY-END
|
|
5
|
+
import { resolveGateReads } from '../../verify/gate-verdicts/own-gate-verdict.js';
|
|
6
|
+
import { shortfallParkRefusingRework } from '../../verify/shortfalls/shortfall-park.js';
|
|
7
|
+
import { createLogger } from '../../log/daemon-log.js';
|
|
8
|
+
const log = createLogger({ module: 'state-cascade' });
|
|
9
|
+
/** What keeps the window shut, most telling first: a recorded failure, a run in flight, a park, then no record. */
|
|
10
|
+
const PRECEDENCE = ['failed', 'in_flight', 'parked', 'unrecorded'];
|
|
11
|
+
/** Where verify stands on one verify delivery at `sha` (module header). */
|
|
12
|
+
async function readDeliveryVerifyJudgment(deps, subject, delivery, sha) {
|
|
13
|
+
if (deps.isGateRunSelected(delivery.id))
|
|
14
|
+
return 'in_flight';
|
|
15
|
+
// Parked: its recorded shortfall stands at the head the park fixed, and only a ruling or a new commit releases it --
|
|
16
|
+
// a review now would approve that head over the failure (module header, WHICH DELIVERIES).
|
|
17
|
+
if (shortfallParkRefusingRework(delivery) !== null)
|
|
18
|
+
return 'parked';
|
|
19
|
+
const resolution = await resolveGateReads(deps, {
|
|
20
|
+
...subject, deliveryId: delivery.id, injectionId: delivery.injectionId, gateState: delivery.gateState,
|
|
21
|
+
});
|
|
22
|
+
// No gate governs it: verify never judges it, so no outcome is coming to wait for.
|
|
23
|
+
if (!resolution?.configured)
|
|
24
|
+
return 'judged';
|
|
25
|
+
const explicit = deps.readDeliveryGateOutcome(delivery.id, sha, delivery.gateState, resolution.explicitGateKey);
|
|
26
|
+
if (explicit === 'failed')
|
|
27
|
+
return 'failed';
|
|
28
|
+
if (explicit === 'passed')
|
|
29
|
+
return 'judged';
|
|
30
|
+
return sha !== null && deps.readPassedSha(delivery.id) === sha ? 'judged' : 'unrecorded';
|
|
31
|
+
}
|
|
32
|
+
/** Read whether verify has finished judging the focus HEAD across its verify deliveries. */
|
|
33
|
+
export async function readFocusHeadVerifyJudgment(deps, subject, verifyDeliveries) {
|
|
34
|
+
const sha = deps.resolveJudgedCommit(subject.focusId);
|
|
35
|
+
const states = await Promise.all(verifyDeliveries.map((d) => readDeliveryVerifyJudgment(deps, subject, d, sha)));
|
|
36
|
+
for (const state of PRECEDENCE) {
|
|
37
|
+
const deliveryIds = verifyDeliveries.filter((_d, i) => states[i] === state).map((d) => d.id);
|
|
38
|
+
if (deliveryIds.length > 0)
|
|
39
|
+
return { state, sha, deliveryIds };
|
|
40
|
+
}
|
|
41
|
+
return { state: 'judged', sha, deliveryIds: [] };
|
|
42
|
+
}
|
|
43
|
+
/** True when the judgment lets the review window open. */
|
|
44
|
+
export function verifyJudgmentOpensReviewWindow(judgment) {
|
|
45
|
+
return judgment.state === 'judged';
|
|
46
|
+
}
|
|
47
|
+
/** focusId -> the reason, delivery set and HEAD its declined review request was last logged for (one line each, not per poll). */
|
|
48
|
+
const declineLogged = new Map();
|
|
49
|
+
/** Test-only: forget every logged decline. */
|
|
50
|
+
export function __resetReviewVerifyJudgmentGateForTests() {
|
|
51
|
+
declineLogged.clear();
|
|
52
|
+
}
|
|
53
|
+
/** Why the window stays shut, for the log. */
|
|
54
|
+
function describeDecline(judgment) {
|
|
55
|
+
const head = judgment.sha ? judgment.sha.slice(0, 8) : '(unreadable HEAD)';
|
|
56
|
+
const who = `delivery(ies) ${judgment.deliveryIds.join(', ')}`;
|
|
57
|
+
if (judgment.state === 'failed')
|
|
58
|
+
return `verify FAILED ${who} at ${head}; its rework is next, not a review.`;
|
|
59
|
+
if (judgment.state === 'parked') {
|
|
60
|
+
return `${who} parked on a repeating verify shortfall at ${head} or an earlier head; a review would approve a head its `
|
|
61
|
+
+ 'failure stands on -- a ruling on its nodes or a new delivery commit releases the park (its escalation names the ruling).';
|
|
62
|
+
}
|
|
63
|
+
if (judgment.state === 'in_flight') {
|
|
64
|
+
return `verify is still judging ${who} at ${head} (a run is selected and not finished); the window opens once its outcome is recorded.`;
|
|
65
|
+
}
|
|
66
|
+
return `no verify outcome is recorded yet for ${who} at ${head}; the verification tick judges it.`;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The review request waits on verify having finished judging the focus HEAD
|
|
70
|
+
* (module header). In flight or unrecorded: the verification tick answers it.
|
|
71
|
+
* Failed: that failure routes re-work, so no review is spawned. Parked: a ruling
|
|
72
|
+
* or a new delivery commit releases it. A read that
|
|
73
|
+
* throws holds the request (fail closed) and is retried next poll. An absent
|
|
74
|
+
* reader holds nothing.
|
|
75
|
+
*/
|
|
76
|
+
export async function declinesReviewBeforeVerifyJudged(focusId, verifyDeliveries, read) {
|
|
77
|
+
if (!read)
|
|
78
|
+
return false;
|
|
79
|
+
let judgment;
|
|
80
|
+
try {
|
|
81
|
+
judgment = await read(focusId, verifyDeliveries);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
log.warn(`[state-cascade] Not opening a review window on focus ${focusId}: verify's judgment of its HEAD could not be read: ${err.message}`);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
if (verifyJudgmentOpensReviewWindow(judgment)) {
|
|
88
|
+
declineLogged.delete(focusId);
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
const key = `${judgment.state}:${judgment.deliveryIds.join(',')}@${judgment.sha ?? 'unreadable'}`;
|
|
92
|
+
if (declineLogged.get(focusId) !== key) {
|
|
93
|
+
declineLogged.set(focusId, key);
|
|
94
|
+
log.info(`[state-cascade] Not opening a review window on focus ${focusId}: ${describeDecline(judgment)}`);
|
|
95
|
+
}
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=review-verify-judgment-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-verify-judgment-gate.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/review-verify-judgment-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@ import { type CommitVerdictGateDeps } from '../review-exit-holds/review-exit-ver
|
|
|
10
10
|
import type { GateReads } from '../../verify/gate-verdicts/own-gate-verdict.js';
|
|
11
11
|
import { type ReviewHeadApproval } from './review-approved-head-gate.js';
|
|
12
12
|
import type { ReviewCensus } from '../review-exit/review-census-record.js';
|
|
13
|
-
import { type StrandedEscalationFiler } from './standing-approval-stranded.js';
|
|
13
|
+
import { type StrandedEscalationFiler, type StrandedEscalationResolver } from './standing-approval-stranded.js';
|
|
14
|
+
import type { ShortfallRulingsReader } from '../../verify/shortfalls/shortfall-rulings.js';
|
|
14
15
|
/** The focus a pass converges. */
|
|
15
16
|
export interface StandingApprovalFocus {
|
|
16
17
|
organizationId: string;
|
|
@@ -36,6 +37,10 @@ export interface StandingApprovalDeps extends GateReads, Pick<CommitVerdictGateD
|
|
|
36
37
|
externalHoldClock: () => string;
|
|
37
38
|
/** Files the one escalation for a delivery declined identically across polls (standing-approval-stranded.ts). */
|
|
38
39
|
fileStrandedEscalation?: StrandedEscalationFiler;
|
|
40
|
+
/** Resolves a delivery's open stranded filings once its stranding ended (standing-approval-stranded.ts). */
|
|
41
|
+
resolveStrandedEscalations?: StrandedEscalationResolver;
|
|
42
|
+
/** The delivery's active shortfall rulings: a failed verdict awaiting re-judgement on one is not stranded. */
|
|
43
|
+
readShortfallRulings?: ShortfallRulingsReader;
|
|
39
44
|
/** The focus's recorded concern ids (delivery/recorded-concerns.ts), read once per pass; fail-closed to empty. */
|
|
40
45
|
readRecordedConcernIds: RecordedConcernReader;
|
|
41
46
|
}
|
|
@@ -73,7 +78,8 @@ export declare function censusCoversDelivery(censuses: readonly ReviewCensus[],
|
|
|
73
78
|
export declare function __resetStandingApprovalConvergenceForTests(): void;
|
|
74
79
|
/**
|
|
75
80
|
* Converge every covered, passed, unheld verify delivery of the focus on its
|
|
76
|
-
* standing approval (see the module header).
|
|
81
|
+
* standing approval, and examine every failed-verdict one (see the module header).
|
|
82
|
+
* Never throws.
|
|
77
83
|
*/
|
|
78
84
|
export declare function convergeOnStandingApproval(focus: StandingApprovalFocus, deliveries: readonly FocusDeliveryInfo[], deps: StandingApprovalDeps): Promise<StandingApprovalOutcome>;
|
|
79
85
|
//# sourceMappingURL=standing-approval-convergence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standing-approval-convergence.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/standing-approval-convergence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"standing-approval-convergence.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/standing-approval-convergence.ts"],"names":[],"mappings":"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"}
|