@telora/daemon 0.22.104 → 0.22.132
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/completion/commit-verdict-release.d.ts +49 -0
- package/dist/completion/commit-verdict-release.d.ts.map +1 -0
- package/dist/completion/commit-verdict-release.js +240 -0
- package/dist/completion/commit-verdict-release.js.map +1 -0
- package/dist/completion/completion-phase-registry.d.ts +10 -4
- package/dist/completion/completion-phase-registry.d.ts.map +1 -1
- package/dist/completion/completion-phase-registry.js +19 -7
- package/dist/completion/completion-phase-registry.js.map +1 -1
- package/dist/completion/detector.d.ts.map +1 -1
- package/dist/completion/detector.js +1 -0
- package/dist/completion/detector.js.map +1 -1
- package/dist/completion/event-entry-phases.d.ts +6 -3
- package/dist/completion/event-entry-phases.d.ts.map +1 -1
- package/dist/completion/event-entry-phases.js +135 -76
- package/dist/completion/event-entry-phases.js.map +1 -1
- package/dist/completion/event-phases.d.ts +24 -3
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +9 -9
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +8 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +47 -21
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/exit-classification.d.ts.map +1 -1
- package/dist/completion/exit-classification.js +1 -0
- package/dist/completion/exit-classification.js.map +1 -1
- package/dist/completion/merge-phase.d.ts +21 -9
- package/dist/completion/merge-phase.d.ts.map +1 -1
- package/dist/completion/merge-phase.js +35 -10
- package/dist/completion/merge-phase.js.map +1 -1
- package/dist/completion/review-auto-approval-record.d.ts +19 -0
- package/dist/completion/review-auto-approval-record.d.ts.map +1 -0
- package/dist/completion/review-auto-approval-record.js +102 -0
- package/dist/completion/review-auto-approval-record.js.map +1 -0
- package/dist/completion/review-cycle-cap.d.ts +62 -0
- package/dist/completion/review-cycle-cap.d.ts.map +1 -0
- package/dist/completion/review-cycle-cap.js +180 -0
- package/dist/completion/review-cycle-cap.js.map +1 -0
- package/dist/completion/review-exit-deps.d.ts +17 -2
- package/dist/completion/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit-deps.js +19 -2
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-escalations.d.ts +45 -23
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +15 -74
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-evidence.d.ts +9 -0
- package/dist/completion/review-exit-evidence.d.ts.map +1 -1
- package/dist/completion/review-exit-evidence.js +4 -1
- package/dist/completion/review-exit-evidence.js.map +1 -1
- package/dist/completion/review-exit-foreign-findings.d.ts +151 -0
- package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -0
- package/dist/completion/review-exit-foreign-findings.js +474 -0
- package/dist/completion/review-exit-foreign-findings.js.map +1 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +71 -64
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-progress.d.ts +20 -0
- package/dist/completion/review-exit-progress.d.ts.map +1 -1
- package/dist/completion/review-exit-progress.js +28 -19
- package/dist/completion/review-exit-progress.js.map +1 -1
- package/dist/completion/review-exit-rehoming.d.ts +5 -0
- package/dist/completion/review-exit-rehoming.d.ts.map +1 -1
- package/dist/completion/review-exit-rehoming.js.map +1 -1
- package/dist/completion/review-exit-verdict-gate.d.ts +202 -0
- package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -0
- package/dist/completion/review-exit-verdict-gate.js +228 -0
- package/dist/completion/review-exit-verdict-gate.js.map +1 -0
- package/dist/completion/review-next-step.d.ts +62 -0
- package/dist/completion/review-next-step.d.ts.map +1 -0
- package/dist/completion/review-next-step.js +63 -0
- package/dist/completion/review-next-step.js.map +1 -0
- package/dist/completion/session-hold-sweep-deps.d.ts +17 -0
- package/dist/completion/session-hold-sweep-deps.d.ts.map +1 -0
- package/dist/completion/session-hold-sweep-deps.js +89 -0
- package/dist/completion/session-hold-sweep-deps.js.map +1 -0
- package/dist/completion/session-hold.d.ts +180 -0
- package/dist/completion/session-hold.d.ts.map +1 -0
- package/dist/completion/session-hold.js +238 -0
- package/dist/completion/session-hold.js.map +1 -0
- package/dist/completion/state-cascade.d.ts +19 -0
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +85 -31
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/completion/team-lifecycle.d.ts +35 -2
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +165 -94
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/completion/team-phase.d.ts +27 -15
- package/dist/completion/team-phase.d.ts.map +1 -1
- package/dist/completion/team-phase.js +34 -15
- package/dist/completion/team-phase.js.map +1 -1
- package/dist/delivery/commit-verdict-hold.d.ts +55 -0
- package/dist/delivery/commit-verdict-hold.d.ts.map +1 -0
- package/dist/delivery/commit-verdict-hold.js +118 -0
- package/dist/delivery/commit-verdict-hold.js.map +1 -0
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +10 -3
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +1 -0
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +6 -1
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/directive/phase-sync.d.ts +29 -2
- package/dist/directive/phase-sync.d.ts.map +1 -1
- package/dist/directive/phase-sync.js +30 -6
- package/dist/directive/phase-sync.js.map +1 -1
- package/dist/drift/artifact-ref-shape.d.ts +34 -0
- package/dist/drift/artifact-ref-shape.d.ts.map +1 -0
- package/dist/drift/artifact-ref-shape.js +94 -0
- package/dist/drift/artifact-ref-shape.js.map +1 -0
- package/dist/drift/drift-eval-loop.d.ts +7 -0
- package/dist/drift/drift-eval-loop.d.ts.map +1 -1
- package/dist/drift/drift-eval-loop.js +34 -5
- package/dist/drift/drift-eval-loop.js.map +1 -1
- package/dist/drift/drift-evaluator.d.ts.map +1 -1
- package/dist/drift/drift-evaluator.js +8 -3
- package/dist/drift/drift-evaluator.js.map +1 -1
- package/dist/focus/awaiting-slot.d.ts +34 -0
- package/dist/focus/awaiting-slot.d.ts.map +1 -0
- package/dist/focus/awaiting-slot.js +26 -0
- package/dist/focus/awaiting-slot.js.map +1 -0
- package/dist/focus/focus-lifecycle.js +2 -2
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-phase.d.ts.map +1 -1
- package/dist/focus/focus-phase.js +3 -1
- package/dist/focus/focus-phase.js.map +1 -1
- package/dist/focus/focus-spawn-decision.d.ts +62 -0
- package/dist/focus/focus-spawn-decision.d.ts.map +1 -0
- package/dist/focus/focus-spawn-decision.js +41 -0
- package/dist/focus/focus-spawn-decision.js.map +1 -0
- package/dist/focus/focus-team-state.d.ts.map +1 -1
- package/dist/focus/focus-team-state.js +1 -13
- package/dist/focus/focus-team-state.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts +16 -55
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +102 -64
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +4 -1
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts +41 -2
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +135 -83
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.d.ts +69 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -0
- package/dist/focus/pending-spawn-pass-deps.js +34 -0
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -0
- package/dist/focus/pending-spawn-review-next-step.d.ts +83 -0
- package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -0
- package/dist/focus/pending-spawn-review-next-step.js +325 -0
- package/dist/focus/pending-spawn-review-next-step.js.map +1 -0
- package/dist/focus/review-cycle-cap-hold.d.ts +132 -0
- package/dist/focus/review-cycle-cap-hold.d.ts.map +1 -0
- package/dist/focus/review-cycle-cap-hold.js +178 -0
- package/dist/focus/review-cycle-cap-hold.js.map +1 -0
- package/dist/focus/team-actionable-work.js +2 -2
- package/dist/focus/verify-open-issues.d.ts +22 -0
- package/dist/focus/verify-open-issues.d.ts.map +1 -1
- package/dist/focus/verify-open-issues.js +118 -57
- package/dist/focus/verify-open-issues.js.map +1 -1
- package/dist/focus/verify-routing-passes.d.ts +32 -0
- package/dist/focus/verify-routing-passes.d.ts.map +1 -0
- package/dist/focus/verify-routing-passes.js +18 -0
- package/dist/focus/verify-routing-passes.js.map +1 -0
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +9 -5
- package/dist/git/index.js.map +1 -1
- package/dist/merge/focus-merge.d.ts +16 -2
- package/dist/merge/focus-merge.d.ts.map +1 -1
- package/dist/merge/focus-merge.js +53 -30
- package/dist/merge/focus-merge.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts +5 -0
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +17 -8
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/merge/merge-gate-coverage.d.ts +94 -0
- package/dist/merge/merge-gate-coverage.d.ts.map +1 -0
- package/dist/merge/merge-gate-coverage.js +217 -0
- package/dist/merge/merge-gate-coverage.js.map +1 -0
- package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
- package/dist/prompt/focus-prompt-builder.js +6 -0
- package/dist/prompt/focus-prompt-builder.js.map +1 -1
- package/dist/prompt/prompt-listing.d.ts.map +1 -1
- package/dist/prompt/prompt-listing.js +8 -0
- package/dist/prompt/prompt-listing.js.map +1 -1
- package/dist/prompt/team-prompt-base.d.ts.map +1 -1
- package/dist/prompt/team-prompt-base.js +5 -1
- package/dist/prompt/team-prompt-base.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +14 -39
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/gate-ownership.d.ts +36 -0
- package/dist/prompt-sections/gate-ownership.d.ts.map +1 -0
- package/dist/prompt-sections/gate-ownership.js +68 -0
- package/dist/prompt-sections/gate-ownership.js.map +1 -0
- package/dist/prompt-sections/gate-verdict-section.d.ts +58 -0
- package/dist/prompt-sections/gate-verdict-section.d.ts.map +1 -0
- package/dist/prompt-sections/gate-verdict-section.js +88 -0
- package/dist/prompt-sections/gate-verdict-section.js.map +1 -0
- 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 +35 -11
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/prompt-sections/shared.js +1 -1
- package/dist/prompt-sections/shared.js.map +1 -1
- package/dist/queries/agent-resolvable-promotion.d.ts +6 -3
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +20 -9
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/deliveries.d.ts +46 -4
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +69 -16
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +151 -1
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +95 -14
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/delivery-write-discipline.d.ts +65 -0
- package/dist/queries/delivery-write-discipline.d.ts.map +1 -0
- package/dist/queries/delivery-write-discipline.js +101 -0
- package/dist/queries/delivery-write-discipline.js.map +1 -0
- package/dist/queries/escalation-consumption.d.ts +11 -0
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +22 -0
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/escalation-spool.d.ts +75 -0
- package/dist/queries/escalation-spool.d.ts.map +1 -0
- package/dist/queries/escalation-spool.js +232 -0
- package/dist/queries/escalation-spool.js.map +1 -0
- package/dist/queries/escalation-suppression.d.ts.map +1 -1
- package/dist/queries/escalation-suppression.js +2 -0
- package/dist/queries/escalation-suppression.js.map +1 -1
- package/dist/queries/escalations.js +1 -1
- package/dist/queries/filing-observation.d.ts.map +1 -1
- package/dist/queries/filing-observation.js +2 -0
- package/dist/queries/filing-observation.js.map +1 -1
- package/dist/queries/focus-discovery.d.ts +4 -4
- package/dist/queries/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focus-discovery.js +1 -0
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/focus-review-approval.d.ts +84 -0
- package/dist/queries/focus-review-approval.d.ts.map +1 -0
- package/dist/queries/focus-review-approval.js +158 -0
- package/dist/queries/focus-review-approval.js.map +1 -0
- package/dist/queries/focuses.d.ts +6 -5
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +9 -5
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/incident-correlation.d.ts +5 -4
- package/dist/queries/incident-correlation.d.ts.map +1 -1
- package/dist/queries/incident-correlation.js +11 -5
- package/dist/queries/incident-correlation.js.map +1 -1
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +2 -1
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/loop-refusal-observation.d.ts +64 -0
- package/dist/queries/loop-refusal-observation.d.ts.map +1 -0
- package/dist/queries/loop-refusal-observation.js +137 -0
- package/dist/queries/loop-refusal-observation.js.map +1 -0
- package/dist/queries/schemas.d.ts +9 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +11 -3
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +1 -15
- package/dist/queries/verification.js.map +1 -1
- package/dist/queries/wire-contract.generated.d.ts +3 -0
- package/dist/queries/wire-contract.generated.d.ts.map +1 -1
- package/dist/queries/wire-contract.generated.js +3 -0
- package/dist/queries/wire-contract.generated.js.map +1 -1
- package/dist/resolvers/assembly-engine.d.ts.map +1 -1
- package/dist/resolvers/assembly-engine.js +3 -1
- package/dist/resolvers/assembly-engine.js.map +1 -1
- package/dist/resolvers/git-diff-against-base.d.ts +5 -2
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +121 -39
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/shared/git-diff.d.ts +2 -0
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +5 -1
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/resolvers/shared/review-window-commits.d.ts +96 -0
- package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -0
- package/dist/resolvers/shared/review-window-commits.js +262 -0
- package/dist/resolvers/shared/review-window-commits.js.map +1 -0
- package/dist/session/session-lineage.d.ts.map +1 -1
- package/dist/session/session-lineage.js +4 -1
- package/dist/session/session-lineage.js.map +1 -1
- package/dist/shell/fail-stop.d.ts +18 -0
- package/dist/shell/fail-stop.d.ts.map +1 -0
- package/dist/shell/fail-stop.js +53 -0
- package/dist/shell/fail-stop.js.map +1 -0
- package/dist/shell/graceful-shutdown.d.ts +48 -0
- package/dist/shell/graceful-shutdown.d.ts.map +1 -0
- package/dist/shell/graceful-shutdown.js +152 -0
- package/dist/shell/graceful-shutdown.js.map +1 -0
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +5 -4
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/shell/log.d.ts.map +1 -1
- package/dist/shell/log.js +4 -1
- package/dist/shell/log.js.map +1 -1
- package/dist/shell/stop-request.d.ts.map +1 -1
- package/dist/shell/stop-request.js +2 -1
- package/dist/shell/stop-request.js.map +1 -1
- package/dist/shell/unified-shell.d.ts.map +1 -1
- package/dist/shell/unified-shell.js +41 -114
- package/dist/shell/unified-shell.js.map +1 -1
- package/dist/spawn/lifecycle.d.ts +12 -0
- package/dist/spawn/lifecycle.d.ts.map +1 -1
- package/dist/spawn/lifecycle.js +25 -21
- package/dist/spawn/lifecycle.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts +19 -1
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +70 -21
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/review-hold-park.d.ts.map +1 -1
- package/dist/spawn/review-hold-park.js +18 -8
- package/dist/spawn/review-hold-park.js.map +1 -1
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +4 -0
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +2 -1
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +6 -0
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +15 -2
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/index.d.ts +10 -1
- package/dist/testing/fixtures/index.d.ts.map +1 -1
- package/dist/testing/fixtures/index.js +59 -1
- package/dist/testing/fixtures/index.js.map +1 -1
- package/dist/testing/fixtures/pending-spawn-world.d.ts +34 -0
- package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -0
- package/dist/testing/fixtures/pending-spawn-world.js +92 -0
- package/dist/testing/fixtures/pending-spawn-world.js.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/verify/commit-gate-configured.d.ts +86 -0
- package/dist/verify/commit-gate-configured.d.ts.map +1 -0
- package/dist/verify/commit-gate-configured.js +234 -0
- package/dist/verify/commit-gate-configured.js.map +1 -0
- package/dist/verify/commit-verdict-record.d.ts +98 -0
- package/dist/verify/commit-verdict-record.d.ts.map +1 -0
- package/dist/verify/commit-verdict-record.js +297 -0
- package/dist/verify/commit-verdict-record.js.map +1 -0
- package/dist/verify/explicit-gate-outcome.d.ts +161 -0
- package/dist/verify/explicit-gate-outcome.d.ts.map +1 -0
- package/dist/verify/explicit-gate-outcome.js +215 -0
- package/dist/verify/explicit-gate-outcome.js.map +1 -0
- package/dist/verify/explicit-rearm.d.ts +27 -0
- package/dist/verify/explicit-rearm.d.ts.map +1 -0
- package/dist/verify/explicit-rearm.js +161 -0
- package/dist/verify/explicit-rearm.js.map +1 -0
- package/dist/verify/explicit-run-ledger.d.ts +26 -0
- package/dist/verify/explicit-run-ledger.d.ts.map +1 -0
- package/dist/verify/explicit-run-ledger.js +93 -0
- package/dist/verify/explicit-run-ledger.js.map +1 -0
- package/dist/verify/failure-signature.d.ts.map +1 -1
- package/dist/verify/failure-signature.js +5 -1
- package/dist/verify/failure-signature.js.map +1 -1
- package/dist/verify/gate-run-registry.d.ts +105 -0
- package/dist/verify/gate-run-registry.d.ts.map +1 -0
- package/dist/verify/gate-run-registry.js +111 -0
- package/dist/verify/gate-run-registry.js.map +1 -0
- package/dist/verify/gate-verdict-source.d.ts +68 -0
- package/dist/verify/gate-verdict-source.d.ts.map +1 -0
- package/dist/verify/gate-verdict-source.js +143 -0
- package/dist/verify/gate-verdict-source.js.map +1 -0
- package/dist/verify/judged-commit-gate.d.ts +11 -0
- package/dist/verify/judged-commit-gate.d.ts.map +1 -0
- package/dist/verify/judged-commit-gate.js +48 -0
- package/dist/verify/judged-commit-gate.js.map +1 -0
- package/dist/verify/rework-judgment.d.ts +58 -0
- package/dist/verify/rework-judgment.d.ts.map +1 -0
- package/dist/verify/rework-judgment.js +54 -0
- package/dist/verify/rework-judgment.js.map +1 -0
- package/dist/verify/verification-attribution.d.ts +105 -0
- package/dist/verify/verification-attribution.d.ts.map +1 -0
- package/dist/verify/verification-attribution.js +322 -0
- package/dist/verify/verification-attribution.js.map +1 -0
- package/dist/verify/verification-baseline-run.d.ts +123 -0
- package/dist/verify/verification-baseline-run.d.ts.map +1 -0
- package/dist/verify/verification-baseline-run.js +386 -0
- package/dist/verify/verification-baseline-run.js.map +1 -0
- package/dist/verify/verification-baseline.d.ts +79 -33
- package/dist/verify/verification-baseline.d.ts.map +1 -1
- package/dist/verify/verification-baseline.js +99 -106
- package/dist/verify/verification-baseline.js.map +1 -1
- package/dist/verify/verification-checkout.d.ts +13 -0
- package/dist/verify/verification-checkout.d.ts.map +1 -1
- package/dist/verify/verification-checkout.js +39 -2
- package/dist/verify/verification-checkout.js.map +1 -1
- package/dist/verify/verification-commit-sharing.d.ts +84 -0
- package/dist/verify/verification-commit-sharing.d.ts.map +1 -0
- package/dist/verify/verification-commit-sharing.js +416 -0
- package/dist/verify/verification-commit-sharing.js.map +1 -0
- package/dist/verify/verification-config.d.ts.map +1 -1
- package/dist/verify/verification-config.js +12 -2
- package/dist/verify/verification-config.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +27 -11
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +159 -29
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +49 -42
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +69 -4
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.d.ts +15 -2
- package/dist/verify/verification-deterministic.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.js +12 -3
- package/dist/verify/verification-deterministic.js.map +1 -1
- package/dist/verify/verification-diagnostics.d.ts +16 -0
- package/dist/verify/verification-diagnostics.d.ts.map +1 -0
- package/dist/verify/verification-diagnostics.js +219 -0
- package/dist/verify/verification-diagnostics.js.map +1 -0
- package/dist/verify/verification-engine.d.ts +12 -8
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +110 -92
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js +14 -4
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/verification-failure-parser.d.ts +37 -3
- package/dist/verify/verification-failure-parser.d.ts.map +1 -1
- package/dist/verify/verification-failure-parser.js +66 -3
- package/dist/verify/verification-failure-parser.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +21 -34
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +37 -88
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verification-gate-stages.d.ts +110 -0
- package/dist/verify/verification-gate-stages.d.ts.map +1 -0
- package/dist/verify/verification-gate-stages.js +179 -0
- package/dist/verify/verification-gate-stages.js.map +1 -0
- package/dist/verify/verification-history-reset.d.ts +61 -0
- package/dist/verify/verification-history-reset.d.ts.map +1 -0
- package/dist/verify/verification-history-reset.js +90 -0
- package/dist/verify/verification-history-reset.js.map +1 -0
- package/dist/verify/verification-manifest.d.ts.map +1 -1
- package/dist/verify/verification-manifest.js +2 -1
- package/dist/verify/verification-manifest.js.map +1 -1
- package/dist/verify/verification-rework-messages.d.ts +19 -0
- package/dist/verify/verification-rework-messages.d.ts.map +1 -0
- package/dist/verify/verification-rework-messages.js +52 -0
- package/dist/verify/verification-rework-messages.js.map +1 -0
- package/dist/worktree/install-inputs.d.ts +89 -0
- package/dist/worktree/install-inputs.d.ts.map +1 -0
- package/dist/worktree/install-inputs.js +625 -0
- package/dist/worktree/install-inputs.js.map +1 -0
- package/dist/worktree/install-script-effects.d.ts +30 -0
- package/dist/worktree/install-script-effects.d.ts.map +1 -0
- package/dist/worktree/install-script-effects.js +524 -0
- package/dist/worktree/install-script-effects.js.map +1 -0
- package/dist/worktree/install-script-tokens.d.ts +57 -0
- package/dist/worktree/install-script-tokens.d.ts.map +1 -0
- package/dist/worktree/install-script-tokens.js +299 -0
- package/dist/worktree/install-script-tokens.js.map +1 -0
- package/dist/worktree/provision.d.ts +27 -4
- package/dist/worktree/provision.d.ts.map +1 -1
- package/dist/worktree/provision.js +46 -7
- package/dist/worktree/provision.js.map +1 -1
- package/dist/worktree/safety.d.ts +11 -0
- package/dist/worktree/safety.d.ts.map +1 -1
- package/dist/worktree/safety.js +20 -3
- package/dist/worktree/safety.js.map +1 -1
- package/dist/worktree/verify-interlock.d.ts.map +1 -1
- package/dist/worktree/verify-interlock.js +3 -1
- package/dist/worktree/verify-interlock.js.map +1 -1
- package/dist/worktree/worktree-package-provisioning.d.ts +75 -0
- package/dist/worktree/worktree-package-provisioning.d.ts.map +1 -0
- package/dist/worktree/worktree-package-provisioning.js +362 -0
- package/dist/worktree/worktree-package-provisioning.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** What the ledger names for a delivery: no run, its current run, or an entry that cannot be read. */
|
|
2
|
+
export type ExplicitRunLedgerEntry = {
|
|
3
|
+
kind: 'none';
|
|
4
|
+
} | {
|
|
5
|
+
kind: 'run';
|
|
6
|
+
runId: string;
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'unreadable';
|
|
9
|
+
};
|
|
10
|
+
/** The ledger directory under the daemon's global state dir. */
|
|
11
|
+
export declare function explicitRunLedgerDir(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Name `runId` the delivery's current explicit run (see the module header),
|
|
14
|
+
* superseding every run before it. Throws when the entry cannot be written: the
|
|
15
|
+
* run it names must then not start.
|
|
16
|
+
*/
|
|
17
|
+
export declare function beginExplicitRun(deliveryId: string, runId: string, now?: () => string, dir?: string): void;
|
|
18
|
+
/** The run the ledger names for the delivery. Never throws. */
|
|
19
|
+
export declare function readExplicitRunLedger(deliveryId: string, dir?: string): ExplicitRunLedgerEntry;
|
|
20
|
+
/**
|
|
21
|
+
* Whether a verdict recorded by run `runId` (undefined: a record that named no
|
|
22
|
+
* run) may govern the delivery: the ledger names no run for it, or names that
|
|
23
|
+
* one. Never throws.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isCurrentExplicitRun(deliveryId: string, runId: string | undefined, dir?: string): boolean;
|
|
26
|
+
//# sourceMappingURL=explicit-run-ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explicit-run-ledger.d.ts","sourceRoot":"","sources":["../../src/verify/explicit-run-ledger.ts"],"names":[],"mappings":"AA2CA,sGAAsG;AACtG,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAEhH,gEAAgE;AAChE,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,MAAuC,EAClD,GAAG,GAAE,MAA+B,GACnC,IAAI,CAWN;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAA+B,GAAG,sBAAsB,CActH;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,GAAE,MAA+B,GAAG,OAAO,CAGjI"}
|
|
@@ -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/integration/explicit-verdict-departure-during-removal.test.ts,
|
|
3
|
+
// packages/daemon/src/integration/explicit-verdict-reuse.test.ts,
|
|
4
|
+
// packages/daemon/src/verify/explicit-run-ledger.test.ts
|
|
5
|
+
// PINNED-BY-END
|
|
6
|
+
/**
|
|
7
|
+
* Which explicit-method run of a delivery is the CURRENT one, kept on local disk
|
|
8
|
+
* where no gate_state writer can reach it.
|
|
9
|
+
*
|
|
10
|
+
* An explicit run's verdict lives on the delivery's gate_state
|
|
11
|
+
* (verificationHistory.explicitOutcome, verify/explicit-gate-outcome.ts), and the
|
|
12
|
+
* tick removes it before a replacement run starts. But gate_state is rewritten
|
|
13
|
+
* WHOLE by every writer that holds or clears a delivery, each carrying the history
|
|
14
|
+
* of the row IT read (queries/delivery-gate-state.ts carryVerificationHistory). A
|
|
15
|
+
* writer that read the row before the removal -- a review exit holding for the
|
|
16
|
+
* replacement's verdict, say -- writes the older verdict straight back after it,
|
|
17
|
+
* and once a restart clears the in-process record that resurrected pass approves a
|
|
18
|
+
* commit the replacement never judged. No gate_state write can be monotonic
|
|
19
|
+
* against such a writer, and the edge offers no compare-and-swap.
|
|
20
|
+
*
|
|
21
|
+
* So each selection of an explicit run names a fresh run id here, durably, before
|
|
22
|
+
* the removal and before the run can start; the run's verdict is recorded with
|
|
23
|
+
* that id, and a run no longer named here records nothing; and a durable verdict
|
|
24
|
+
* governs only while its id is the one named here. A verdict a stale writer carries
|
|
25
|
+
* back carries its own, older id, and reads as no verdict. One file per delivery
|
|
26
|
+
* under `<state dir>/explicit-verdict-runs`, replaced atomically (write + rename),
|
|
27
|
+
* beside the per-commit verdict records (verify/commit-verdict-record.ts) on the
|
|
28
|
+
* host whose daemon runs the product's gates.
|
|
29
|
+
*
|
|
30
|
+
* Direction of error: a delivery with no entry takes its recorded verdict as
|
|
31
|
+
* before (one recorded before runs were named, or a delivery no run was selected
|
|
32
|
+
* for on this host); an entry that cannot be read takes none -- routing holds, and
|
|
33
|
+
* the explicit re-arm scan selects the row again, which names a fresh run. A
|
|
34
|
+
* selection whose entry cannot be written does not start.
|
|
35
|
+
*
|
|
36
|
+
* @module verify/explicit-run-ledger
|
|
37
|
+
*/
|
|
38
|
+
import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
39
|
+
import { resolve } from 'node:path';
|
|
40
|
+
import { resolveGlobalStateDir } from '../shell/daemon-process.js';
|
|
41
|
+
/** The ledger directory under the daemon's global state dir. */
|
|
42
|
+
export function explicitRunLedgerDir() {
|
|
43
|
+
return resolve(resolveGlobalStateDir(), 'explicit-verdict-runs');
|
|
44
|
+
}
|
|
45
|
+
function entryPath(deliveryId, dir) {
|
|
46
|
+
return resolve(dir, `${encodeURIComponent(deliveryId)}.json`);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Name `runId` the delivery's current explicit run (see the module header),
|
|
50
|
+
* superseding every run before it. Throws when the entry cannot be written: the
|
|
51
|
+
* run it names must then not start.
|
|
52
|
+
*/
|
|
53
|
+
export function beginExplicitRun(deliveryId, runId, now = () => new Date().toISOString(), dir = explicitRunLedgerDir()) {
|
|
54
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
55
|
+
const path = entryPath(deliveryId, dir);
|
|
56
|
+
const tmp = `${path}.${process.pid}.${runId}.tmp`;
|
|
57
|
+
try {
|
|
58
|
+
writeFileSync(tmp, JSON.stringify({ deliveryId, runId, selectedAt: now() }), { mode: 0o600 });
|
|
59
|
+
renameSync(tmp, path);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
rmSync(tmp, { force: true });
|
|
63
|
+
throw err;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** The run the ledger names for the delivery. Never throws. */
|
|
67
|
+
export function readExplicitRunLedger(deliveryId, dir = explicitRunLedgerDir()) {
|
|
68
|
+
let text;
|
|
69
|
+
try {
|
|
70
|
+
text = readFileSync(entryPath(deliveryId, dir), 'utf8');
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
return err.code === 'ENOENT' ? { kind: 'none' } : { kind: 'unreadable' };
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const parsed = JSON.parse(text);
|
|
77
|
+
const runId = typeof parsed === 'object' && parsed !== null ? parsed.runId : undefined;
|
|
78
|
+
return typeof runId === 'string' && runId !== '' ? { kind: 'run', runId } : { kind: 'unreadable' };
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return { kind: 'unreadable' };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Whether a verdict recorded by run `runId` (undefined: a record that named no
|
|
86
|
+
* run) may govern the delivery: the ledger names no run for it, or names that
|
|
87
|
+
* one. Never throws.
|
|
88
|
+
*/
|
|
89
|
+
export function isCurrentExplicitRun(deliveryId, runId, dir = explicitRunLedgerDir()) {
|
|
90
|
+
const entry = readExplicitRunLedger(deliveryId, dir);
|
|
91
|
+
return entry.kind === 'none' || (entry.kind === 'run' && entry.runId === runId);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=explicit-run-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explicit-run-ledger.js","sourceRoot":"","sources":["../../src/verify/explicit-run-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-signature.d.ts","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"failure-signature.d.ts","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"AAyDA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,mCAAmC,CAAC;AAK3C,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAyBnD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAavF;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CAoBhF;AAED,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAkBlF;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAAG,IAAI,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,wBAAwB,CAO1B;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS9G;AAMD,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAS7E;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,MAAM,CAAC;CACxD;AAED,eAAO,MAAM,2BAA2B,QAAO,oBAE7C,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,oBAAoB,GACzB;IAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,wBAAwB,CAAA;CAAE,CAS7E"}
|
|
@@ -1,6 +1,10 @@
|
|
|
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/integration/
|
|
2
|
+
// Pinned by: packages/daemon/src/integration/explicit-verdict-reuse.test.ts,
|
|
3
|
+
// packages/daemon/src/integration/focus-commit-verdict-scenario.test.ts,
|
|
4
|
+
// packages/daemon/src/integration/verification-history-round-trip.test.ts,
|
|
5
|
+
// packages/daemon/src/integration/verification-rework-resume-verdict.test.ts,
|
|
3
6
|
// packages/daemon/src/verify/failure-signature.test.ts, packages/daemon/src/verify/stall-detectors.test.ts,
|
|
7
|
+
// packages/daemon/src/verify/verification-commit-sharing.test.ts,
|
|
4
8
|
// packages/daemon/src/verify/verification-default-on.test.ts,
|
|
5
9
|
// packages/daemon/src/verify/verification-feedback.test.ts
|
|
6
10
|
// PINNED-BY-END
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-signature.js","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"failure-signature.js","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The gate runs a routing decision can still wait on, held in process.
|
|
3
|
+
*
|
|
4
|
+
* Two facts the review exit and the live open-work pass read before they route a
|
|
5
|
+
* verify delivery on review evidence alone (completion/review-exit-verdict-gate.ts):
|
|
6
|
+
*
|
|
7
|
+
* - which gate runs are SELECTED BUT NOT FINISHED, per focus. The verification
|
|
8
|
+
* tick registers every candidate the moment it selects it -- before the run
|
|
9
|
+
* waits on the shared verification semaphore behind another focus's gate --
|
|
10
|
+
* and ends the registration when its dispatch settles, however it settles
|
|
11
|
+
* (a verdict, a timeout, no checkout, a delivery that left verify, a throw).
|
|
12
|
+
* Once a run's detached checkout exists it names the commit it judges, so a
|
|
13
|
+
* wait keyed on one commit is not held by a run judging another; until then a
|
|
14
|
+
* registration may judge any commit on its focus (a dispatch reads HEAD only
|
|
15
|
+
* when it starts).
|
|
16
|
+
* - the outcome an EXPLICIT-METHOD run last recorded for its delivery. Such a run
|
|
17
|
+
* may execute in place or render a non-deterministic verdict, and neither
|
|
18
|
+
* writes a per-commit verdict record (verify/commit-verdict-record.ts), so its
|
|
19
|
+
* recorded outcome is its gate verdict: a pass or a failure, at the commit it
|
|
20
|
+
* judged, or for the delivery when it judged none. A run that rendered no
|
|
21
|
+
* verdict leaves none, and a new selection of the delivery forgets the outcome
|
|
22
|
+
* of the run before it -- both are remembered as "no verdict", so the durable
|
|
23
|
+
* copy of an older outcome is not read in their place. The tick also removes
|
|
24
|
+
* that durable copy before the selected run can start
|
|
25
|
+
* (verify/verification-commit-sharing.ts), so a restart reads "no verdict" too.
|
|
26
|
+
*
|
|
27
|
+
* The selected runs are in process on purpose. A daemon restart abandons every
|
|
28
|
+
* selected run, and an abandoned run renders no verdict, so after a restart
|
|
29
|
+
* nothing waits on one: a toward-intent route is never stranded behind a verdict
|
|
30
|
+
* no process will render. The explicit outcomes here are only the in-process fast
|
|
31
|
+
* path: each is also written to the delivery's gate_state
|
|
32
|
+
* (verify/explicit-gate-outcome.ts), which is what routing reads after a restart,
|
|
33
|
+
* when this process has seen no explicit run for the delivery.
|
|
34
|
+
*
|
|
35
|
+
* A leaf with no imports.
|
|
36
|
+
*
|
|
37
|
+
* @module verify/gate-run-registry
|
|
38
|
+
*/
|
|
39
|
+
/** A candidate the verification tick selected. */
|
|
40
|
+
export interface GateRunSelection {
|
|
41
|
+
deliveryId: string;
|
|
42
|
+
focusId: string | null;
|
|
43
|
+
/** An explicit-method row: its run supersedes the outcome the delivery's previous run recorded. */
|
|
44
|
+
explicit: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** The handle a selection is ended through. Idempotent. */
|
|
47
|
+
export interface GateRunRegistration {
|
|
48
|
+
end: () => void;
|
|
49
|
+
}
|
|
50
|
+
/** The outcome kept for an explicit-method delivery. */
|
|
51
|
+
export type RecordedGateOutcome = 'passed' | 'failed';
|
|
52
|
+
/** A verdict an explicit-method run rendered, the commit it applies to (null: it judged none, so it applies to any), and its gate. */
|
|
53
|
+
export interface RecordedExplicitOutcome {
|
|
54
|
+
outcome: RecordedGateOutcome;
|
|
55
|
+
sha: string | null;
|
|
56
|
+
/** The gate the run applied (verify/commit-verdict-record.ts explicitGateKeyOf); absent on a record that kept none. */
|
|
57
|
+
gateKey?: string;
|
|
58
|
+
}
|
|
59
|
+
/** Register a candidate the tick selected; end the registration when its dispatch settles. */
|
|
60
|
+
export declare function registerGateRun(selection: GateRunSelection): GateRunRegistration;
|
|
61
|
+
/** Name the commit a selected run judges (its detached checkout's sha). A no-op when the delivery has no selected run. */
|
|
62
|
+
export declare function noteGateRunCommit(deliveryId: string, sha: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Whether a selected, unfinished gate run on the focus may judge `sha`: one that
|
|
65
|
+
* names that commit, or one that names none yet. A null `sha` (a judged commit
|
|
66
|
+
* nobody could read) matches every run on the focus.
|
|
67
|
+
*/
|
|
68
|
+
export declare function hasPendingGateRun(focusId: string, sha: string | null): boolean;
|
|
69
|
+
/** Whether a gate run for the delivery is selected and not yet finished (verify/explicit-rearm.ts selects no second one). */
|
|
70
|
+
export declare function isGateRunSelected(deliveryId: string): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* The verdict a run's result renders: a pass or a failure, at its judged commit
|
|
73
|
+
* when that is a well-formed sha, else for no commit, under the gate the run
|
|
74
|
+
* applied (`gateKey`); null for any other outcome (no verdict). The one rule the
|
|
75
|
+
* in-process record and the durable one (verify/explicit-gate-outcome.ts) both
|
|
76
|
+
* apply. Pure.
|
|
77
|
+
*/
|
|
78
|
+
export declare function explicitGateOutcomeOf(result: {
|
|
79
|
+
outcome: string;
|
|
80
|
+
verifiedSha?: string;
|
|
81
|
+
}, gateKey?: string): RecordedExplicitOutcome | null;
|
|
82
|
+
/** Note the run id a selected explicit candidate's selection named, so its verdict is recorded as that run's. */
|
|
83
|
+
export declare function noteExplicitRunId(candidate: object, runId: string): void;
|
|
84
|
+
/** The run id the candidate's selection named, or undefined when none did. */
|
|
85
|
+
export declare function explicitRunIdOf(candidate: object): string | undefined;
|
|
86
|
+
/** Record the outcome an explicit-method run rendered under the gate it applied (see the module header for what is kept). */
|
|
87
|
+
export declare function recordExplicitGateOutcome(deliveryId: string, result: {
|
|
88
|
+
outcome: string;
|
|
89
|
+
verifiedSha?: string;
|
|
90
|
+
}, gateKey?: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* What this process knows about the delivery's explicit-method verdict: the
|
|
93
|
+
* verdict its latest run rendered, null for "no verdict" (a selection since, or a
|
|
94
|
+
* run that rendered none), or undefined when this process has seen no explicit run
|
|
95
|
+
* for the delivery -- the durable record is then the one to read.
|
|
96
|
+
*/
|
|
97
|
+
export declare function readLiveExplicitGateOutcome(deliveryId: string): RecordedExplicitOutcome | null | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* The outcome an explicit-method run recorded for the delivery in this process when
|
|
100
|
+
* it applies to `sha` -- the run judged that commit, or judged none -- else null.
|
|
101
|
+
*/
|
|
102
|
+
export declare function readExplicitGateOutcome(deliveryId: string, sha: string | null): RecordedGateOutcome | null;
|
|
103
|
+
/** Test seam: forget every selected run and recorded outcome. */
|
|
104
|
+
export declare function __resetGateRunRegistryForTests(): void;
|
|
105
|
+
//# sourceMappingURL=gate-run-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-run-registry.d.ts","sourceRoot":"","sources":["../../src/verify/gate-run-registry.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mGAAmG;IACnG,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAStD,sIAAsI;AACtI,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,uHAAuH;IACvH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,mBAAmB,CAShF;AAED,0HAA0H;AAC1H,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAK9E;AAED,6HAA6H;AAC7H,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAKzI;AAKD,iHAAiH;AACjH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAExE;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED,6HAA6H;AAC7H,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAEvI;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,GAAG,SAAS,CAE1G;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,mBAAmB,GAAG,IAAI,CAI1G;AAED,iEAAiE;AACjE,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
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/commit-verdict-release.test.ts,
|
|
3
|
+
// packages/daemon/src/focus/listener-product-poll.test.ts,
|
|
4
|
+
// packages/daemon/src/focus/verify-routing-passes.test.ts,
|
|
5
|
+
// packages/daemon/src/integration/delivery-gate-write-interleaving.test.ts,
|
|
6
|
+
// packages/daemon/src/integration/explicit-gate-identity-unreadable.test.ts,
|
|
7
|
+
// packages/daemon/src/integration/explicit-gate-outcome-restart.test.ts,
|
|
8
|
+
// packages/daemon/src/integration/explicit-verdict-departure-during-removal.test.ts,
|
|
9
|
+
// packages/daemon/src/integration/explicit-verdict-invalidation-restart.test.ts,
|
|
10
|
+
// packages/daemon/src/integration/explicit-verdict-reuse.test.ts,
|
|
11
|
+
// packages/daemon/src/integration/focus-commit-verdict-scenario.test.ts,
|
|
12
|
+
// packages/daemon/src/integration/review-rework-resume-verdict.test.ts,
|
|
13
|
+
// packages/daemon/src/verify/explicit-run-ledger.test.ts,
|
|
14
|
+
// packages/daemon/src/verify/verification-commit-sharing.test.ts
|
|
15
|
+
// PINNED-BY-END
|
|
16
|
+
const SHA_RE = /^[0-9a-f]{7,64}$/i;
|
|
17
|
+
const selectedRuns = new Set();
|
|
18
|
+
/** Per delivery this process has seen an explicit run for: its verdict, or null for "no verdict" (see the module header). */
|
|
19
|
+
const explicitOutcomes = new Map();
|
|
20
|
+
/** Register a candidate the tick selected; end the registration when its dispatch settles. */
|
|
21
|
+
export function registerGateRun(selection) {
|
|
22
|
+
const run = { deliveryId: selection.deliveryId, focusId: selection.focusId, sha: null };
|
|
23
|
+
selectedRuns.add(run);
|
|
24
|
+
if (selection.explicit)
|
|
25
|
+
explicitOutcomes.set(selection.deliveryId, null);
|
|
26
|
+
return {
|
|
27
|
+
end: () => {
|
|
28
|
+
selectedRuns.delete(run);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Name the commit a selected run judges (its detached checkout's sha). A no-op when the delivery has no selected run. */
|
|
33
|
+
export function noteGateRunCommit(deliveryId, sha) {
|
|
34
|
+
for (const run of selectedRuns) {
|
|
35
|
+
if (run.deliveryId === deliveryId)
|
|
36
|
+
run.sha = sha;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Whether a selected, unfinished gate run on the focus may judge `sha`: one that
|
|
41
|
+
* names that commit, or one that names none yet. A null `sha` (a judged commit
|
|
42
|
+
* nobody could read) matches every run on the focus.
|
|
43
|
+
*/
|
|
44
|
+
export function hasPendingGateRun(focusId, sha) {
|
|
45
|
+
for (const run of selectedRuns) {
|
|
46
|
+
if (run.focusId === focusId && (run.sha === null || sha === null || run.sha === sha))
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
/** Whether a gate run for the delivery is selected and not yet finished (verify/explicit-rearm.ts selects no second one). */
|
|
52
|
+
export function isGateRunSelected(deliveryId) {
|
|
53
|
+
for (const run of selectedRuns) {
|
|
54
|
+
if (run.deliveryId === deliveryId)
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The verdict a run's result renders: a pass or a failure, at its judged commit
|
|
61
|
+
* when that is a well-formed sha, else for no commit, under the gate the run
|
|
62
|
+
* applied (`gateKey`); null for any other outcome (no verdict). The one rule the
|
|
63
|
+
* in-process record and the durable one (verify/explicit-gate-outcome.ts) both
|
|
64
|
+
* apply. Pure.
|
|
65
|
+
*/
|
|
66
|
+
export function explicitGateOutcomeOf(result, gateKey) {
|
|
67
|
+
const { outcome } = result;
|
|
68
|
+
if (outcome !== 'passed' && outcome !== 'failed')
|
|
69
|
+
return null;
|
|
70
|
+
const sha = typeof result.verifiedSha === 'string' && SHA_RE.test(result.verifiedSha) ? result.verifiedSha : null;
|
|
71
|
+
return { outcome, sha, ...(gateKey !== undefined ? { gateKey } : {}) };
|
|
72
|
+
}
|
|
73
|
+
/** The run id each selected explicit candidate was named (verify/explicit-run-ledger.ts), keyed by the candidate itself. */
|
|
74
|
+
const explicitRunIds = new WeakMap();
|
|
75
|
+
/** Note the run id a selected explicit candidate's selection named, so its verdict is recorded as that run's. */
|
|
76
|
+
export function noteExplicitRunId(candidate, runId) {
|
|
77
|
+
explicitRunIds.set(candidate, runId);
|
|
78
|
+
}
|
|
79
|
+
/** The run id the candidate's selection named, or undefined when none did. */
|
|
80
|
+
export function explicitRunIdOf(candidate) {
|
|
81
|
+
return explicitRunIds.get(candidate);
|
|
82
|
+
}
|
|
83
|
+
/** Record the outcome an explicit-method run rendered under the gate it applied (see the module header for what is kept). */
|
|
84
|
+
export function recordExplicitGateOutcome(deliveryId, result, gateKey) {
|
|
85
|
+
explicitOutcomes.set(deliveryId, explicitGateOutcomeOf(result, gateKey));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* What this process knows about the delivery's explicit-method verdict: the
|
|
89
|
+
* verdict its latest run rendered, null for "no verdict" (a selection since, or a
|
|
90
|
+
* run that rendered none), or undefined when this process has seen no explicit run
|
|
91
|
+
* for the delivery -- the durable record is then the one to read.
|
|
92
|
+
*/
|
|
93
|
+
export function readLiveExplicitGateOutcome(deliveryId) {
|
|
94
|
+
return explicitOutcomes.get(deliveryId);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The outcome an explicit-method run recorded for the delivery in this process when
|
|
98
|
+
* it applies to `sha` -- the run judged that commit, or judged none -- else null.
|
|
99
|
+
*/
|
|
100
|
+
export function readExplicitGateOutcome(deliveryId, sha) {
|
|
101
|
+
const recorded = explicitOutcomes.get(deliveryId);
|
|
102
|
+
if (!recorded)
|
|
103
|
+
return null;
|
|
104
|
+
return recorded.sha === null || recorded.sha === sha ? recorded.outcome : null;
|
|
105
|
+
}
|
|
106
|
+
/** Test seam: forget every selected run and recorded outcome. */
|
|
107
|
+
export function __resetGateRunRegistryForTests() {
|
|
108
|
+
selectedRuns.clear();
|
|
109
|
+
explicitOutcomes.clear();
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=gate-run-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-run-registry.js","sourceRoot":"","sources":["../../src/verify/gate-run-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { type GateVerdictSummary, type JudgedCommit } from '../queries/delivery-gate-state.js';
|
|
2
|
+
import { type CommitVerdict } from './commit-verdict-record.js';
|
|
3
|
+
/** The slice of a deterministic StrategyResult a verdict is derived from. */
|
|
4
|
+
export interface GateRunVerdictSource {
|
|
5
|
+
outcome?: string;
|
|
6
|
+
exitCode?: number | null;
|
|
7
|
+
timedOut?: boolean;
|
|
8
|
+
checkoutUnavailable?: boolean;
|
|
9
|
+
configUnresolved?: boolean;
|
|
10
|
+
verifiedSha?: string;
|
|
11
|
+
failedStage?: string;
|
|
12
|
+
preExistingStages?: string[];
|
|
13
|
+
}
|
|
14
|
+
/** The commit a run judged (its well-formed verifiedSha), or null for a run that judged none. Pure. */
|
|
15
|
+
export declare function judgedShaOfRun(run: Pick<GateRunVerdictSource, 'verifiedSha'>): string | null;
|
|
16
|
+
/** The verdict a finished deterministic run rendered for its commit, or null when it rendered none. Pure. */
|
|
17
|
+
export declare function gateVerdictFromRun(run: GateRunVerdictSource): GateVerdictSummary | null;
|
|
18
|
+
/** The summary of a durable commit verdict. Pure. */
|
|
19
|
+
export declare function gateVerdictFromCommitVerdict(verdict: CommitVerdict): GateVerdictSummary;
|
|
20
|
+
/** Injected IO for the judged-commit read; the default reaches the record store. */
|
|
21
|
+
export interface JudgedCommitVerdictDeps {
|
|
22
|
+
readVerdict: (productId: string, focusId: string, sha: string) => CommitVerdict | null;
|
|
23
|
+
}
|
|
24
|
+
/** Which judged commit to read: the exact sha a run judged, on its product + focus. */
|
|
25
|
+
export interface JudgedCommitTarget {
|
|
26
|
+
productId?: string | null;
|
|
27
|
+
focusId?: string | null;
|
|
28
|
+
sha?: string | null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The recorded gate verdict for exactly the judged commit `target.sha`, or null
|
|
32
|
+
* (no product/focus, no or malformed sha, no record). Never resolves HEAD and
|
|
33
|
+
* never throws: a message that cannot read the verdict still goes out, just
|
|
34
|
+
* without the section.
|
|
35
|
+
*/
|
|
36
|
+
export declare function readJudgedCommitGateVerdict(target: JudgedCommitTarget, deps?: Partial<JudgedCommitVerdictDeps>): GateVerdictSummary | null;
|
|
37
|
+
/**
|
|
38
|
+
* The recorded verdict for the commit a re-work's run judged, through the
|
|
39
|
+
* re-work's reader, or null when the run judged none (the reader is then not
|
|
40
|
+
* asked: no sha is never "the HEAD").
|
|
41
|
+
*/
|
|
42
|
+
export declare function readJudgedVerdictFor(d: {
|
|
43
|
+
readGateVerdict: (target: JudgedCommitTarget) => GateVerdictSummary | null;
|
|
44
|
+
}, v: {
|
|
45
|
+
productId?: string | null;
|
|
46
|
+
focusId?: string | null;
|
|
47
|
+
}, judgedSha: string | null): GateVerdictSummary | null;
|
|
48
|
+
/** A focus delivery as the resume path reads it. */
|
|
49
|
+
export interface JudgedDeliveryRow {
|
|
50
|
+
executionStatus?: string | null;
|
|
51
|
+
gateState?: unknown;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The live (not done, not cancelled) delivery carrying the most recent judged
|
|
55
|
+
* commit stamped on its gate_state, with that judged commit, or null when none
|
|
56
|
+
* carries one. The delivery is what the resume resolves its own gate for. Pure.
|
|
57
|
+
*/
|
|
58
|
+
export declare function latestJudgedDelivery<T extends JudgedDeliveryRow>(deliveries: readonly T[]): {
|
|
59
|
+
delivery: T;
|
|
60
|
+
judged: JudgedCommit;
|
|
61
|
+
} | null;
|
|
62
|
+
/**
|
|
63
|
+
* The most recent judged commit stamped on a live delivery's gate_state
|
|
64
|
+
* (latestJudgedDelivery), or null. What a resumed focus session is shown the
|
|
65
|
+
* verdict for. Pure.
|
|
66
|
+
*/
|
|
67
|
+
export declare function latestJudgedCommit(deliveries: readonly JudgedDeliveryRow[]): JudgedCommit | null;
|
|
68
|
+
//# sourceMappingURL=gate-verdict-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-verdict-source.d.ts","sourceRoot":"","sources":["../../src/verify/gate-verdict-source.ts"],"names":[],"mappings":"AA4CA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAMnF,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAMD,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,GAAG,MAAM,GAAG,IAAI,CAG5F;AAED,6GAA6G;AAC7G,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,IAAI,CAiBvF;AAED,qDAAqD;AACrD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,aAAa,GAAG,kBAAkB,CAOvF;AAED,oFAAoF;AACpF,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,aAAa,GAAG,IAAI,CAAC;CACxF;AAMD,uFAAuF;AACvF,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,kBAAkB,EAC1B,IAAI,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC1C,kBAAkB,GAAG,IAAI,CAW3B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE;IAAE,eAAe,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,kBAAkB,GAAG,IAAI,CAAA;CAAE,EACjF,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACzD,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,kBAAkB,GAAG,IAAI,CAE3B;AAED,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAQxI;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,GAAG,YAAY,GAAG,IAAI,CAEhG"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/verify/gate-verdict-source.test.ts,
|
|
3
|
+
// packages/daemon/src/verify/rework-judgment.test.ts,
|
|
4
|
+
// packages/daemon/src/verify/verification-feedback.test.ts,
|
|
5
|
+
// packages/daemon/src/verify/verify-evidence-unavailable.test.ts
|
|
6
|
+
// PINNED-BY-END
|
|
7
|
+
/**
|
|
8
|
+
* Where the gate verdict a team is shown comes from.
|
|
9
|
+
*
|
|
10
|
+
* One shape (GateVerdictSummary), always for the commit a run JUDGED -- never
|
|
11
|
+
* for whatever the focus worktree HEAD is when the message is built. Commit B can
|
|
12
|
+
* land while commit A is being judged; a message about A that re-resolved HEAD
|
|
13
|
+
* would omit A's verdict or report B's.
|
|
14
|
+
*
|
|
15
|
+
* - the RUN in hand. The deterministic-failure feedback holds the StrategyResult
|
|
16
|
+
* and derives the verdict from it by the same rule the durable record uses
|
|
17
|
+
* (commit-verdict-record.buildCommitVerdict): no verdict for a timeout, an
|
|
18
|
+
* unavailable checkout, an unresolved config, or a run with no judged commit.
|
|
19
|
+
* - the durable RECORD for the judged sha. The shortfall and evidence-unavailable
|
|
20
|
+
* re-work are handed the sha of the run that judged them (judgedShaOfRun) and
|
|
21
|
+
* that run's own verdict (verify/rework-judgment.ts runVerdictOf); only a
|
|
22
|
+
* writer handed no run reads the record by exactly that sha.
|
|
23
|
+
* - the JUDGED COMMIT a re-work stamped. The resume delta holds no run, so it
|
|
24
|
+
* reads the judged commit the latest re-work stamped on a live delivery's
|
|
25
|
+
* gate_state (latestJudgedDelivery) -- a verification re-work's, or a
|
|
26
|
+
* verify_failed route for review-filed work (the review exit, or the live
|
|
27
|
+
* open-work pass; completion/review-exit-verdict-gate.ts). Every writer
|
|
28
|
+
* persists the delivery's OWN verdict beside that sha (a verification
|
|
29
|
+
* re-work: its run's; a review-filed route: its own-gate read), and the
|
|
30
|
+
* resume shows it. A stamp that carries none is resolved under THAT
|
|
31
|
+
* delivery's own gate (spawn/prompt-assembly.ts, through the review exit's
|
|
32
|
+
* own-gate reads), never by a gate-less record read: one commit can carry
|
|
33
|
+
* several gates' verdicts, and a sibling gate's must not answer. No judged
|
|
34
|
+
* sha, or no own-gate verdict for it, is no verdict: the message omits the
|
|
35
|
+
* section rather than guessing.
|
|
36
|
+
*
|
|
37
|
+
* Rendering lives in prompt-sections/gate-verdict-section.ts.
|
|
38
|
+
*
|
|
39
|
+
* @module gate-verdict-source
|
|
40
|
+
*/
|
|
41
|
+
import { DELIVERY_STATUS } from '@telora/daemon-core';
|
|
42
|
+
import { createLogger } from '../shell/log.js';
|
|
43
|
+
import { readVerificationHistory, } from '../queries/delivery-gate-state.js';
|
|
44
|
+
import { readCommitVerdict } from './commit-verdict-record.js';
|
|
45
|
+
const log = createLogger({ module: 'verification' });
|
|
46
|
+
const SHA_RE = /^[0-9a-f]{7,64}$/i;
|
|
47
|
+
function carriedStages(stages) {
|
|
48
|
+
return stages && stages.length > 0 ? { preExistingStages: [...stages] } : {};
|
|
49
|
+
}
|
|
50
|
+
/** The commit a run judged (its well-formed verifiedSha), or null for a run that judged none. Pure. */
|
|
51
|
+
export function judgedShaOfRun(run) {
|
|
52
|
+
const sha = run.verifiedSha;
|
|
53
|
+
return typeof sha === 'string' && SHA_RE.test(sha) ? sha : null;
|
|
54
|
+
}
|
|
55
|
+
/** The verdict a finished deterministic run rendered for its commit, or null when it rendered none. Pure. */
|
|
56
|
+
export function gateVerdictFromRun(run) {
|
|
57
|
+
if (run.timedOut || run.checkoutUnavailable || run.configUnresolved)
|
|
58
|
+
return null;
|
|
59
|
+
const sha = judgedShaOfRun(run);
|
|
60
|
+
if (sha === null)
|
|
61
|
+
return null;
|
|
62
|
+
// Exit 0 is the gate command passing: the strategy never reports 'failed' at
|
|
63
|
+
// exit 0 itself, so a failed outcome at exit 0 was demoted AFTER the gate by a
|
|
64
|
+
// per-delivery check (the security verify-closed gate) -- not the commit's
|
|
65
|
+
// verdict. A non-zero exit whose reds all pre-exist was demoted to 'passed' by
|
|
66
|
+
// attribution, and that pass IS what the record holds for the commit.
|
|
67
|
+
const passed = run.exitCode === 0 || run.outcome === 'passed';
|
|
68
|
+
if (!passed && (run.outcome !== 'failed' || typeof run.exitCode !== 'number'))
|
|
69
|
+
return null;
|
|
70
|
+
return {
|
|
71
|
+
outcome: passed ? 'passed' : 'failed',
|
|
72
|
+
sha,
|
|
73
|
+
...(!passed && run.failedStage ? { failedStage: run.failedStage } : {}),
|
|
74
|
+
...carriedStages(run.preExistingStages),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** The summary of a durable commit verdict. Pure. */
|
|
78
|
+
export function gateVerdictFromCommitVerdict(verdict) {
|
|
79
|
+
return {
|
|
80
|
+
outcome: verdict.outcome,
|
|
81
|
+
sha: verdict.sha,
|
|
82
|
+
...(verdict.outcome === 'failed' && verdict.failedStage ? { failedStage: verdict.failedStage } : {}),
|
|
83
|
+
...carriedStages(verdict.preExistingStages),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const defaultJudgedCommitVerdictDeps = () => ({
|
|
87
|
+
readVerdict: (productId, focusId, sha) => readCommitVerdict(productId, focusId, sha),
|
|
88
|
+
});
|
|
89
|
+
/**
|
|
90
|
+
* The recorded gate verdict for exactly the judged commit `target.sha`, or null
|
|
91
|
+
* (no product/focus, no or malformed sha, no record). Never resolves HEAD and
|
|
92
|
+
* never throws: a message that cannot read the verdict still goes out, just
|
|
93
|
+
* without the section.
|
|
94
|
+
*/
|
|
95
|
+
export function readJudgedCommitGateVerdict(target, deps = {}) {
|
|
96
|
+
const { productId, focusId, sha } = target;
|
|
97
|
+
if (!productId || !focusId || !sha || !SHA_RE.test(sha))
|
|
98
|
+
return null;
|
|
99
|
+
const d = { ...defaultJudgedCommitVerdictDeps(), ...deps };
|
|
100
|
+
try {
|
|
101
|
+
const verdict = d.readVerdict(productId, focusId, sha);
|
|
102
|
+
return verdict ? gateVerdictFromCommitVerdict(verdict) : null;
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
log.debug(`[verification] judged-commit verdict read failed for ${focusId}@${sha.slice(0, 8)}:`, err.message);
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The recorded verdict for the commit a re-work's run judged, through the
|
|
111
|
+
* re-work's reader, or null when the run judged none (the reader is then not
|
|
112
|
+
* asked: no sha is never "the HEAD").
|
|
113
|
+
*/
|
|
114
|
+
export function readJudgedVerdictFor(d, v, judgedSha) {
|
|
115
|
+
return judgedSha ? d.readGateVerdict({ productId: v.productId, focusId: v.focusId, sha: judgedSha }) : null;
|
|
116
|
+
}
|
|
117
|
+
/** Deliveries whose judgment no longer describes work a resumed team is doing. */
|
|
118
|
+
const SETTLED_STATUSES = new Set([DELIVERY_STATUS.DONE, DELIVERY_STATUS.CANCELLED]);
|
|
119
|
+
/**
|
|
120
|
+
* The live (not done, not cancelled) delivery carrying the most recent judged
|
|
121
|
+
* commit stamped on its gate_state, with that judged commit, or null when none
|
|
122
|
+
* carries one. The delivery is what the resume resolves its own gate for. Pure.
|
|
123
|
+
*/
|
|
124
|
+
export function latestJudgedDelivery(deliveries) {
|
|
125
|
+
let latest = null;
|
|
126
|
+
for (const delivery of deliveries) {
|
|
127
|
+
if (delivery.executionStatus && SETTLED_STATUSES.has(delivery.executionStatus))
|
|
128
|
+
continue;
|
|
129
|
+
const judged = readVerificationHistory(delivery.gateState).judgedCommit;
|
|
130
|
+
if (judged && (latest === null || judged.judgedAt > latest.judged.judgedAt))
|
|
131
|
+
latest = { delivery, judged };
|
|
132
|
+
}
|
|
133
|
+
return latest;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* The most recent judged commit stamped on a live delivery's gate_state
|
|
137
|
+
* (latestJudgedDelivery), or null. What a resumed focus session is shown the
|
|
138
|
+
* verdict for. Pure.
|
|
139
|
+
*/
|
|
140
|
+
export function latestJudgedCommit(deliveries) {
|
|
141
|
+
return latestJudgedDelivery(deliveries)?.judged ?? null;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=gate-verdict-source.js.map
|