@telora/daemon 0.23.48 → 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 +2 -2
- 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/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/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 +1 -1
|
@@ -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":"AAAA,8FAA8F;AAC9F,+FAA+F;AAC/F,0FAA0F;AAC1F,gBAAgB;AAwFhB,OAAO,EAAE,gBAAgB,EAAkB,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AAwCtD,mHAAmH;AACnH,MAAM,UAAU,GAA0D,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAE1H,2EAA2E;AAC3E,KAAK,UAAU,0BAA0B,CACvC,IAA8B,EAC9B,OAAoC,EACpC,QAAsC,EACtC,GAAkB;IAElB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,WAAW,CAAC;IAC5D,qHAAqH;IACrH,2FAA2F;IAC3F,IAAI,2BAA2B,CAAC,QAAQ,CAAC,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACpE,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE;QAC9C,GAAG,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS;KACtG,CAAC,CAAC;IACH,mFAAmF;IACnF,IAAI,CAAC,UAAU,EAAE,UAAU;QAAE,OAAO,QAAQ,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IAChH,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;AAC3F,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAA8B,EAC9B,OAAoC,EACpC,gBAAyD;IAEzD,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,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACjH,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AACnD,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,+BAA+B,CAAC,QAAiC;IAC/E,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC;AACrC,CAAC;AAQD,kIAAkI;AAClI,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,8CAA8C;AAC9C,MAAM,UAAU,uCAAuC;IACrD,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,8CAA8C;AAC9C,SAAS,eAAe,CAAC,QAAiC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC3E,MAAM,GAAG,GAAG,iBAAiB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,iBAAiB,GAAG,OAAO,IAAI,qCAAqC,CAAC;IAC7G,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,GAAG,8CAA8C,IAAI,yDAAyD;cACpH,0HAA0H,CAAC;IACjI,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,2BAA2B,GAAG,OAAO,IAAI,uFAAuF,CAAC;IAC1I,CAAC;IACD,OAAO,yCAAyC,GAAG,OAAO,IAAI,oCAAoC,CAAC;AACrG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,OAAe,EACf,gBAA8B,EAC9B,IAAkD;IAElD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,QAAiC,CAAC;IACtC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,wDAAwD,OAAO,sDAAuD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACxJ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,+BAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;IAClG,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;QACvC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,wDAAwD,OAAO,KAAK,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -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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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
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/state-cascade/standing-approval-convergence.test.ts,
|
|
3
|
+
// packages/daemon/src/completion/state-cascade/standing-approval-failed-verdict.test.ts,
|
|
3
4
|
// packages/daemon/src/completion/state-cascade/standing-approval-stranded.test.ts,
|
|
4
5
|
// packages/daemon/src/composition/review-holds-context.test.ts,
|
|
5
6
|
// packages/daemon/src/integration/approved-head-hold-release-regression.test.ts,
|
|
7
|
+
// packages/daemon/src/integration/failed-verdict-ruling-rejudge-regression.test.ts,
|
|
8
|
+
// packages/daemon/src/integration/last-shortfall-judgment-round-trip.test.ts,
|
|
6
9
|
// packages/daemon/src/integration/merge-back-approved-head-regression.test.ts,
|
|
7
10
|
// packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
|
|
8
11
|
// packages/daemon/src/integration/standing-approval-release-regression.test.ts
|
|
@@ -65,6 +68,15 @@
|
|
|
65
68
|
* the identical reason across consecutive polls is reported ONCE, anchored to it
|
|
66
69
|
* (completion/state-cascade/standing-approval-stranded.ts).
|
|
67
70
|
*
|
|
71
|
+
* A FAILED verdict at the approved head is examined on the same poll, never
|
|
72
|
+
* converged (completion/state-cascade/standing-approval-failed-verdict.ts): a verify
|
|
73
|
+
* delivery whose latest verify judgment of the approved commit is a shortfall
|
|
74
|
+
* failure, with no verify run, park, new ruling or owed work answering for it, is
|
|
75
|
+
* declined `failed_verdict` and counted by the same stranded streak. Once a
|
|
76
|
+
* delivery's stranding ends -- this pass converged it, or it left verify -- its
|
|
77
|
+
* open stranded filing is resolved (standing-approval-stranded.ts
|
|
78
|
+
* resolveClearedStrands).
|
|
79
|
+
*
|
|
68
80
|
* FAILS CLOSED: an unreadable head, approval, census, issue list, workflow or hold
|
|
69
81
|
* leaves the delivery in verify; the next poll retries. A read failure is never
|
|
70
82
|
* converted into done.
|
|
@@ -87,7 +99,8 @@ import { readDoneRouteVerdict, verifyRunHoldsDone, } from '../review-exit-holds/
|
|
|
87
99
|
import { isHeadAlreadyApproved } from './review-approved-head-gate.js';
|
|
88
100
|
import { readShortfallPark } from '../../queries/delivery-gate-state/delivery-gate-state.js';
|
|
89
101
|
import { createLogger } from '../../log/daemon-log.js';
|
|
90
|
-
import { reportStandingApprovalDeclines, } from './standing-approval-stranded.js';
|
|
102
|
+
import { reportStandingApprovalDeclines, resolveClearedStrands, } from './standing-approval-stranded.js';
|
|
103
|
+
import { examineFailedVerdicts, failedVerdictCandidates, forgetFailedVerdictNotes, } from './standing-approval-failed-verdict.js';
|
|
91
104
|
const log = createLogger({ module: 'state-cascade' });
|
|
92
105
|
/** gate_state keys that record a verify failure or a hold (never a pass). */
|
|
93
106
|
const HOLD_OR_FAILURE_KEYS = [
|
|
@@ -140,6 +153,7 @@ const lastLoggedReason = new Map();
|
|
|
140
153
|
/** Test seam: forget logged hold reasons. */
|
|
141
154
|
export function __resetStandingApprovalConvergenceForTests() {
|
|
142
155
|
lastLoggedReason.clear();
|
|
156
|
+
forgetFailedVerdictNotes();
|
|
143
157
|
}
|
|
144
158
|
function logHeldOnce(focus, d, sha, reason) {
|
|
145
159
|
if (lastLoggedReason.get(d.id) === reason)
|
|
@@ -212,22 +226,23 @@ async function readApprovedHead(deps, focus) {
|
|
|
212
226
|
}
|
|
213
227
|
/**
|
|
214
228
|
* Converge every covered, passed, unheld verify delivery of the focus on its
|
|
215
|
-
* standing approval (see the module header).
|
|
229
|
+
* standing approval, and examine every failed-verdict one (see the module header).
|
|
230
|
+
* Never throws.
|
|
216
231
|
*/
|
|
217
232
|
export async function convergeOnStandingApproval(focus, deliveries, deps) {
|
|
218
233
|
const outcome = { converged: [], held: [] };
|
|
219
234
|
const candidates = deliveries.filter(isStandingApprovalCandidate);
|
|
235
|
+
const failed = failedVerdictCandidates(deliveries);
|
|
220
236
|
for (const d of deliveries)
|
|
221
237
|
if (!candidates.includes(d))
|
|
222
238
|
lastLoggedReason.delete(d.id);
|
|
223
239
|
const seen = deliveries.map((d) => d.id);
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
const approved = await readApprovedHead(deps, focus);
|
|
240
|
+
const approved = (candidates.length === 0 && failed.length === 0) || deps.isReviewSessionActive(focus.focusId)
|
|
241
|
+
? null
|
|
242
|
+
: await readApprovedHead(deps, focus);
|
|
229
243
|
if (approved === null) {
|
|
230
244
|
await reportStandingApprovalDeclines(focus, null, seen, [], deps.fileStrandedEscalation);
|
|
245
|
+
await resolveClearedStrands(focus, deliveries, [], null, deps.resolveStrandedEscalations);
|
|
231
246
|
return outcome;
|
|
232
247
|
}
|
|
233
248
|
const { approvedSha } = approved;
|
|
@@ -244,9 +259,20 @@ export async function convergeOnStandingApproval(focus, deliveries, deps) {
|
|
|
244
259
|
}
|
|
245
260
|
if (covered.length > 0)
|
|
246
261
|
await convergeCovered(focus, covered, deps, approved, outcome, decline);
|
|
262
|
+
if (failed.length > 0)
|
|
263
|
+
declines.push(...await examineFailed(focus, failed, deps, approved, outcome));
|
|
247
264
|
await reportStandingApprovalDeclines(focus, approvedSha, seen, declines, deps.fileStrandedEscalation);
|
|
265
|
+
await resolveClearedStrands(focus, deliveries, outcome.converged, approvedSha, deps.resolveStrandedEscalations);
|
|
248
266
|
return outcome;
|
|
249
267
|
}
|
|
268
|
+
/** Examine the failed-verdict candidates at the approved head; each counted one is also reported as held. */
|
|
269
|
+
async function examineFailed(focus, failed, deps, approved, outcome) {
|
|
270
|
+
const head = { approvedSha: approved.approvedSha, advanceHead: approved.advance?.head ?? null };
|
|
271
|
+
const declines = await examineFailedVerdicts(focus, failed, head, deps, () => deps.readRecordedConcernIds(focus.focusId));
|
|
272
|
+
for (const d of declines)
|
|
273
|
+
outcome.held.push({ deliveryId: d.deliveryId, reason: d.reason });
|
|
274
|
+
return declines;
|
|
275
|
+
}
|
|
250
276
|
/** Cross each census-covered candidate through the done gates, writing done for every one they let through. */
|
|
251
277
|
async function convergeCovered(focus, covered, deps, approved, outcome, decline) {
|
|
252
278
|
const shortfall = await resolveShortfallHold(deps, focus.focusId, focus.focusName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standing-approval-convergence.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/standing-approval-convergence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standing-approval-convergence.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/standing-approval-convergence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The standing-approval pass's BACKSTOP for a FAILED verdict: a verify delivery
|
|
3
|
+
* whose latest verify judgment of the already-approved focus head is a failure is
|
|
4
|
+
* examined on every cascade poll and, when nothing will move it, reported as a
|
|
5
|
+
* decline that the stranded counter files after the same
|
|
6
|
+
* STANDING_APPROVAL_STRANDED_POLLS identical polls as a passed one
|
|
7
|
+
* (completion/state-cascade/standing-approval-stranded.ts), naming each held node
|
|
8
|
+
* (completion/state-cascade/failed-verdict-stranded-filing.ts).
|
|
9
|
+
*
|
|
10
|
+
* WHY. completion/state-cascade/standing-approval-convergence.ts examined only a
|
|
11
|
+
* delivery whose recorded verify outcome is `passed`. A failed one at an approved
|
|
12
|
+
* head has no other mover: review does not reopen at that head
|
|
13
|
+
* (completion/state-cascade/review-approved-head-gate.ts), verify does not judge an
|
|
14
|
+
* unchanged commit again on its own, and an approval does not cover a failed
|
|
15
|
+
* verdict, so it never converges -- and the convergence's candidate filter dropped
|
|
16
|
+
* it before the stranded counter ever saw it, so nothing was filed either.
|
|
17
|
+
*
|
|
18
|
+
* WHAT IS READ AS "FAILED AT THE APPROVED HEAD", in order:
|
|
19
|
+
* 1. verify/shortfalls/latest-shortfall-judgment.ts readFailedShortfallJudgment:
|
|
20
|
+
* the delivery sits in verify, unparked; its row's verification_outcome is
|
|
21
|
+
* 'failed' or unrecorded (null -- the edge resets a failure on its re-work
|
|
22
|
+
* round trip); no deterministic-failure, blind-evidence or awaited-model
|
|
23
|
+
* detail stands live; and its latest shortfall judgment is the LIVE
|
|
24
|
+
* gate_state.shortfallReconciliation, else the KEPT
|
|
25
|
+
* verificationHistory.lastShortfallJudgment, naming at least one node;
|
|
26
|
+
* 2. that judgment's commit (its judgedSha: the commit its re-work writer
|
|
27
|
+
* stamped, else its gate verdict's sha) is the approved commit, or the head
|
|
28
|
+
* a foreign-only advance moved past it. A judgment naming no commit, or
|
|
29
|
+
* another commit, is not about this head (a later commit is judged at the
|
|
30
|
+
* focus's pre-review run).
|
|
31
|
+
* The row's outcome is never read alone: it names no commit.
|
|
32
|
+
*
|
|
33
|
+
* NEVER CONVERGES. A failed verdict is not covered by an approval; this pass only
|
|
34
|
+
* reports it. Its done gates are not crossed.
|
|
35
|
+
*
|
|
36
|
+
* NOT COUNTED -- something already answers for the delivery, and the identical-poll
|
|
37
|
+
* count starts over like any other change of state:
|
|
38
|
+
* - a verify run is selected or in flight for it (isGateRunSelected): verify is
|
|
39
|
+
* judging it now;
|
|
40
|
+
* - it is PARKED: the park filed its one escalation
|
|
41
|
+
* (verify/shortfalls/shortfall-park-escalation.ts) and a ruling releases it
|
|
42
|
+
* (rule 1 above reads no park);
|
|
43
|
+
* - a ruling the judgment did not apply is in force (shortfall-park.ts
|
|
44
|
+
* rulingRecordedSince against the fingerprint its repeat record carries): it
|
|
45
|
+
* awaits re-judgement, which the ruling re-arm selects
|
|
46
|
+
* (verify/shortfalls/shortfall-rulings.ts);
|
|
47
|
+
* - it owes open work (delivery/recorded-concerns.ts splitOpenWork over its work
|
|
48
|
+
* issues): a coding pass is next, and the live open-work pass routes it.
|
|
49
|
+
* An unreadable input (its issues, or its rulings) decides nothing: like the
|
|
50
|
+
* passed path's, the delivery is declined `read_failed`, counted and filed after
|
|
51
|
+
* the same polls -- still naming the held nodes -- so a read that never comes back
|
|
52
|
+
* does not hide it.
|
|
53
|
+
*
|
|
54
|
+
* THE SIGNATURE the streak compares is the approved commit, the row's outcome and
|
|
55
|
+
* the judgment (when it held, the commit it judged, and per node its id, its
|
|
56
|
+
* unjudged discriminator and its reason): a new head, a changed outcome or a new
|
|
57
|
+
* judgment starts the count over.
|
|
58
|
+
*
|
|
59
|
+
* History: docs/daemon/history-team-lifecycle.md (completion/state-cascade/standing-approval-failed-verdict.ts).
|
|
60
|
+
*
|
|
61
|
+
* @module completion/state-cascade/standing-approval-failed-verdict
|
|
62
|
+
*/
|
|
63
|
+
import type { FocusDeliveryInfo } from '../../types/index.js';
|
|
64
|
+
import type { getDeliveryIssues } from '../../queries/deliveries/issues.js';
|
|
65
|
+
import { type FailedShortfallJudgment } from '../../verify/shortfalls/latest-shortfall-judgment.js';
|
|
66
|
+
import type { ShortfallRulingsReader } from '../../verify/shortfalls/shortfall-rulings.js';
|
|
67
|
+
import type { StandingApprovalDecline } from './standing-approval-stranded.js';
|
|
68
|
+
/** The reads the examination takes (a slice of StandingApprovalDeps). */
|
|
69
|
+
export interface FailedVerdictDeps {
|
|
70
|
+
/** Whether a verify run for the delivery is selected or in flight. Absent: none is. */
|
|
71
|
+
isGateRunSelected?: (deliveryId: string) => boolean;
|
|
72
|
+
getDeliveryIssues: typeof getDeliveryIssues;
|
|
73
|
+
/** The delivery's active shortfall rulings and their fingerprint. Absent: none are known. */
|
|
74
|
+
readShortfallRulings?: ShortfallRulingsReader;
|
|
75
|
+
}
|
|
76
|
+
/** A verify delivery whose latest judgment is a shortfall failure, before its commit is compared with the head. */
|
|
77
|
+
export interface FailedVerdictCandidate {
|
|
78
|
+
delivery: FocusDeliveryInfo;
|
|
79
|
+
failed: FailedShortfallJudgment;
|
|
80
|
+
}
|
|
81
|
+
/** The approved commit, and the head a foreign-only advance moved past it (null when none). */
|
|
82
|
+
export interface FailedVerdictHead {
|
|
83
|
+
approvedSha: string;
|
|
84
|
+
advanceHead: string | null;
|
|
85
|
+
}
|
|
86
|
+
/** The focus the examination logs under. */
|
|
87
|
+
interface FailedVerdictFocus {
|
|
88
|
+
focusId: string;
|
|
89
|
+
focusName: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The deliveries whose latest verify judgment is a shortfall failure (rule 1 of
|
|
93
|
+
* the module header); every other delivery's logged state is forgotten.
|
|
94
|
+
*/
|
|
95
|
+
export declare function failedVerdictCandidates(deliveries: readonly FocusDeliveryInfo[]): FailedVerdictCandidate[];
|
|
96
|
+
/** What the streak compares for a failed-verdict decline (module header, THE SIGNATURE). Pure. */
|
|
97
|
+
export declare function failedVerdictSignature(failed: FailedShortfallJudgment, approvedSha: string): string;
|
|
98
|
+
/** Forget every logged state (the convergence's test seam calls it). */
|
|
99
|
+
export declare function forgetFailedVerdictNotes(): void;
|
|
100
|
+
/**
|
|
101
|
+
* Examine each failed-verdict candidate at the approved head and return the
|
|
102
|
+
* declines to count (module header). `readConcernIds` is called at most once.
|
|
103
|
+
* Never throws: a read that fails is a `read_failed` decline.
|
|
104
|
+
*/
|
|
105
|
+
export declare function examineFailedVerdicts(focus: FailedVerdictFocus, candidates: readonly FailedVerdictCandidate[], head: FailedVerdictHead, deps: FailedVerdictDeps, readConcernIds: () => Promise<ReadonlySet<string>>): Promise<StandingApprovalDecline[]>;
|
|
106
|
+
export {};
|
|
107
|
+
//# sourceMappingURL=standing-approval-failed-verdict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standing-approval-failed-verdict.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/standing-approval-failed-verdict.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAI5E,OAAO,EAA+B,KAAK,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAEjI,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAM/E,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,6FAA6F;IAC7F,oBAAoB,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAED,mHAAmH;AACnH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED,+FAA+F;AAC/F,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,4CAA4C;AAC5C,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,GAAG,sBAAsB,EAAE,CAQ1G;AASD,kGAAkG;AAClG,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGnG;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAkDD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,SAAS,sBAAsB,EAAE,EAC7C,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,iBAAiB,EACvB,cAAc,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GACjD,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAgCpC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
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/standing-approval-failed-verdict.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
import { filterWorkIssues } from '../../types/issue-status.js';
|
|
5
|
+
import { splitOpenWork } from '../../delivery/recorded-concerns.js';
|
|
6
|
+
import { sameCommit } from '../../queries/focus-review/focus-review-approval.js';
|
|
7
|
+
import { readFailedShortfallJudgment } from '../../verify/shortfalls/latest-shortfall-judgment.js';
|
|
8
|
+
import { rulingRecordedSince } from '../../verify/shortfalls/shortfall-park.js';
|
|
9
|
+
import { createLogger } from '../../log/daemon-log.js';
|
|
10
|
+
const log = createLogger({ module: 'state-cascade' });
|
|
11
|
+
/** deliveryId -> the last state logged for it (one line per delivery per state, not one per poll). */
|
|
12
|
+
const lastNoted = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* The deliveries whose latest verify judgment is a shortfall failure (rule 1 of
|
|
15
|
+
* the module header); every other delivery's logged state is forgotten.
|
|
16
|
+
*/
|
|
17
|
+
export function failedVerdictCandidates(deliveries) {
|
|
18
|
+
const out = [];
|
|
19
|
+
for (const delivery of deliveries) {
|
|
20
|
+
const failed = readFailedShortfallJudgment(delivery);
|
|
21
|
+
if (failed !== null)
|
|
22
|
+
out.push({ delivery, failed });
|
|
23
|
+
else
|
|
24
|
+
lastNoted.delete(delivery.id);
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
/** The judged commit when it is the approved head (rule 2), else null. Pure. */
|
|
29
|
+
function judgedAtHead(failed, head) {
|
|
30
|
+
const sha = failed.judgment.judgedSha;
|
|
31
|
+
if (sha === undefined || sha === '')
|
|
32
|
+
return null;
|
|
33
|
+
return sameCommit(sha, head.approvedSha) || (head.advanceHead !== null && sameCommit(sha, head.advanceHead)) ? sha : null;
|
|
34
|
+
}
|
|
35
|
+
/** What the streak compares for a failed-verdict decline (module header, THE SIGNATURE). Pure. */
|
|
36
|
+
export function failedVerdictSignature(failed, approvedSha) {
|
|
37
|
+
const nodes = failed.judgment.nodes.map((n) => `${n.nodeId}:${n.unjudged ?? ''}:${n.reason}`).join(';');
|
|
38
|
+
return `failed_verdict|${approvedSha}|${failed.outcome ?? 'unrecorded'}|${failed.judgment.judgedSha ?? ''}|${failed.judgment.heldAt}|${nodes}`;
|
|
39
|
+
}
|
|
40
|
+
/** Forget every logged state (the convergence's test seam calls it). */
|
|
41
|
+
export function forgetFailedVerdictNotes() {
|
|
42
|
+
lastNoted.clear();
|
|
43
|
+
}
|
|
44
|
+
function noteOnce(d, state, line) {
|
|
45
|
+
if (lastNoted.get(d.id) === state)
|
|
46
|
+
return;
|
|
47
|
+
lastNoted.set(d.id, state);
|
|
48
|
+
log.info(line());
|
|
49
|
+
}
|
|
50
|
+
/** Why `d` is not counted this poll (module header, NOT COUNTED), or null when nothing answers for it. */
|
|
51
|
+
async function answeredBy(d, failed, deps, concernIds) {
|
|
52
|
+
if (deps.isGateRunSelected?.(d.id) === true)
|
|
53
|
+
return 'a verify run for it is in flight';
|
|
54
|
+
if (deps.readShortfallRulings) {
|
|
55
|
+
const { fingerprint } = await deps.readShortfallRulings(d.id);
|
|
56
|
+
if (rulingRecordedSince(failed.appliedRulings, fingerprint))
|
|
57
|
+
return 'a ruling verify did not apply is in force; it awaits re-judgement';
|
|
58
|
+
}
|
|
59
|
+
const work = filterWorkIssues(await deps.getDeliveryIssues(d.id));
|
|
60
|
+
if (splitOpenWork(work, await concernIds()).owed.length > 0)
|
|
61
|
+
return 'it owes open work; a coding pass is next';
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
/** The decline for one counted delivery: its judgment, held at the approved head. */
|
|
65
|
+
function declineOf(d, failed, judgedSha, approvedSha, readFailure) {
|
|
66
|
+
const payload = {
|
|
67
|
+
heldAt: failed.judgment.heldAt, judgedSha, outcome: failed.outcome, nodes: failed.judgment.nodes,
|
|
68
|
+
};
|
|
69
|
+
const ids = failed.judgment.nodes.map((n) => n.nodeId).join(', ');
|
|
70
|
+
if (readFailure !== null) {
|
|
71
|
+
return { deliveryId: d.id, deliveryName: d.name, kind: 'read_failed', reason: `a read failed (${readFailure})`, failed: payload };
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
deliveryId: d.id,
|
|
75
|
+
deliveryName: d.name,
|
|
76
|
+
kind: 'failed_verdict',
|
|
77
|
+
reason: `verify's latest judgment of ${approvedSha.slice(0, 12)} is a failure on node(s) ${ids}`,
|
|
78
|
+
signature: failedVerdictSignature(failed, approvedSha),
|
|
79
|
+
failed: payload,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Examine each failed-verdict candidate at the approved head and return the
|
|
84
|
+
* declines to count (module header). `readConcernIds` is called at most once.
|
|
85
|
+
* Never throws: a read that fails is a `read_failed` decline.
|
|
86
|
+
*/
|
|
87
|
+
export async function examineFailedVerdicts(focus, candidates, head, deps, readConcernIds) {
|
|
88
|
+
let concerns;
|
|
89
|
+
const concernIds = () => (concerns ??= readConcernIds());
|
|
90
|
+
const declines = [];
|
|
91
|
+
for (const { delivery: d, failed } of candidates) {
|
|
92
|
+
const judgedSha = judgedAtHead(failed, head);
|
|
93
|
+
if (judgedSha === null) {
|
|
94
|
+
lastNoted.delete(d.id);
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
let answered;
|
|
98
|
+
try {
|
|
99
|
+
answered = await answeredBy(d, failed, deps, concernIds);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
const decline = declineOf(d, failed, judgedSha, head.approvedSha, err.message);
|
|
103
|
+
noteOnce(d, decline.reason, () => `[state-cascade] Delivery "${d.name}" on "${focus.focusName}" failed verify at the approved head ` +
|
|
104
|
+
`${head.approvedSha.slice(0, 12)} and could not be examined this poll: ${decline.reason}. Left in verify; re-read next poll.`);
|
|
105
|
+
declines.push(decline);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (answered !== null) {
|
|
109
|
+
noteOnce(d, `answered:${answered}`, () => `[state-cascade] Delivery "${d.name}" on "${focus.focusName}" failed verify at the ` +
|
|
110
|
+
`approved head ${head.approvedSha.slice(0, 12)}; not stranded: ${answered}.`);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const decline = declineOf(d, failed, judgedSha, head.approvedSha, null);
|
|
114
|
+
noteOnce(d, decline.signature ?? decline.reason, () => `[state-cascade] Delivery "${d.name}" on "${focus.focusName}": ${decline.reason}, ` +
|
|
115
|
+
'and nothing re-judges it -- no verify run, no park, no ruling since that judgment, no owed work. Left in verify; ' +
|
|
116
|
+
'filed as stranded if it stands for the stranded poll count. A shortfall ruling on those nodes, or a new delivery commit, moves it.');
|
|
117
|
+
declines.push(decline);
|
|
118
|
+
}
|
|
119
|
+
return declines;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=standing-approval-failed-verdict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standing-approval-failed-verdict.js","sourceRoot":"","sources":["../../../src/completion/state-cascade/standing-approval-failed-verdict.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FileEscalationIdempotentParams, FileEscalationIdempotentResult } from '../../supervision/escalation-suppression.js';
|
|
2
|
+
import { type StrandedFailedJudgment } from './failed-verdict-stranded-filing.js';
|
|
2
3
|
/** Consecutive passes with the identical decline before the delivery is filed, and between asks after (~2.5 min at the 30s poll). */
|
|
3
4
|
export declare const STANDING_APPROVAL_STRANDED_POLLS = 5;
|
|
4
5
|
/** The filing's escalation_kind (see the module header for why this existing kind). */
|
|
@@ -6,13 +7,17 @@ export declare const STANDING_APPROVAL_STRANDED_KIND = "verify_gate_unclearable"
|
|
|
6
7
|
/** metadata.diagnosis of the filing (its cause namespace). */
|
|
7
8
|
export declare const STANDING_APPROVAL_STRANDED_DIAGNOSIS = "standing_approval_unconverged";
|
|
8
9
|
/** Why a pass declined a delivery: the class decides whether it is ever filed. */
|
|
9
|
-
export type StandingApprovalDeclineKind = 'census' | 'reconciler' | 'operator_hold' | 'external_hold' | 'shortfall_hold' | 'verdict' | 'read_failed';
|
|
10
|
+
export type StandingApprovalDeclineKind = 'census' | 'reconciler' | 'operator_hold' | 'external_hold' | 'shortfall_hold' | 'verdict' | 'read_failed' | 'failed_verdict';
|
|
10
11
|
/** One decline a pass made. */
|
|
11
12
|
export interface StandingApprovalDecline {
|
|
12
13
|
deliveryId: string;
|
|
13
14
|
deliveryName: string;
|
|
14
15
|
kind: StandingApprovalDeclineKind;
|
|
15
16
|
reason: string;
|
|
17
|
+
/** What the identical-poll streak compares; the reason when absent. */
|
|
18
|
+
signature?: string;
|
|
19
|
+
/** The failed verify judgment that holds it (a failed-verdict decline, or a failed one the pass could not examine). */
|
|
20
|
+
failed?: StrandedFailedJudgment;
|
|
16
21
|
}
|
|
17
22
|
/** The focus the filing is anchored under. */
|
|
18
23
|
export interface StrandedFocus {
|
|
@@ -23,11 +28,19 @@ export interface StrandedFocus {
|
|
|
23
28
|
}
|
|
24
29
|
/** The idempotent filer (supervision/escalation-suppression.ts fileEscalationIdempotent in production). */
|
|
25
30
|
export type StrandedEscalationFiler = (params: FileEscalationIdempotentParams) => Promise<FileEscalationIdempotentResult>;
|
|
26
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Resolves the open rows carrying any of `causeKeys` on the focus and retires the
|
|
33
|
+
* keys where they were absorbed as symptoms; returns the count resolved
|
|
34
|
+
* (supervision/escalation-clearing.ts resolveOpenEscalationsOfCause in production).
|
|
35
|
+
*/
|
|
36
|
+
export type StrandedEscalationResolver = (focusId: string, causeKeys: readonly string[], notes: string) => Promise<number>;
|
|
37
|
+
/** Test seam: forget every streak and every ask. */
|
|
27
38
|
export declare function __resetStandingApprovalStrandedForTests(): void;
|
|
28
39
|
/** The cause key: one filing per delivery per approved commit. Pure. */
|
|
29
40
|
export declare function strandedCauseKey(deliveryId: string, approvedSha: string): string;
|
|
30
|
-
/**
|
|
41
|
+
/** Every stranded cause key a delivery can carry at an approved commit: the passed and the failed-verdict filing. Pure. */
|
|
42
|
+
export declare function strandedCauseKeys(deliveryId: string, approvedSha: string): string[];
|
|
43
|
+
/** The filing for one stranded delivery: the failed-verdict variant when a failed judgment holds it. Pure. */
|
|
31
44
|
export declare function buildStrandedEscalation(focus: StrandedFocus, decline: StandingApprovalDecline, approvedSha: string, polls: number): FileEscalationIdempotentParams;
|
|
32
45
|
/**
|
|
33
46
|
* Record one pass's declines and ask the idempotent gate to file each delivery
|
|
@@ -36,4 +49,17 @@ export declare function buildStrandedEscalation(focus: StrandedFocus, decline: S
|
|
|
36
49
|
* at: one not declined this pass loses its streak. Never throws.
|
|
37
50
|
*/
|
|
38
51
|
export declare function reportStandingApprovalDeclines(focus: StrandedFocus, approvedSha: string | null, seen: readonly string[], declines: readonly StandingApprovalDecline[], file: StrandedEscalationFiler | undefined): Promise<string[]>;
|
|
52
|
+
/** The delivery fields the close half reads. */
|
|
53
|
+
export interface StrandedDeliveryState {
|
|
54
|
+
id: string;
|
|
55
|
+
name: string;
|
|
56
|
+
executionStatus: string | null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The close half (module header): resolve the open stranded rows of every
|
|
60
|
+
* delivery whose stranding ended -- `converged` by this pass at `approvedSha`, or
|
|
61
|
+
* one the gate was asked about that now sits outside verify. A resolve that
|
|
62
|
+
* fails is retried on the next pass. Returns the count resolved. Never throws.
|
|
63
|
+
*/
|
|
64
|
+
export declare function resolveClearedStrands(focus: StrandedFocus, deliveries: readonly StrandedDeliveryState[], converged: readonly string[], approvedSha: string | null, resolve: StrandedEscalationResolver | undefined): Promise<number>;
|
|
39
65
|
//# sourceMappingURL=standing-approval-stranded.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standing-approval-stranded.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/standing-approval-stranded.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"standing-approval-stranded.d.ts","sourceRoot":"","sources":["../../../src/completion/state-cascade/standing-approval-stranded.ts"],"names":[],"mappings":"AAyEA,OAAO,KAAK,EACV,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,6CAA6C,CAAC;AAMrD,OAAO,EAAgC,KAAK,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAKhH,qIAAqI;AACrI,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD,uFAAuF;AACvF,eAAO,MAAM,+BAA+B,4BAA4B,CAAC;AAEzE,8DAA8D;AAC9D,eAAO,MAAM,oCAAoC,kCAAmC,CAAC;AAErF,kFAAkF;AAClF,MAAM,MAAM,2BAA2B,GACnC,QAAQ,GAAG,YAAY,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,SAAS,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAKlI,+BAA+B;AAC/B,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,2BAA2B,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uHAAuH;IACvH,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2GAA2G;AAC3G,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAE1H;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAU3H,oDAAoD;AACpD,wBAAgB,uCAAuC,IAAI,IAAI,CAG9D;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,2HAA2H;AAC3H,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnF;AAyCD,8GAA8G;AAC9G,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,uBAAuB,EAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,8BAA8B,CAsChC;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,EAAE,SAAS,uBAAuB,EAAE,EAC5C,IAAI,EAAE,uBAAuB,GAAG,SAAS,GACxC,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBnB;AAED,gDAAgD;AAChD,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAUD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,SAAS,qBAAqB,EAAE,EAC5C,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,OAAO,EAAE,0BAA0B,GAAG,SAAS,GAC9C,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
|