@telora/daemon 0.21.98 → 0.21.144
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +6 -3
- package/dist/audit/audit-hooks.d.ts +120 -5
- package/dist/audit/audit-hooks.d.ts.map +1 -1
- package/dist/audit/audit-hooks.js +205 -45
- package/dist/audit/audit-hooks.js.map +1 -1
- package/dist/ci/ci-escalation.js +1 -1
- package/dist/ci/ci-escalation.js.map +1 -1
- package/dist/ci/ci-sensor-loop.d.ts +30 -0
- package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
- package/dist/ci/ci-sensor-loop.js +85 -12
- package/dist/ci/ci-sensor-loop.js.map +1 -1
- package/dist/cli/connect/config-write.d.ts +87 -0
- package/dist/cli/connect/config-write.d.ts.map +1 -0
- package/dist/cli/connect/config-write.js +255 -0
- package/dist/cli/connect/config-write.js.map +1 -0
- package/dist/cli/connect/registration.d.ts +76 -0
- package/dist/cli/connect/registration.d.ts.map +1 -0
- package/dist/cli/connect/registration.js +207 -0
- package/dist/cli/connect/registration.js.map +1 -0
- package/dist/cli/connect.d.ts +3 -141
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +9 -441
- package/dist/cli/connect.js.map +1 -1
- package/dist/completion/coverage-drift-state.d.ts +29 -2
- package/dist/completion/coverage-drift-state.d.ts.map +1 -1
- package/dist/completion/coverage-drift-state.js +42 -2
- package/dist/completion/coverage-drift-state.js.map +1 -1
- package/dist/completion/coverage-stabilized.d.ts +58 -0
- package/dist/completion/coverage-stabilized.d.ts.map +1 -0
- package/dist/completion/coverage-stabilized.js +84 -0
- package/dist/completion/coverage-stabilized.js.map +1 -0
- package/dist/completion/delivery-advancement-guard.d.ts +21 -0
- package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
- package/dist/completion/delivery-advancement-guard.js +31 -3
- package/dist/completion/delivery-advancement-guard.js.map +1 -1
- package/dist/completion/escalation-provenance.d.ts +2 -1
- package/dist/completion/escalation-provenance.d.ts.map +1 -1
- package/dist/completion/escalation-provenance.js +2 -1
- package/dist/completion/escalation-provenance.js.map +1 -1
- package/dist/completion/escalations.js +1 -1
- package/dist/completion/escalations.js.map +1 -1
- package/dist/completion/event-escalations.d.ts +16 -1
- package/dist/completion/event-escalations.d.ts.map +1 -1
- package/dist/completion/event-escalations.js +43 -5
- package/dist/completion/event-escalations.js.map +1 -1
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +5 -2
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +1 -1
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +2 -2
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/machine-remediable-demotion.d.ts +74 -0
- package/dist/completion/machine-remediable-demotion.d.ts.map +1 -0
- package/dist/completion/machine-remediable-demotion.js +148 -0
- package/dist/completion/machine-remediable-demotion.js.map +1 -0
- package/dist/completion/read-only-pristine.d.ts +1 -1
- package/dist/completion/read-only-pristine.d.ts.map +1 -1
- package/dist/completion/read-only-pristine.js +1 -1
- package/dist/completion/read-only-pristine.js.map +1 -1
- package/dist/completion/review-exit-escalations.d.ts +1 -1
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.d.ts +5 -2
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +15 -8
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/settle-injection-sweep.d.ts +55 -0
- package/dist/completion/settle-injection-sweep.d.ts.map +1 -0
- package/dist/completion/settle-injection-sweep.js +88 -0
- package/dist/completion/settle-injection-sweep.js.map +1 -0
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +42 -1
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/completion/status-advance-phase.d.ts.map +1 -1
- package/dist/completion/status-advance-phase.js +18 -0
- package/dist/completion/status-advance-phase.js.map +1 -1
- package/dist/completion/team-lifecycle.d.ts +42 -0
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +73 -1
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/delivery/delivery-advance-block.d.ts +1 -1
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +1 -1
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/delivery/delivery-lifecycle.d.ts +19 -33
- package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
- package/dist/delivery/delivery-lifecycle.js +20 -148
- package/dist/delivery/delivery-lifecycle.js.map +1 -1
- package/dist/delivery/delivery-merge-ops.d.ts +46 -0
- package/dist/delivery/delivery-merge-ops.d.ts.map +1 -0
- package/dist/delivery/delivery-merge-ops.js +154 -0
- package/dist/delivery/delivery-merge-ops.js.map +1 -0
- package/dist/delivery/delivery-reconciler-apply.d.ts +28 -0
- package/dist/delivery/delivery-reconciler-apply.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler-apply.js +30 -0
- package/dist/delivery/delivery-reconciler-apply.js.map +1 -1
- package/dist/delivery/delivery-reconciler-shadow.d.ts +1 -1
- package/dist/delivery/delivery-reconciler-shadow.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler-shadow.js +1 -1
- package/dist/delivery/delivery-reconciler-shadow.js.map +1 -1
- package/dist/delivery/delivery-reconciler.d.ts +7 -2
- package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler.js +34 -5
- package/dist/delivery/delivery-reconciler.js.map +1 -1
- package/dist/delivery/external-hold-surface.d.ts +32 -0
- package/dist/delivery/external-hold-surface.d.ts.map +1 -0
- package/dist/delivery/external-hold-surface.js +67 -0
- package/dist/delivery/external-hold-surface.js.map +1 -0
- package/dist/delivery/external-hold.d.ts +21 -0
- package/dist/delivery/external-hold.d.ts.map +1 -1
- package/dist/delivery/external-hold.js +40 -5
- package/dist/delivery/external-hold.js.map +1 -1
- package/dist/delivery/operator-hold.d.ts +1 -1
- package/dist/delivery/operator-hold.d.ts.map +1 -1
- package/dist/delivery/paused-revival.d.ts +140 -0
- package/dist/delivery/paused-revival.d.ts.map +1 -0
- package/dist/delivery/paused-revival.js +230 -0
- package/dist/delivery/paused-revival.js.map +1 -0
- package/dist/delivery/wait-reachability.d.ts.map +1 -1
- package/dist/delivery/wait-reachability.js +11 -0
- package/dist/delivery/wait-reachability.js.map +1 -1
- package/dist/directive/close-loop-dispatcher.d.ts +16 -263
- package/dist/directive/close-loop-dispatcher.d.ts.map +1 -1
- package/dist/directive/close-loop-dispatcher.js +21 -259
- package/dist/directive/close-loop-dispatcher.js.map +1 -1
- package/dist/directive/directive-dispatch.d.ts +20 -1
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +19 -1
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-executor.d.ts +1 -3
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +24 -22
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/directive/phase-sync.d.ts +28 -15
- package/dist/directive/phase-sync.d.ts.map +1 -1
- package/dist/directive/phase-sync.js +28 -36
- package/dist/directive/phase-sync.js.map +1 -1
- package/dist/directive/resolver-dispatch.d.ts +19 -92
- package/dist/directive/resolver-dispatch.d.ts.map +1 -1
- package/dist/directive/resolver-dispatch.js +19 -65
- package/dist/directive/resolver-dispatch.js.map +1 -1
- package/dist/drift/staleness-sensor.js +1 -1
- package/dist/drift/staleness-sensor.js.map +1 -1
- package/dist/focus/focus-engine.d.ts.map +1 -1
- package/dist/focus/focus-engine.js +29 -2
- package/dist/focus/focus-engine.js.map +1 -1
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +290 -256
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus/focus-lifecycle.js +2 -1
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus/focus-loop-registry.js +43 -1
- package/dist/focus/focus-loop-registry.js.map +1 -1
- package/dist/focus/focus-respawn-guard.d.ts +1 -1
- package/dist/focus/focus-respawn-guard.d.ts.map +1 -1
- package/dist/focus/focus-respawn-guard.js +12 -3
- package/dist/focus/focus-respawn-guard.js.map +1 -1
- package/dist/focus/focus-team-state.d.ts +11 -0
- package/dist/focus/focus-team-state.d.ts.map +1 -1
- package/dist/focus/focus-team-state.js +17 -0
- package/dist/focus/focus-team-state.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts +17 -46
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +104 -256
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts +62 -0
- package/dist/focus/listener-spawn.d.ts.map +1 -0
- package/dist/focus/listener-spawn.js +418 -0
- package/dist/focus/listener-spawn.js.map +1 -0
- package/dist/focus/listener-state.d.ts +57 -0
- package/dist/focus/listener-state.d.ts.map +1 -0
- package/dist/focus/listener-state.js +63 -0
- package/dist/focus/listener-state.js.map +1 -0
- package/dist/focus/listener.d.ts +0 -58
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +138 -516
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/tick-deadline.d.ts +55 -0
- package/dist/focus/tick-deadline.d.ts.map +1 -0
- package/dist/focus/tick-deadline.js +91 -0
- package/dist/focus/tick-deadline.js.map +1 -0
- package/dist/focus/verify-open-issues.d.ts +62 -0
- package/dist/focus/verify-open-issues.d.ts.map +1 -0
- package/dist/focus/verify-open-issues.js +265 -0
- package/dist/focus/verify-open-issues.js.map +1 -0
- package/dist/focus-stage-lifecycle/index.d.ts +19 -26
- package/dist/focus-stage-lifecycle/index.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/index.js +27 -39
- package/dist/focus-stage-lifecycle/index.js.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-cause-arbiter.d.ts +52 -0
- package/dist/focus-stage-lifecycle/wedge-cause-arbiter.d.ts.map +1 -0
- package/dist/focus-stage-lifecycle/wedge-cause-arbiter.js +94 -0
- package/dist/focus-stage-lifecycle/wedge-cause-arbiter.js.map +1 -0
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +18 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.js +57 -7
- package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
- package/dist/git/index.d.ts +2 -0
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +2 -0
- package/dist/git/index.js.map +1 -1
- package/dist/git/merge-strategies.d.ts +80 -0
- package/dist/git/merge-strategies.d.ts.map +1 -0
- package/dist/git/merge-strategies.js +218 -0
- package/dist/git/merge-strategies.js.map +1 -0
- package/dist/git/merge-to-main.d.ts +76 -0
- package/dist/git/merge-to-main.d.ts.map +1 -0
- package/dist/git/merge-to-main.js +256 -0
- package/dist/git/merge-to-main.js.map +1 -0
- package/dist/git/merge.d.ts +27 -81
- package/dist/git/merge.d.ts.map +1 -1
- package/dist/git/merge.js +4 -448
- package/dist/git/merge.js.map +1 -1
- package/dist/git/state-detector.js +1 -1
- package/dist/git/state-detector.js.map +1 -1
- package/dist/guard/condition-evaluators.d.ts +9 -0
- package/dist/guard/condition-evaluators.d.ts.map +1 -1
- package/dist/guard/condition-evaluators.js +15 -0
- package/dist/guard/condition-evaluators.js.map +1 -1
- package/dist/guard/guard-evaluator.d.ts +17 -1
- package/dist/guard/guard-evaluator.d.ts.map +1 -1
- package/dist/guard/guard-evaluator.js +61 -2
- package/dist/guard/guard-evaluator.js.map +1 -1
- package/dist/guard/trigger-executor.d.ts +30 -18
- package/dist/guard/trigger-executor.d.ts.map +1 -1
- package/dist/guard/trigger-executor.js +55 -31
- package/dist/guard/trigger-executor.js.map +1 -1
- package/dist/loops/engine.js +1 -1
- package/dist/loops/engine.js.map +1 -1
- package/dist/merge/focus-merge.d.ts +1 -1
- package/dist/merge/focus-merge.d.ts.map +1 -1
- package/dist/merge/focus-merge.js +1 -1
- package/dist/merge/focus-merge.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts +1 -1
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +2 -2
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/merge/merge-detector.js +1 -1
- package/dist/merge/merge-detector.js.map +1 -1
- package/dist/nexus/return.js +1 -1
- package/dist/nexus/return.js.map +1 -1
- package/dist/prd/controller-shared.d.ts +223 -0
- package/dist/prd/controller-shared.d.ts.map +1 -0
- package/dist/prd/controller-shared.js +77 -0
- package/dist/prd/controller-shared.js.map +1 -0
- package/dist/prd/controller.d.ts +5 -256
- package/dist/prd/controller.d.ts.map +1 -1
- package/dist/prd/controller.js +9 -166
- package/dist/prd/controller.js.map +1 -1
- package/dist/prd/done-sweep.d.ts +55 -0
- package/dist/prd/done-sweep.d.ts.map +1 -0
- package/dist/prd/done-sweep.js +112 -0
- package/dist/prd/done-sweep.js.map +1 -0
- package/dist/prompt/team-prompt-base.d.ts +1 -1
- package/dist/prompt/team-prompt-base.d.ts.map +1 -1
- package/dist/prompt/team-prompt-base.js +1 -1
- package/dist/prompt/team-prompt-base.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts +1 -1
- 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/persona-sections.d.ts +0 -32
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +19 -88
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/prompt-sections/shared.d.ts +1 -1
- package/dist/prompt-sections/shared.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.d.ts +1 -1
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +2 -1
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/deliveries.d.ts +0 -172
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +1 -77
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/escalation-consumption.d.ts +120 -0
- package/dist/queries/escalation-consumption.d.ts.map +1 -0
- package/dist/queries/escalation-consumption.js +143 -0
- package/dist/queries/escalation-consumption.js.map +1 -0
- package/dist/queries/escalation-dispositions.d.ts +19 -0
- package/dist/queries/escalation-dispositions.d.ts.map +1 -0
- package/dist/queries/escalation-dispositions.js +18 -0
- package/dist/queries/escalation-dispositions.js.map +1 -0
- package/dist/queries/escalation-suppression.d.ts +1 -1
- package/dist/queries/escalation-suppression.d.ts.map +1 -1
- package/dist/queries/escalation-suppression.js +1 -1
- package/dist/queries/escalation-suppression.js.map +1 -1
- package/dist/queries/escalations.d.ts +343 -0
- package/dist/queries/escalations.d.ts.map +1 -0
- package/dist/queries/escalations.js +493 -0
- package/dist/queries/escalations.js.map +1 -0
- package/dist/queries/focus-discovery.d.ts +204 -0
- package/dist/queries/focus-discovery.d.ts.map +1 -0
- package/dist/queries/focus-discovery.js +92 -0
- package/dist/queries/focus-discovery.js.map +1 -0
- package/dist/queries/focuses.d.ts +36 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +45 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/guards.d.ts +10 -0
- package/dist/queries/guards.d.ts.map +1 -1
- package/dist/queries/guards.js +14 -1
- package/dist/queries/guards.js.map +1 -1
- package/dist/queries/index.d.ts +4 -2
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/index.js +4 -2
- package/dist/queries/index.js.map +1 -1
- package/dist/queries/issues.d.ts +8 -372
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +7 -482
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/schemas.d.ts +51 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +34 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/verification.d.ts +5 -6
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +5 -6
- package/dist/queries/verification.js.map +1 -1
- package/dist/resolvers/agent-escalations.d.ts +20 -0
- package/dist/resolvers/agent-escalations.d.ts.map +1 -1
- package/dist/resolvers/agent-escalations.js +40 -10
- package/dist/resolvers/agent-escalations.js.map +1 -1
- package/dist/resolvers/index.d.ts +2 -2
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/loop-persona.d.ts +1 -11
- package/dist/resolvers/loop-persona.d.ts.map +1 -1
- package/dist/resolvers/loop-persona.js +2 -16
- package/dist/resolvers/loop-persona.js.map +1 -1
- package/dist/resolvers/shared/git-diff.d.ts +99 -18
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +98 -27
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/shell/control-state.d.ts +1 -1
- package/dist/shell/control-state.d.ts.map +1 -1
- package/dist/shell/control-state.js +1 -1
- package/dist/shell/control-state.js.map +1 -1
- package/dist/shell/crash-recovery.d.ts +1 -1
- package/dist/shell/crash-recovery.d.ts.map +1 -1
- package/dist/shell/crash-recovery.js +2 -2
- package/dist/shell/crash-recovery.js.map +1 -1
- package/dist/shell/install-probe-tick.d.ts +1 -1
- package/dist/shell/install-probe-tick.d.ts.map +1 -1
- package/dist/shell/install-probe-tick.js +1 -1
- package/dist/shell/install-probe-tick.js.map +1 -1
- package/dist/shell/unified-shell-provisioning.d.ts +40 -0
- package/dist/shell/unified-shell-provisioning.d.ts.map +1 -1
- package/dist/shell/unified-shell-provisioning.js +72 -0
- package/dist/shell/unified-shell-provisioning.js.map +1 -1
- package/dist/shell/unified-shell.d.ts.map +1 -1
- package/dist/shell/unified-shell.js +19 -2
- package/dist/shell/unified-shell.js.map +1 -1
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +6 -1
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/model-routing.d.ts +1 -1
- package/dist/spawn/model-routing.d.ts.map +1 -1
- package/dist/spawn/model-routing.js +1 -1
- package/dist/spawn/model-routing.js.map +1 -1
- package/dist/spawn/process-spawn.d.ts.map +1 -1
- package/dist/spawn/process-spawn.js +7 -0
- package/dist/spawn/process-spawn.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts +1 -1
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +1 -1
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/spawn-cooldown.d.ts +41 -7
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +47 -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 +34 -2
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +1 -1
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +1 -1
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +12 -0
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/verify/stall-detectors.d.ts +20 -8
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +27 -46
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +1 -1
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-deps.d.ts +1 -1
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +20 -12
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/workflow/gate-failure-policy.d.ts +48 -0
- package/dist/workflow/gate-failure-policy.d.ts.map +1 -0
- package/dist/workflow/gate-failure-policy.js +57 -0
- package/dist/workflow/gate-failure-policy.js.map +1 -0
- package/dist/workflow/pipeline-config.d.ts +2 -2
- package/dist/workflow/pipeline-config.js +2 -2
- package/dist/worktree/provision.js +1 -1
- package/dist/worktree/provision.js.map +1 -1
- package/dist/worktree/scratch-guard.d.ts.map +1 -1
- package/dist/worktree/scratch-guard.js +23 -2
- package/dist/worktree/scratch-guard.js.map +1 -1
- package/package.json +1 -1
- package/dist/directive/close-loop-stage.d.ts +0 -50
- package/dist/directive/close-loop-stage.d.ts.map +0 -1
- package/dist/directive/close-loop-stage.js +0 -210
- package/dist/directive/close-loop-stage.js.map +0 -1
- package/dist/focus-stage-lifecycle/review-convergence.d.ts +0 -133
- package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +0 -1
- package/dist/focus-stage-lifecycle/review-convergence.js +0 -237
- package/dist/focus-stage-lifecycle/review-convergence.js.map +0 -1
|
@@ -1,36 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Focus workflow lifecycle stage transitions (D2).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* review -> close_loop when there are no in-flight remediation deliveries
|
|
16
|
-
* (Issue 2: state-based convergence) AND we have not
|
|
17
|
-
* exceeded the N-iteration cap.
|
|
18
|
-
*
|
|
19
|
-
* review -> (escalate) when iteration count exceeds the cap
|
|
20
|
-
* (Issue 3: review_nonconvergent escalation, focus
|
|
21
|
-
* stays at review until a human intervenes).
|
|
4
|
+
* Historically the daemon advanced a `product_focuses.stage` column along
|
|
5
|
+
* `planning -> queued -> in_progress -> verify -> review -> close_loop -> done`.
|
|
6
|
+
* That machine-driven stage axis is being retired in favour of a single derived
|
|
7
|
+
* lifecycle (`deriveFocusPhase`): review ENTRY is owned by
|
|
8
|
+
* state-cascade.checkAutoReview (`review_requested_at`), and both the machine
|
|
9
|
+
* verify->review advance (TEL-6) and the review->close_loop advance (TEL-4) have
|
|
10
|
+
* been removed. Review completion is derived (`winding_down`), never a
|
|
11
|
+
* stage='close_loop' write; a non-convergent review is bounded by the
|
|
12
|
+
* review-cycle churn meter + review_window_stalled detector, not a permanent
|
|
13
|
+
* stage hold awaiting a human.
|
|
22
14
|
*
|
|
23
15
|
* This module owns the poll-loop dispatcher `runStageLifecycleTransitions` and
|
|
24
|
-
* re-exports the decomposed transition logic, which lives in
|
|
16
|
+
* re-exports the decomposed transition logic, which lives in two cohesive
|
|
25
17
|
* submodules:
|
|
26
18
|
*
|
|
27
|
-
* - `focus-stage-lifecycle/review-convergence` -- the verify->review and
|
|
28
|
-
* review->close_loop transitions plus their pure convergence helpers.
|
|
29
19
|
* - `focus-stage-lifecycle/planning-release` -- the ratify-to-execute and
|
|
30
20
|
* writable-focus planning->queued delivery releases.
|
|
31
21
|
* - `focus-stage-lifecycle/wedge-watchdog` -- the planning-wedge watchdog +
|
|
32
22
|
* zero-actionable log.
|
|
33
23
|
*
|
|
24
|
+
* The former `review-convergence` submodule (the machine-driven
|
|
25
|
+
* verify->review and review->close_loop stage advances) was removed: review
|
|
26
|
+
* ENTRY is owned by state-cascade.checkAutoReview (review_requested_at), and
|
|
27
|
+
* review COMPLETION is derived (`winding_down`) rather than written as
|
|
28
|
+
* stage='close_loop'. A non-convergent review is bounded by the review-cycle
|
|
29
|
+
* churn meter + review_window_stalled detector, not a permanent stage hold.
|
|
30
|
+
*
|
|
34
31
|
* It does not advance `current_workflow_stage_id` directly -- the existing
|
|
35
32
|
* `syncFocusPhase` does that on the next poll, after the daemon's `stage` write
|
|
36
33
|
* lands.
|
|
@@ -38,12 +35,10 @@
|
|
|
38
35
|
* @module focus-stage-lifecycle
|
|
39
36
|
*/
|
|
40
37
|
import type { DaemonConfig, FocusDeliveryInfo } from '../types/index.js';
|
|
41
|
-
import { getActiveFocuses as defaultGetActiveFocuses } from '../queries/
|
|
38
|
+
import { getActiveFocuses as defaultGetActiveFocuses } from '../queries/focus-discovery.js';
|
|
42
39
|
import { getFocusDeliveries as defaultGetFocusDeliveries } from '../queries/focuses.js';
|
|
43
|
-
import { advanceVerifyToReviewIfEnabled, advanceReviewToCloseLoopIfConverged, type ReviewTransitionOutcome } from './review-convergence.js';
|
|
44
40
|
import { releaseRatifiedReadOnlyFocus, releaseWritableFocusPlanningDeliveries } from './planning-release.js';
|
|
45
41
|
import { evaluateFocusWedge, type WedgeOutcome } from './wedge-watchdog.js';
|
|
46
|
-
export * from './review-convergence.js';
|
|
47
42
|
export * from './planning-release.js';
|
|
48
43
|
export * from './wedge-watchdog.js';
|
|
49
44
|
/**
|
|
@@ -53,8 +48,6 @@ export * from './wedge-watchdog.js';
|
|
|
53
48
|
export declare function runStageLifecycleTransitions(config: DaemonConfig, deps?: {
|
|
54
49
|
getActiveFocuses: typeof defaultGetActiveFocuses;
|
|
55
50
|
getFocusDeliveries: typeof defaultGetFocusDeliveries;
|
|
56
|
-
advanceVerifyToReview: (focus: Parameters<typeof advanceVerifyToReviewIfEnabled>[0]) => Promise<boolean>;
|
|
57
|
-
advanceReviewToCloseLoop: (focus: Parameters<typeof advanceReviewToCloseLoopIfConverged>[0]) => Promise<ReviewTransitionOutcome>;
|
|
58
51
|
releaseRatifiedReadOnly: (focus: Parameters<typeof releaseRatifiedReadOnlyFocus>[0]) => Promise<number>;
|
|
59
52
|
releaseWritablePlanning: (focus: Parameters<typeof releaseWritableFocusPlanningDeliveries>[0]) => Promise<number>;
|
|
60
53
|
evaluateWedge: (focus: Parameters<typeof evaluateFocusWedge>[0]) => Promise<WedgeOutcome>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EACL,4BAA4B,EAC5B,sCAAsC,EACvC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAElB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAQ7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AAIpC;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE;IACJ,gBAAgB,EAAE,OAAO,uBAAuB,CAAC;IACjD,kBAAkB,EAAE,OAAO,yBAAyB,CAAC;IACrD,uBAAuB,EAAE,CACvB,KAAK,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,KACtD,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,uBAAuB,EAAE,CACvB,KAAK,EAAE,UAAU,CAAC,OAAO,sCAAsC,CAAC,CAAC,CAAC,CAAC,KAChE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,aAAa,EAAE,CACb,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAC5C,OAAO,CAAC,YAAY,CAAC,CAAC;CAO5B,GACA,OAAO,CAAC,IAAI,CAAC,CAuHf;AAGD,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -1,36 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Focus workflow lifecycle stage transitions (D2).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* review -> close_loop when there are no in-flight remediation deliveries
|
|
16
|
-
* (Issue 2: state-based convergence) AND we have not
|
|
17
|
-
* exceeded the N-iteration cap.
|
|
18
|
-
*
|
|
19
|
-
* review -> (escalate) when iteration count exceeds the cap
|
|
20
|
-
* (Issue 3: review_nonconvergent escalation, focus
|
|
21
|
-
* stays at review until a human intervenes).
|
|
4
|
+
* Historically the daemon advanced a `product_focuses.stage` column along
|
|
5
|
+
* `planning -> queued -> in_progress -> verify -> review -> close_loop -> done`.
|
|
6
|
+
* That machine-driven stage axis is being retired in favour of a single derived
|
|
7
|
+
* lifecycle (`deriveFocusPhase`): review ENTRY is owned by
|
|
8
|
+
* state-cascade.checkAutoReview (`review_requested_at`), and both the machine
|
|
9
|
+
* verify->review advance (TEL-6) and the review->close_loop advance (TEL-4) have
|
|
10
|
+
* been removed. Review completion is derived (`winding_down`), never a
|
|
11
|
+
* stage='close_loop' write; a non-convergent review is bounded by the
|
|
12
|
+
* review-cycle churn meter + review_window_stalled detector, not a permanent
|
|
13
|
+
* stage hold awaiting a human.
|
|
22
14
|
*
|
|
23
15
|
* This module owns the poll-loop dispatcher `runStageLifecycleTransitions` and
|
|
24
|
-
* re-exports the decomposed transition logic, which lives in
|
|
16
|
+
* re-exports the decomposed transition logic, which lives in two cohesive
|
|
25
17
|
* submodules:
|
|
26
18
|
*
|
|
27
|
-
* - `focus-stage-lifecycle/review-convergence` -- the verify->review and
|
|
28
|
-
* review->close_loop transitions plus their pure convergence helpers.
|
|
29
19
|
* - `focus-stage-lifecycle/planning-release` -- the ratify-to-execute and
|
|
30
20
|
* writable-focus planning->queued delivery releases.
|
|
31
21
|
* - `focus-stage-lifecycle/wedge-watchdog` -- the planning-wedge watchdog +
|
|
32
22
|
* zero-actionable log.
|
|
33
23
|
*
|
|
24
|
+
* The former `review-convergence` submodule (the machine-driven
|
|
25
|
+
* verify->review and review->close_loop stage advances) was removed: review
|
|
26
|
+
* ENTRY is owned by state-cascade.checkAutoReview (review_requested_at), and
|
|
27
|
+
* review COMPLETION is derived (`winding_down`) rather than written as
|
|
28
|
+
* stage='close_loop'. A non-convergent review is bounded by the review-cycle
|
|
29
|
+
* churn meter + review_window_stalled detector, not a permanent stage hold.
|
|
30
|
+
*
|
|
34
31
|
* It does not advance `current_workflow_stage_id` directly -- the existing
|
|
35
32
|
* `syncFocusPhase` does that on the next poll, after the daemon's `stage` write
|
|
36
33
|
* lands.
|
|
@@ -38,17 +35,14 @@
|
|
|
38
35
|
* @module focus-stage-lifecycle
|
|
39
36
|
*/
|
|
40
37
|
import { configForProduct } from '../shell/config.js';
|
|
41
|
-
import { getActiveFocuses as defaultGetActiveFocuses } from '../queries/
|
|
38
|
+
import { getActiveFocuses as defaultGetActiveFocuses } from '../queries/focus-discovery.js';
|
|
42
39
|
import { getFocusDeliveries as defaultGetFocusDeliveries } from '../queries/focuses.js';
|
|
43
|
-
import { FOCUS_STAGE } from '@telora/daemon-core';
|
|
44
|
-
import { advanceVerifyToReviewIfEnabled, advanceReviewToCloseLoopIfConverged, } from './review-convergence.js';
|
|
45
40
|
import { releaseRatifiedReadOnlyFocus, releaseWritableFocusPlanningDeliveries, } from './planning-release.js';
|
|
46
41
|
import { evaluateFocusWedge, pruneWedgeWatchdogState, } from './wedge-watchdog.js';
|
|
47
42
|
import { createLogger } from '../shell/log.js';
|
|
48
43
|
const log = createLogger({ module: 'focus-stage-lifecycle' });
|
|
49
44
|
// Re-export the decomposed surface so every importer + test keeps resolving
|
|
50
45
|
// these names from './index.js' unchanged.
|
|
51
|
-
export * from './review-convergence.js';
|
|
52
46
|
export * from './planning-release.js';
|
|
53
47
|
export * from './wedge-watchdog.js';
|
|
54
48
|
// ── Poll-loop entry point ─────────────────────────────────────────
|
|
@@ -59,8 +53,6 @@ export * from './wedge-watchdog.js';
|
|
|
59
53
|
export async function runStageLifecycleTransitions(config, deps = {
|
|
60
54
|
getActiveFocuses: defaultGetActiveFocuses,
|
|
61
55
|
getFocusDeliveries: defaultGetFocusDeliveries,
|
|
62
|
-
advanceVerifyToReview: (f) => advanceVerifyToReviewIfEnabled(f),
|
|
63
|
-
advanceReviewToCloseLoop: (f) => advanceReviewToCloseLoopIfConverged(f),
|
|
64
56
|
releaseRatifiedReadOnly: (f) => releaseRatifiedReadOnlyFocus(f),
|
|
65
57
|
releaseWritablePlanning: (f) => releaseWritableFocusPlanningDeliveries(f),
|
|
66
58
|
evaluateWedge: (f) => evaluateFocusWedge(f),
|
|
@@ -158,18 +150,14 @@ export async function runStageLifecycleTransitions(config, deps = {
|
|
|
158
150
|
log.warn(`[focus-stage-lifecycle] Wedge watchdog tick failed for ` +
|
|
159
151
|
`"${focus.focus_name}": ${err.message}`);
|
|
160
152
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
catch (err) {
|
|
170
|
-
log.warn(`[focus-stage-lifecycle] Tick failed for "${focus.focus_name}": ` +
|
|
171
|
-
`${err.message}`);
|
|
172
|
-
}
|
|
153
|
+
// Review ENTRY is owned solely by state-cascade.checkAutoReview (which
|
|
154
|
+
// writes review_requested_at, the axis the derived 'reviewing' phase and
|
|
155
|
+
// the review team actually key on). The former verify->review auto-advance
|
|
156
|
+
// (advanceVerifyToReviewIfEnabled, TEL-6) and review->close_loop machine
|
|
157
|
+
// advance (advanceReviewToCloseLoopIfConverged, TEL-4) are both removed:
|
|
158
|
+
// review completion is derived (`winding_down`), never a stage='close_loop'
|
|
159
|
+
// write, and a non-convergent review is bounded by the review-cycle churn
|
|
160
|
+
// meter + review_window_stalled detector rather than a permanent hold.
|
|
173
161
|
}
|
|
174
162
|
}
|
|
175
163
|
// Evict wedge watchdog state for focuses no longer active anywhere, so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single wedge-cause ARBITER (TEL-3 of "One decision path, one wedge
|
|
3
|
+
* arbiter").
|
|
4
|
+
*
|
|
5
|
+
* A wedged focus can trip up to ~ten independent cap detectors, each of which
|
|
6
|
+
* files its own escalation kind (its "evidence"): team_failure, daemon_gate_stuck,
|
|
7
|
+
* wedged_focus, review_window_stalled, verify_gate_unclearable,
|
|
8
|
+
* respawn_cycle_exhausted, stuck_focus_branch, review_coverage_incomplete,
|
|
9
|
+
* review_cycle_cap_exceeded, review_handoff_exhausted. Before this, the cause a
|
|
10
|
+
* wedge REPORTED was whichever detector's bound crossed FIRST -- so the same
|
|
11
|
+
* underlying wedge got a different label depending on poll timing.
|
|
12
|
+
*
|
|
13
|
+
* This arbiter removes the timing dependence: given the SET of causes whose
|
|
14
|
+
* detectors have fired for a focus (their open escalations), it returns ONE
|
|
15
|
+
* authoritative cause by a STATED PRECEDENCE, independent of the order the bounds
|
|
16
|
+
* crossed. The precedence puts the ROOT blocker above the SYMPTOM: a specific
|
|
17
|
+
* blocker (an unclearable verify gate, a stuck branch, a review that cannot
|
|
18
|
+
* converge) outranks the generic "the team keeps failing" / "respawns halted"
|
|
19
|
+
* symptoms those blockers ultimately produce. So an operator (or a downstream
|
|
20
|
+
* reader) is pointed at the cause to fix, not the loudest or earliest alarm.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Wedge causes highest-precedence (ROOT) first. A cause earlier in this list
|
|
24
|
+
* outranks every cause after it when both are present. Every wedge/stall
|
|
25
|
+
* escalation kind the daemon files appears exactly once; a kind not listed here
|
|
26
|
+
* is not a wedge cause and is ignored by the arbiter.
|
|
27
|
+
*/
|
|
28
|
+
export declare const WEDGE_CAUSE_PRECEDENCE: readonly string[];
|
|
29
|
+
/** True when `kind` is a wedge cause the arbiter ranks. */
|
|
30
|
+
export declare function isWedgeCause(kind: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Decide the ONE authoritative wedge cause from the set of causes whose
|
|
33
|
+
* detectors have fired. Deterministic and order-independent: the result depends
|
|
34
|
+
* only on WHICH causes are present, never on the order they were observed or
|
|
35
|
+
* passed in. Non-wedge kinds are ignored. Returns null when no wedge cause is
|
|
36
|
+
* present (an empty or all-non-wedge input).
|
|
37
|
+
*/
|
|
38
|
+
export declare function arbitrateWedgeCause(crossedKinds: Iterable<string>): string | null;
|
|
39
|
+
/** IO seam for getFocusWedgeCause (default reaches the real query; tests stub it). */
|
|
40
|
+
export interface WedgeCauseReaderDeps {
|
|
41
|
+
listOpenFocusEscalationKinds: (focusId: string) => Promise<string[]>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Report the ONE authoritative wedge cause for a focus, arbitrated from the
|
|
45
|
+
* evidence its detectors have filed (its open escalations). Deterministic: the
|
|
46
|
+
* result depends only on WHICH detectors have fired, never on the order they
|
|
47
|
+
* crossed. Returns null when the focus has no open wedge-cause escalation.
|
|
48
|
+
* Best-effort: on a read failure it returns null (the caller degrades to its own
|
|
49
|
+
* local cause) rather than throwing.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getFocusWedgeCause(focusId: string, deps: WedgeCauseReaderDeps): Promise<string | null>;
|
|
52
|
+
//# sourceMappingURL=wedge-cause-arbiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wedge-cause-arbiter.d.ts","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/wedge-cause-arbiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAqBnD,CAAC;AAMF,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAYjF;AAED,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,4BAA4B,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACtE;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single wedge-cause ARBITER (TEL-3 of "One decision path, one wedge
|
|
3
|
+
* arbiter").
|
|
4
|
+
*
|
|
5
|
+
* A wedged focus can trip up to ~ten independent cap detectors, each of which
|
|
6
|
+
* files its own escalation kind (its "evidence"): team_failure, daemon_gate_stuck,
|
|
7
|
+
* wedged_focus, review_window_stalled, verify_gate_unclearable,
|
|
8
|
+
* respawn_cycle_exhausted, stuck_focus_branch, review_coverage_incomplete,
|
|
9
|
+
* review_cycle_cap_exceeded, review_handoff_exhausted. Before this, the cause a
|
|
10
|
+
* wedge REPORTED was whichever detector's bound crossed FIRST -- so the same
|
|
11
|
+
* underlying wedge got a different label depending on poll timing.
|
|
12
|
+
*
|
|
13
|
+
* This arbiter removes the timing dependence: given the SET of causes whose
|
|
14
|
+
* detectors have fired for a focus (their open escalations), it returns ONE
|
|
15
|
+
* authoritative cause by a STATED PRECEDENCE, independent of the order the bounds
|
|
16
|
+
* crossed. The precedence puts the ROOT blocker above the SYMPTOM: a specific
|
|
17
|
+
* blocker (an unclearable verify gate, a stuck branch, a review that cannot
|
|
18
|
+
* converge) outranks the generic "the team keeps failing" / "respawns halted"
|
|
19
|
+
* symptoms those blockers ultimately produce. So an operator (or a downstream
|
|
20
|
+
* reader) is pointed at the cause to fix, not the loudest or earliest alarm.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Wedge causes highest-precedence (ROOT) first. A cause earlier in this list
|
|
24
|
+
* outranks every cause after it when both are present. Every wedge/stall
|
|
25
|
+
* escalation kind the daemon files appears exactly once; a kind not listed here
|
|
26
|
+
* is not a wedge cause and is ignored by the arbiter.
|
|
27
|
+
*/
|
|
28
|
+
export const WEDGE_CAUSE_PRECEDENCE = [
|
|
29
|
+
// Infra / merge root: nothing in the focus can advance until the branch is
|
|
30
|
+
// un-stuck, so it outranks every downstream symptom.
|
|
31
|
+
'stuck_focus_branch',
|
|
32
|
+
// Delivery-level root: the verify gate cannot be cleared by re-work.
|
|
33
|
+
'verify_gate_unclearable',
|
|
34
|
+
// Review roots: the review itself cannot converge / cover / hand off.
|
|
35
|
+
'review_coverage_incomplete',
|
|
36
|
+
'review_cycle_cap_exceeded',
|
|
37
|
+
'review_handoff_exhausted',
|
|
38
|
+
// Review timing: the review window went stale.
|
|
39
|
+
'review_window_stalled',
|
|
40
|
+
// A generic guard is stuck (operator triages from gate_state).
|
|
41
|
+
'daemon_gate_stuck',
|
|
42
|
+
// A planning-stage rank-0 block wedges the ready selector.
|
|
43
|
+
'wedged_focus',
|
|
44
|
+
// Symptoms of a repeatedly-failing focus (lowest precedence): the machine
|
|
45
|
+
// halted respawns / the team keeps giving up. These are what the roots above
|
|
46
|
+
// ultimately CAUSE, so a root, when present, always wins over them.
|
|
47
|
+
'respawn_cycle_exhausted',
|
|
48
|
+
'team_failure',
|
|
49
|
+
];
|
|
50
|
+
const PRECEDENCE_RANK = new Map(WEDGE_CAUSE_PRECEDENCE.map((kind, i) => [kind, i]));
|
|
51
|
+
/** True when `kind` is a wedge cause the arbiter ranks. */
|
|
52
|
+
export function isWedgeCause(kind) {
|
|
53
|
+
return PRECEDENCE_RANK.has(kind);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Decide the ONE authoritative wedge cause from the set of causes whose
|
|
57
|
+
* detectors have fired. Deterministic and order-independent: the result depends
|
|
58
|
+
* only on WHICH causes are present, never on the order they were observed or
|
|
59
|
+
* passed in. Non-wedge kinds are ignored. Returns null when no wedge cause is
|
|
60
|
+
* present (an empty or all-non-wedge input).
|
|
61
|
+
*/
|
|
62
|
+
export function arbitrateWedgeCause(crossedKinds) {
|
|
63
|
+
let best = null;
|
|
64
|
+
let bestRank = Number.POSITIVE_INFINITY;
|
|
65
|
+
for (const kind of crossedKinds) {
|
|
66
|
+
const rank = PRECEDENCE_RANK.get(kind);
|
|
67
|
+
if (rank === undefined)
|
|
68
|
+
continue; // not a wedge cause
|
|
69
|
+
if (rank < bestRank) {
|
|
70
|
+
bestRank = rank;
|
|
71
|
+
best = kind;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return best;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Report the ONE authoritative wedge cause for a focus, arbitrated from the
|
|
78
|
+
* evidence its detectors have filed (its open escalations). Deterministic: the
|
|
79
|
+
* result depends only on WHICH detectors have fired, never on the order they
|
|
80
|
+
* crossed. Returns null when the focus has no open wedge-cause escalation.
|
|
81
|
+
* Best-effort: on a read failure it returns null (the caller degrades to its own
|
|
82
|
+
* local cause) rather than throwing.
|
|
83
|
+
*/
|
|
84
|
+
export async function getFocusWedgeCause(focusId, deps) {
|
|
85
|
+
let kinds;
|
|
86
|
+
try {
|
|
87
|
+
kinds = await deps.listOpenFocusEscalationKinds(focusId);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
return arbitrateWedgeCause(kinds);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=wedge-cause-arbiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wedge-cause-arbiter.js","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/wedge-cause-arbiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,2EAA2E;IAC3E,qDAAqD;IACrD,oBAAoB;IACpB,qEAAqE;IACrE,yBAAyB;IACzB,sEAAsE;IACtE,4BAA4B;IAC5B,2BAA2B;IAC3B,0BAA0B;IAC1B,+CAA+C;IAC/C,uBAAuB;IACvB,+DAA+D;IAC/D,mBAAmB;IACnB,2DAA2D;IAC3D,cAAc;IACd,0EAA0E;IAC1E,6EAA6E;IAC7E,oEAAoE;IACpE,yBAAyB;IACzB,cAAc;CACf,CAAC;AAEF,MAAM,eAAe,GAAgC,IAAI,GAAG,CAC1D,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACnD,CAAC;AAEF,2DAA2D;AAC3D,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAA8B;IAChE,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS,CAAC,oBAAoB;QACtD,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;YACpB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,IAA0B;IAE1B,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @module focus-stage-lifecycle/wedge-watchdog
|
|
11
11
|
*/
|
|
12
12
|
import { getFocusDeliveries as defaultGetFocusDeliveries } from '../queries/focuses.js';
|
|
13
|
-
import { createEscalation as defaultCreateEscalation, hasOpenWedgedFocusEscalation as defaultHasOpenWedgedFocusEscalation } from '../queries/
|
|
13
|
+
import { createEscalation as defaultCreateEscalation, hasOpenWedgedFocusEscalation as defaultHasOpenWedgedFocusEscalation, listOpenFocusEscalationKinds as defaultListOpenFocusEscalationKinds } from '../queries/escalations.js';
|
|
14
14
|
/** A delivery as seen by the actionability classifier (rank-ascending walk). */
|
|
15
15
|
export interface WedgeBlockingDelivery {
|
|
16
16
|
id: string;
|
|
@@ -23,6 +23,12 @@ export interface WedgeBlockingDelivery {
|
|
|
23
23
|
* daemon restart cannot reset the wedge clock (review finding, delivery 66c7d4d8).
|
|
24
24
|
*/
|
|
25
25
|
updatedAt: string | null;
|
|
26
|
+
/**
|
|
27
|
+
* True iff this held delivery carries a HUMAN/EXTERNAL provenance hold
|
|
28
|
+
* (gate_state.operatorHold / externalHold), which exempts it from the wedge
|
|
29
|
+
* escalation. A machine pause (guard block, no hold) is false -> a wedge.
|
|
30
|
+
*/
|
|
31
|
+
humanHold: boolean;
|
|
26
32
|
}
|
|
27
33
|
/** Pure classification of a focus's deliveries against the ready-focus walk. */
|
|
28
34
|
export interface FocusActionability {
|
|
@@ -54,6 +60,15 @@ export declare function classifyFocusActionability(deliveries: ReadonlyArray<{
|
|
|
54
60
|
executionStatus: string | null;
|
|
55
61
|
priorityRank: number;
|
|
56
62
|
updatedAt?: string | null;
|
|
63
|
+
/**
|
|
64
|
+
* The delivery's gate_state. Its operatorHold / externalHold fields are the
|
|
65
|
+
* HUMAN/EXTERNAL provenance markers (an operator-blocked escalation, or an
|
|
66
|
+
* irreducibly-external dependency). A pause with neither is machine-produced
|
|
67
|
+
* (a guard block writes `blocking`, not a hold) -- and a machine pause that
|
|
68
|
+
* stays stuck IS a wedge, per TEL-2. Typed `unknown` (the query surfaces the
|
|
69
|
+
* gate_state JSONB untyped); narrowed in hasHumanProvenanceHold.
|
|
70
|
+
*/
|
|
71
|
+
gateState?: unknown;
|
|
57
72
|
}>): FocusActionability;
|
|
58
73
|
/**
|
|
59
74
|
* Evict watchdog state for any focus NOT in `liveFocusIds`. A focus that goes
|
|
@@ -73,6 +88,8 @@ export declare function __resetWedgeWatchdogState(): void;
|
|
|
73
88
|
export interface WedgeWatchdogDeps {
|
|
74
89
|
getFocusDeliveries: typeof defaultGetFocusDeliveries;
|
|
75
90
|
hasOpenWedgedFocusEscalation: typeof defaultHasOpenWedgedFocusEscalation;
|
|
91
|
+
/** Evidence for the wedge-cause arbiter (TEL-3): every open escalation kind naming the focus. */
|
|
92
|
+
listOpenFocusEscalationKinds: typeof defaultListOpenFocusEscalationKinds;
|
|
76
93
|
createEscalation: typeof defaultCreateEscalation;
|
|
77
94
|
/** Kickoff-window discriminator: a running scoping team means "not a wedge". */
|
|
78
95
|
hasActiveTeam: (focusId: string) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wedge-watchdog.d.ts","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/wedge-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,
|
|
1
|
+
{"version":3,"file":"wedge-watchdog.d.ts","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/wedge-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,4BAA4B,IAAI,mCAAmC,EAAE,4BAA4B,IAAI,mCAAmC,EAAgC,MAAM,2BAA2B,CAAC;AAkFhQ,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,iHAAiH;IACjH,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sGAAsG;IACtG,gBAAgB,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC/C,yFAAyF;IACzF,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,aAAa,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,GACD,kBAAkB,CAyBpB;AAsED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAE/E;AAED,yDAAyD;AACzD,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAeD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,OAAO,yBAAyB,CAAC;IACrD,4BAA4B,EAAE,OAAO,mCAAmC,CAAC;IACzE,iGAAiG;IACjG,4BAA4B,EAAE,OAAO,mCAAmC,CAAC;IACzE,gBAAgB,EAAE,OAAO,uBAAuB,CAAC;IACjD,gFAAgF;IAChF,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAcD,uEAAuE;AACvE,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,EACD,IAAI,GAAE,iBAA8C,GACnD,OAAO,CAAC,YAAY,CAAC,CA+LvB"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* @module focus-stage-lifecycle/wedge-watchdog
|
|
11
11
|
*/
|
|
12
12
|
import { getFocusDeliveries as defaultGetFocusDeliveries } from '../queries/focuses.js';
|
|
13
|
-
import { createEscalation as defaultCreateEscalation, hasOpenWedgedFocusEscalation as defaultHasOpenWedgedFocusEscalation,
|
|
13
|
+
import { createEscalation as defaultCreateEscalation, hasOpenWedgedFocusEscalation as defaultHasOpenWedgedFocusEscalation, listOpenFocusEscalationKinds as defaultListOpenFocusEscalationKinds, WEDGED_FOCUS_ESCALATION_KIND } from '../queries/escalations.js';
|
|
14
|
+
import { arbitrateWedgeCause } from './wedge-cause-arbiter.js';
|
|
14
15
|
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS, DELIVERY_STATUS, loadEnvConfig, } from '@telora/daemon-core';
|
|
15
16
|
import { hasActiveTeam as defaultHasActiveTeam } from '../focus/focus-team-state.js';
|
|
16
17
|
import { createLogger } from '../shell/log.js';
|
|
@@ -54,14 +55,33 @@ const WEDGE_ACTIONABLE_STATUSES = new Set([
|
|
|
54
55
|
]);
|
|
55
56
|
/**
|
|
56
57
|
* Held statuses that constitute a WEDGE worth escalating: work that should be
|
|
57
|
-
* advancing but is stuck.
|
|
58
|
-
*
|
|
59
|
-
*
|
|
58
|
+
* advancing but is stuck. INCLUDES 'paused' (TEL-2): a pause is NOT automatically
|
|
59
|
+
* a human hold. Every pause the daemon writes today is machine-produced -- a
|
|
60
|
+
* guard block (delivery-reconciler) writes `gate_state.blocking` and sets
|
|
61
|
+
* `paused` -- and a machine pause that stays stuck withholds winding_down
|
|
62
|
+
* indefinitely, exactly the wedge this watchdog exists to surface. Only a pause
|
|
63
|
+
* with HUMAN/EXTERNAL provenance (gate_state.operatorHold / externalHold) is
|
|
64
|
+
* exempt, decided per-delivery via `humanHold` below -- not by blanket-excluding
|
|
65
|
+
* the status.
|
|
60
66
|
*/
|
|
61
67
|
const WEDGE_HELD_STATUSES = new Set([
|
|
62
68
|
DELIVERY_STATUS.PLANNING,
|
|
63
69
|
DELIVERY_STATUS.DRAFT,
|
|
70
|
+
DELIVERY_STATUS.PAUSED,
|
|
64
71
|
]);
|
|
72
|
+
/**
|
|
73
|
+
* A held delivery has HUMAN/EXTERNAL provenance iff its gate_state carries an
|
|
74
|
+
* operatorHold (an open operator-blocked escalation) or an externalHold (an
|
|
75
|
+
* irreducibly-external dependency). Either names a specific act/reality outside
|
|
76
|
+
* the daemon's reach, so it is exempt from the wedge escalation. A machine pause
|
|
77
|
+
* (guard block) carries neither and is NOT exempt.
|
|
78
|
+
*/
|
|
79
|
+
function hasHumanProvenanceHold(gateState) {
|
|
80
|
+
if (gateState == null || typeof gateState !== 'object')
|
|
81
|
+
return false;
|
|
82
|
+
const gs = gateState;
|
|
83
|
+
return gs.operatorHold != null || gs.externalHold != null;
|
|
84
|
+
}
|
|
65
85
|
/**
|
|
66
86
|
* Replicate the server-side ready-focus rank-walk to decide whether a focus
|
|
67
87
|
* surfaces actionable work, and if not, which delivery blocks it.
|
|
@@ -95,6 +115,7 @@ export function classifyFocusActionability(deliveries) {
|
|
|
95
115
|
status,
|
|
96
116
|
priorityRank: d.priorityRank,
|
|
97
117
|
updatedAt: d.updatedAt ?? null,
|
|
118
|
+
humanHold: hasHumanProvenanceHold(d.gateState),
|
|
98
119
|
},
|
|
99
120
|
allTerminal: false,
|
|
100
121
|
};
|
|
@@ -195,6 +216,7 @@ function defaultWedgeWatchdogDeps() {
|
|
|
195
216
|
return {
|
|
196
217
|
getFocusDeliveries: defaultGetFocusDeliveries,
|
|
197
218
|
hasOpenWedgedFocusEscalation: defaultHasOpenWedgedFocusEscalation,
|
|
219
|
+
listOpenFocusEscalationKinds: defaultListOpenFocusEscalationKinds,
|
|
198
220
|
createEscalation: defaultCreateEscalation,
|
|
199
221
|
hasActiveTeam: defaultHasActiveTeam,
|
|
200
222
|
now: () => Date.now(),
|
|
@@ -256,7 +278,11 @@ export async function evaluateFocusWedge(focus, deps = defaultWedgeWatchdogDeps(
|
|
|
256
278
|
: { kind: 'skipped', reason: 'all_terminal_or_empty' };
|
|
257
279
|
}
|
|
258
280
|
const block = actionability.blockingDelivery;
|
|
259
|
-
|
|
281
|
+
// A held status is a wedge UNLESS the delivery carries a human/external
|
|
282
|
+
// provenance hold (operatorHold / externalHold). planning/draft never carry a
|
|
283
|
+
// hold, so they stay wedge-held; a machine pause (guard block) has no hold and
|
|
284
|
+
// is now a wedge; only a named human/external hold is exempt (TEL-2).
|
|
285
|
+
const isWedgeHeld = WEDGE_HELD_STATUSES.has(block.status) && !block.humanHold;
|
|
260
286
|
const teamActive = deps.hasActiveTeam(focus.focusId);
|
|
261
287
|
// ── D3: daemon-side zero-actionable log (dampened to state change) ──
|
|
262
288
|
// Characterization distinguishes THREE states (review finding, delivery
|
|
@@ -265,7 +291,7 @@ export async function evaluateFocusWedge(focus, deps = defaultWedgeWatchdogDeps(
|
|
|
265
291
|
// running). The old two-way split mislabeled a legitimate kickoff focus as
|
|
266
292
|
// "wedged"; the active-team signal separates them.
|
|
267
293
|
const characterization = !isWedgeHeld
|
|
268
|
-
? 'idle (delivery
|
|
294
|
+
? 'idle (delivery held by a named human/external hold)'
|
|
269
295
|
: teamActive
|
|
270
296
|
? 'scoping in progress (team active, deliveries being shaped -- not a wedge)'
|
|
271
297
|
: 'wedged (work held, no team running)';
|
|
@@ -325,6 +351,22 @@ export async function evaluateFocusWedge(focus, deps = defaultWedgeWatchdogDeps(
|
|
|
325
351
|
return { kind: 'zero_actionable', escalated: false, wedged: true, blockingStatus: block.status };
|
|
326
352
|
}
|
|
327
353
|
const wedgedMinutes = Math.round((now - firstSeen) / 60_000);
|
|
354
|
+
// TEL-3 arbiter: the cause this wedge REPORTS is decided deterministically from
|
|
355
|
+
// ALL the detectors' evidence (the focus's open wedge escalations) plus this
|
|
356
|
+
// watchdog's own wedged_focus cause -- by stated precedence, not by which bound
|
|
357
|
+
// crossed first. A higher-precedence ROOT already open (e.g. verify_gate_
|
|
358
|
+
// unclearable, stuck_focus_branch, a non-converging review) outranks wedged_focus,
|
|
359
|
+
// so the operator is pointed at the root, not the loudest alarm. Best-effort: a
|
|
360
|
+
// read failure falls back to this watchdog's own cause.
|
|
361
|
+
let openKinds = [];
|
|
362
|
+
try {
|
|
363
|
+
openKinds = await deps.listOpenFocusEscalationKinds(focus.focusId);
|
|
364
|
+
}
|
|
365
|
+
catch (err) {
|
|
366
|
+
log.warn(`[focus-stage-lifecycle] Wedge eval: open-escalation read failed for ` +
|
|
367
|
+
`"${focus.focusName}" (arbitrated cause falls back to wedged_focus): ${err.message}`);
|
|
368
|
+
}
|
|
369
|
+
const arbitratedRootCause = arbitrateWedgeCause([...openKinds, WEDGED_FOCUS_ESCALATION_KIND]) ?? WEDGED_FOCUS_ESCALATION_KIND;
|
|
328
370
|
try {
|
|
329
371
|
await deps.createEscalation({
|
|
330
372
|
organizationId: focus.organizationId,
|
|
@@ -348,7 +390,11 @@ export async function evaluateFocusWedge(focus, deps = defaultWedgeWatchdogDeps(
|
|
|
348
390
|
`spawns. It has been wedged for ~${wedgedMinutes} minute(s). The ` +
|
|
349
391
|
`writable planning->queued release should normally clear a 'planning' ` +
|
|
350
392
|
`block; investigate why the delivery is not being released ` +
|
|
351
|
-
`(a 'draft' block is not swept by that release and needs attention)
|
|
393
|
+
`(a 'draft' block is not swept by that release and needs attention).` +
|
|
394
|
+
(arbitratedRootCause !== WEDGED_FOCUS_ESCALATION_KIND
|
|
395
|
+
? `\n\n**Arbitrated root cause:** ${arbitratedRootCause} -- a higher-precedence ` +
|
|
396
|
+
`blocker is already open for this focus; fix that first (this wedge is downstream of it).`
|
|
397
|
+
: ''),
|
|
352
398
|
// Local string const (mirrors ESCALATION_KINDS.WEDGED_FOCUS in
|
|
353
399
|
// daemon-core, the SSOT) so the write works against the currently-
|
|
354
400
|
// installed daemon-core before it is republished with the new enum value.
|
|
@@ -359,6 +405,10 @@ export async function evaluateFocusWedge(focus, deps = defaultWedgeWatchdogDeps(
|
|
|
359
405
|
blockingDeliveryId: block.id,
|
|
360
406
|
blockingDeliveryStatus: block.status,
|
|
361
407
|
wedgedMinutes,
|
|
408
|
+
// The deterministic, precedence-arbitrated root cause across all of the
|
|
409
|
+
// focus's open wedge detectors (TEL-3). Equals wedged_focus when this is
|
|
410
|
+
// the highest-precedence cause open.
|
|
411
|
+
arbitratedRootCause,
|
|
362
412
|
},
|
|
363
413
|
});
|
|
364
414
|
log.warn(`[focus-stage-lifecycle] wedged_focus escalation filed for ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wedge-watchdog.js","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/wedge-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,
|
|
1
|
+
{"version":3,"file":"wedge-watchdog.js","sourceRoot":"","sources":["../../src/focus-stage-lifecycle/wedge-watchdog.ts"],"names":[],"mappings":"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"}
|
package/dist/git/index.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export * from './types.js';
|
|
|
22
22
|
export * from './merge-lock.js';
|
|
23
23
|
export * from './branch.js';
|
|
24
24
|
export * from './merge.js';
|
|
25
|
+
export * from './merge-strategies.js';
|
|
26
|
+
export * from './merge-to-main.js';
|
|
25
27
|
export * from './integration.js';
|
|
26
28
|
export * from './state-detector.js';
|
|
27
29
|
export * from './activity.js';
|