@telora/daemon 0.21.83 → 0.21.134
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 +10 -3
- package/dist/audit/audit-hooks.d.ts +106 -0
- package/dist/audit/audit-hooks.d.ts.map +1 -1
- package/dist/audit/audit-hooks.js +149 -17
- package/dist/audit/audit-hooks.js.map +1 -1
- package/dist/ci/ci-sensor-loop.d.ts +6 -0
- package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
- package/dist/ci/ci-sensor-loop.js +50 -3
- package/dist/ci/ci-sensor-loop.js.map +1 -1
- package/dist/ci/ci-status.d.ts +63 -11
- package/dist/ci/ci-status.d.ts.map +1 -1
- package/dist/ci/ci-status.js +94 -27
- package/dist/ci/ci-status.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/event-escalations.d.ts +15 -0
- package/dist/completion/event-escalations.d.ts.map +1 -1
- package/dist/completion/event-escalations.js +42 -4
- 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 +10 -5
- package/dist/completion/event-phases.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 +147 -0
- package/dist/completion/machine-remediable-demotion.js.map +1 -0
- package/dist/completion/review-exit-escalations.d.ts +36 -1
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +81 -0
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts +4 -2
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +49 -54
- 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 +41 -0
- 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 +28 -30
- 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 +79 -2
- package/dist/completion/team-lifecycle.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 +26 -160
- 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 +108 -66
- package/dist/delivery/delivery-reconciler-apply.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler-apply.js +87 -61
- package/dist/delivery/delivery-reconciler-apply.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 +38 -0
- package/dist/delivery/external-hold.d.ts.map +1 -1
- package/dist/delivery/external-hold.js +69 -6
- package/dist/delivery/external-hold.js.map +1 -1
- package/dist/delivery/operator-hold.d.ts +1 -2
- package/dist/delivery/operator-hold.d.ts.map +1 -1
- package/dist/delivery/operator-hold.js +1 -2
- package/dist/delivery/operator-hold.js.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 +229 -0
- package/dist/delivery/paused-revival.js.map +1 -0
- package/dist/delivery/wait-reachability.d.ts +149 -0
- package/dist/delivery/wait-reachability.d.ts.map +1 -0
- package/dist/delivery/wait-reachability.js +193 -0
- package/dist/delivery/wait-reachability.js.map +1 -0
- 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 +19 -0
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +18 -0
- 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 +23 -21
- 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/focus/focus-engine.d.ts.map +1 -1
- package/dist/focus/focus-engine.js +26 -0
- 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-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.map +1 -1
- package/dist/focus/focus-respawn-guard.js +11 -2
- 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 +13 -1
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +112 -76
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +141 -75
- 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-stage-lifecycle/index.d.ts +18 -25
- package/dist/focus-stage-lifecycle/index.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/index.js +26 -38
- 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/merge.d.ts.map +1 -1
- package/dist/git/merge.js +12 -3
- package/dist/git/merge.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/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/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/queries/deliveries.d.ts +33 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +7 -0
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts +46 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +60 -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/issues.d.ts +65 -1
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +135 -2
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/schemas.d.ts +53 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +38 -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/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/shell/heartbeat.d.ts +7 -0
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +1 -1
- package/dist/shell/heartbeat.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 +18 -1
- 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/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/respawn-cycle-escalation.d.ts +41 -0
- package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -0
- package/dist/spawn/respawn-cycle-escalation.js +83 -0
- package/dist/spawn/respawn-cycle-escalation.js.map +1 -0
- package/dist/spawn/spawn-cooldown.d.ts +119 -2
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +120 -10
- 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 +33 -1
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/testing/fixtures/index.d.ts +64 -0
- package/dist/testing/fixtures/index.d.ts.map +1 -0
- package/dist/testing/fixtures/index.js +220 -0
- package/dist/testing/fixtures/index.js.map +1 -0
- package/dist/update/build-info.d.ts +1 -0
- package/dist/update/build-info.d.ts.map +1 -1
- package/dist/update/build-info.js +1 -1
- package/dist/update/build-info.js.map +1 -1
- package/dist/verify/stall-detector-config.d.ts +8 -0
- package/dist/verify/stall-detector-config.d.ts.map +1 -1
- package/dist/verify/stall-detector-config.js +40 -0
- package/dist/verify/stall-detector-config.js.map +1 -1
- package/dist/verify/stall-detectors.d.ts +57 -14
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +72 -55
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +3 -4
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +3 -12
- package/dist/verify/verification-feedback.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/package.json +3 -3
- 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
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* value `LOOP_REGISTRY` from here; the reverse edge is interface-only.
|
|
17
17
|
*/
|
|
18
18
|
import { safeInterval, loadEnvConfig } from '@telora/daemon-core';
|
|
19
|
-
import { reapStuckShuttingDownTeams } from '../completion/team-lifecycle.js';
|
|
19
|
+
import { reapStuckShuttingDownTeams, reapDeadProcessTeams } from '../completion/team-lifecycle.js';
|
|
20
20
|
import { runVerificationTick } from '../verify/verification-engine.js';
|
|
21
21
|
import { runPrdControllerTickAll } from '../prd/index.js';
|
|
22
22
|
import { runMergeBackTick } from '../merge/merge-back-loop.js';
|
|
@@ -24,6 +24,7 @@ import { runDriftEvalTick, runPendingDriftEvalRequestsTick } from '../drift/drif
|
|
|
24
24
|
import { runSensorSweepTick } from '../drift/sensor-sweep.js';
|
|
25
25
|
import { runCiSensorTick } from '../ci/ci-sensor-loop.js';
|
|
26
26
|
import { sweepAgentResolvablePromotions } from '../queries/agent-resolvable-promotion.js';
|
|
27
|
+
import { sweepMachineRemediableDemotions } from '../completion/machine-remediable-demotion.js';
|
|
27
28
|
import { runStalenessSensorTick } from '../drift/staleness-sensor.js';
|
|
28
29
|
import { reconcileDaemonProducts, buildReconcileDeps } from '../shell/config-reconcile.js';
|
|
29
30
|
import { buildDefaultSecurityScanDeps, runSecurityScanTick, } from '../security/security-scan-engine.js';
|
|
@@ -52,6 +53,34 @@ export const LOOP_REGISTRY = [
|
|
|
52
53
|
}, 60_000, 'stuck-shutdown-watchdog', { skipIfRunning: true }));
|
|
53
54
|
},
|
|
54
55
|
},
|
|
56
|
+
// 1b. Dead-process reaper (60s, TEL-2). The memory->reality reconcile
|
|
57
|
+
// checkSessionHealth lacks: an in-memory team whose lead process is gone
|
|
58
|
+
// but whose `'close'` never fired, or a registration stuck in
|
|
59
|
+
// `initializing` that never reached a running process, pins the spawn gate
|
|
60
|
+
// shut for its focus forever. This reclaims both so a fresh team can spawn,
|
|
61
|
+
// with no operator act. NO announce (mirrors the stuck-shutdown watchdog).
|
|
62
|
+
{
|
|
63
|
+
guard: 'TELORA_FOCUS_LOOP',
|
|
64
|
+
register(engine, _config) {
|
|
65
|
+
// Grace for a team that reached spawn but has not yet emitted its
|
|
66
|
+
// session_started event (phase still `initializing`, no pid observed):
|
|
67
|
+
// long enough that a slow-but-healthy startup is never reaped, short
|
|
68
|
+
// enough that a never-started registration does not wedge the focus for
|
|
69
|
+
// long. Daemon-local (kept out of daemon-core to avoid a cross-package
|
|
70
|
+
// publish); the dead-pid branch is age-independent and fires immediately.
|
|
71
|
+
const initStallMs = 5 * 60_000;
|
|
72
|
+
engine.intervals.push(safeInterval(async () => {
|
|
73
|
+
const result = reapDeadProcessTeams({
|
|
74
|
+
governor: engine.governor,
|
|
75
|
+
initStallMs,
|
|
76
|
+
});
|
|
77
|
+
if (result.reaped > 0) {
|
|
78
|
+
log.warn(`[dead-process-reaper] reclaimed ${result.reaped} team(s) whose process ` +
|
|
79
|
+
`was gone or never started: ${result.reapedFocusIds.join(', ')}`);
|
|
80
|
+
}
|
|
81
|
+
}, 60_000, 'dead-process-reaper', { skipIfRunning: true }));
|
|
82
|
+
},
|
|
83
|
+
},
|
|
55
84
|
// 2. Differential Focus Spec: cybernetic loop tick (60s).
|
|
56
85
|
{
|
|
57
86
|
guard: 'TELORA_FOCUS_LOOP',
|
|
@@ -259,6 +288,19 @@ export const LOOP_REGISTRY = [
|
|
|
259
288
|
catch (err) {
|
|
260
289
|
log.warn('[agent-resolvable-sweep] tick failed:', err.message);
|
|
261
290
|
}
|
|
291
|
+
// Inverse direction (TEL-3): return machine-remediable needs_intent
|
|
292
|
+
// team_failures to the machine lane. Same tick -- the two are the two
|
|
293
|
+
// directions of one evidence-driven ownership reconcile. Independent
|
|
294
|
+
// try/catch so a failure in one never suppresses the other.
|
|
295
|
+
try {
|
|
296
|
+
const dem = await sweepMachineRemediableDemotions();
|
|
297
|
+
if (dem.demoted > 0) {
|
|
298
|
+
log.info(`[machine-remediable-demotion] tick: scanned=${dem.scanned} demoted=${dem.demoted}`);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
catch (err) {
|
|
302
|
+
log.warn('[machine-remediable-demotion] tick failed:', err.message);
|
|
303
|
+
}
|
|
262
304
|
}, 1_800_000, 'agent-resolvable-promote-sweep', { skipIfRunning: true }));
|
|
263
305
|
},
|
|
264
306
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-loop-registry.js","sourceRoot":"","sources":["../../src/focus/focus-loop-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"focus-loop-registry.js","sourceRoot":"","sources":["../../src/focus/focus-loop-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-respawn-guard.d.ts","sourceRoot":"","sources":["../../src/focus/focus-respawn-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,4BAA4B,EAC5B,yCAAyC,EAC1C,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-respawn-guard.d.ts","sourceRoot":"","sources":["../../src/focus/focus-respawn-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,4BAA4B,EAC5B,yCAAyC,EAC1C,MAAM,sBAAsB,CAAC;AAmB9B,yDAAyD;AACzD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;IACnE,yCAAyC,CAAC,EAAE,OAAO,yCAAyC,CAAC;CAC9F;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,OAAO,CAAC,CA8ClB"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { hasOpenTeamFailureEscalation, hasOpenReviewCoverageIncompleteEscalation, } from '../queries/issues.js';
|
|
8
8
|
import { resetDeliveryAdvancementGuard } from '../completion/delivery-advancement-guard.js';
|
|
9
9
|
import { resetCoverageDriftState } from '../completion/coverage-drift-state.js';
|
|
10
|
+
import { advancementReadFailsOpen } from '../workflow/gate-failure-policy.js';
|
|
10
11
|
import { createLogger } from '../shell/log.js';
|
|
11
12
|
const log = createLogger({ module: 'focus-executor' });
|
|
12
13
|
/**
|
|
@@ -27,7 +28,11 @@ export async function applyRespawnGuard(focusId, focusName, deps = {}) {
|
|
|
27
28
|
const _hasOpenReviewCoverageIncompleteEscalation = deps.hasOpenReviewCoverageIncompleteEscalation ?? hasOpenReviewCoverageIncompleteEscalation;
|
|
28
29
|
try {
|
|
29
30
|
const [teamFailure, coverageIncomplete] = await Promise.all([
|
|
30
|
-
|
|
31
|
+
// TEL-2: a MACHINE-owned (agent_resolvable) team_failure is a record the
|
|
32
|
+
// incoming team resolves, NOT a spawn gate -- exclude it here so an armed
|
|
33
|
+
// focus whose stall is machine-remediable resumes without a human act.
|
|
34
|
+
// Human-owned dispositions (needs_intent / needs_operator) still block.
|
|
35
|
+
_hasOpenTeamFailureEscalation(focusId, {}, { excludeAgentResolvable: true }),
|
|
31
36
|
_hasOpenReviewCoverageIncompleteEscalation(focusId),
|
|
32
37
|
]);
|
|
33
38
|
if (teamFailure || coverageIncomplete) {
|
|
@@ -55,7 +60,11 @@ export async function applyRespawnGuard(focusId, focusName, deps = {}) {
|
|
|
55
60
|
skipLoggedFocuses.delete(focusId);
|
|
56
61
|
}
|
|
57
62
|
catch (err) {
|
|
58
|
-
|
|
63
|
+
// ADVANCEMENT/LIVENESS read (the respawn precondition) -> FAIL OPEN per the
|
|
64
|
+
// stated per-class policy: proceed with the spawn (return false = do not
|
|
65
|
+
// skip). A transient escalation-lookup error must not silently block a
|
|
66
|
+
// healthy focus from spawning.
|
|
67
|
+
return advancementReadFailsOpen(`focus-respawn-guard "${focusName}"`, err, false);
|
|
59
68
|
}
|
|
60
69
|
return false;
|
|
61
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-respawn-guard.js","sourceRoot":"","sources":["../../src/focus/focus-respawn-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,4BAA4B,EAC5B,yCAAyC,GAC1C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAGvD;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE5C,yDAAyD;AACzD,MAAM,UAAU,sBAAsB;IACpC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC;AA+BD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,SAAiB,EACjB,OAAyB,EAAE;IAE3B,MAAM,6BAA6B,GAAG,IAAI,CAAC,4BAA4B,IAAI,4BAA4B,CAAC;IACxG,MAAM,0CAA0C,GAC9C,IAAI,CAAC,yCAAyC,IAAI,yCAAyC,CAAC;IAC9F,IAAI,CAAC;QACH,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1D,6BAA6B,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-respawn-guard.js","sourceRoot":"","sources":["../../src/focus/focus-respawn-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,4BAA4B,EAC5B,yCAAyC,GAC1C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAGvD;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE5C,yDAAyD;AACzD,MAAM,UAAU,sBAAsB;IACpC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC;AA+BD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,SAAiB,EACjB,OAAyB,EAAE;IAE3B,MAAM,6BAA6B,GAAG,IAAI,CAAC,4BAA4B,IAAI,4BAA4B,CAAC;IACxG,MAAM,0CAA0C,GAC9C,IAAI,CAAC,yCAAyC,IAAI,yCAAyC,CAAC;IAC9F,IAAI,CAAC;QACH,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1D,yEAAyE;YACzE,0EAA0E;YAC1E,uEAAuE;YACvE,wEAAwE;YACxE,6BAA6B,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC;YAC5E,0CAA0C,CAAC,OAAO,CAAC;SACpD,CAAC,CAAC;QACH,IAAI,WAAW,IAAI,kBAAkB,EAAE,CAAC;YACtC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,4BAA4B,CAAC;gBACzE,GAAG,CAAC,IAAI,CACN,8CAA8C,SAAS,WAAW,IAAI,aAAa,CACpF,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,qEAAqE;QACrE,6EAA6E;QAC7E,6EAA6E;QAC7E,8EAA8E;QAC9E,2EAA2E;QAC3E,6EAA6E;QAC7E,8EAA8E;QAC9E,8EAA8E;QAC9E,kCAAkC;QAClC,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACvC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,4DAA4D;QAC5D,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4EAA4E;QAC5E,yEAAyE;QACzE,uEAAuE;QACvE,+BAA+B;QAC/B,OAAO,wBAAwB,CAAC,wBAAwB,SAAS,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -50,6 +50,17 @@ export declare function clearTeamActivity(focusId: string): void;
|
|
|
50
50
|
* Get all active focus teams.
|
|
51
51
|
*/
|
|
52
52
|
export declare function getActiveTeams(): Map<string, FocusTeamState>;
|
|
53
|
+
/**
|
|
54
|
+
* Advance a team from `initializing` to `executing` -- it has REACHED a running
|
|
55
|
+
* process (its first `session_started` event fired, TEL-2). Guarded on the
|
|
56
|
+
* `initializing` phase so a late/duplicate signal can never resurrect a team
|
|
57
|
+
* already tearing down (`shutting_down`/`terminated`). Nothing else in the
|
|
58
|
+
* codebase wrote `executing`, so before this call isTeamRecoverable (which
|
|
59
|
+
* requires it) was permanently false and every recovery path gated on team
|
|
60
|
+
* presence -- the stall detector, the mid-flight merge stdin injection -- was
|
|
61
|
+
* silently dead. Returns true iff this call performed the transition.
|
|
62
|
+
*/
|
|
63
|
+
export declare function markTeamExecuting(team: FocusTeamState): boolean;
|
|
53
64
|
/**
|
|
54
65
|
* Record that a team entered the `shutting_down` phase at the given time.
|
|
55
66
|
* Idempotent on the FIRST transition: a repeat call does NOT overwrite the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-team-state.d.ts","sourceRoot":"","sources":["../../src/focus/focus-team-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAW3B;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAGlF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvD;AAkBD;;GAEG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAE5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAKhF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAChC,IAAI,CASN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAChC,OAAO,CAMT;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAMhF;AAUD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,cAAc,GAAG,IAAI,GAAG,oBAAoB,CAKlG"}
|
|
1
|
+
{"version":3,"file":"focus-team-state.d.ts","sourceRoot":"","sources":["../../src/focus/focus-team-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAW3B;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAGlF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvD;AAkBD;;GAEG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAE5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAM/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAKhF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAChC,IAAI,CASN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAChC,OAAO,CAMT;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAMhF;AAUD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,cAAc,GAAG,IAAI,GAAG,oBAAoB,CAKlG"}
|
|
@@ -80,6 +80,23 @@ const slotTokens = new Map();
|
|
|
80
80
|
export function getActiveTeams() {
|
|
81
81
|
return activeTeams;
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Advance a team from `initializing` to `executing` -- it has REACHED a running
|
|
85
|
+
* process (its first `session_started` event fired, TEL-2). Guarded on the
|
|
86
|
+
* `initializing` phase so a late/duplicate signal can never resurrect a team
|
|
87
|
+
* already tearing down (`shutting_down`/`terminated`). Nothing else in the
|
|
88
|
+
* codebase wrote `executing`, so before this call isTeamRecoverable (which
|
|
89
|
+
* requires it) was permanently false and every recovery path gated on team
|
|
90
|
+
* presence -- the stall detector, the mid-flight merge stdin injection -- was
|
|
91
|
+
* silently dead. Returns true iff this call performed the transition.
|
|
92
|
+
*/
|
|
93
|
+
export function markTeamExecuting(team) {
|
|
94
|
+
if (team.phase === 'initializing') {
|
|
95
|
+
team.phase = 'executing';
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
83
100
|
/**
|
|
84
101
|
* Record that a team entered the `shutting_down` phase at the given time.
|
|
85
102
|
* Idempotent on the FIRST transition: a repeat call does NOT overwrite the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-team-state.js","sourceRoot":"","sources":["../../src/focus/focus-team-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"focus-team-state.js","sourceRoot":"","sources":["../../src/focus/focus-team-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* and transitions verify deliveries back to verify_failed when new
|
|
6
6
|
* open issues are found (e.g., from review agents).
|
|
7
7
|
*/
|
|
8
|
-
import type { DaemonConfig } from '../types/index.js';
|
|
8
|
+
import type { DaemonConfig, Workflow } from '../types/index.js';
|
|
9
9
|
import { getActiveFocuses, updateDeliveryStatus } from '../queries/deliveries.js';
|
|
10
|
+
import type { DeliveryGateState } from '../queries/deliveries.js';
|
|
10
11
|
import { getFocusDeliveries } from '../queries/focuses.js';
|
|
11
12
|
import { fetchEffectiveWorkflow } from '../queries/workflows.js';
|
|
12
13
|
import { getActiveTeams } from './focus-executor.js';
|
|
@@ -37,12 +38,23 @@ export declare function __getSchemaViolationAttemptsForTests(): ReadonlyMap<stri
|
|
|
37
38
|
* Also checks teamless focuses (after daemon restart) where deliveries
|
|
38
39
|
* may be stuck in coding with all issues Done.
|
|
39
40
|
*/
|
|
41
|
+
/** Guard verdict measured at a teamless advance edge. */
|
|
42
|
+
export interface AdvanceGuardMeasurement {
|
|
43
|
+
blocked: boolean;
|
|
44
|
+
gateState: DeliveryGateState | null;
|
|
45
|
+
}
|
|
46
|
+
/** The measurement seam's function shape (injected for tests). */
|
|
47
|
+
export type MeasureGuardAtAdvanceFn = (config: DaemonConfig, delivery: {
|
|
48
|
+
id: string;
|
|
49
|
+
name: string;
|
|
50
|
+
}, workflow: Workflow, fromStatus: string) => Promise<AdvanceGuardMeasurement | null>;
|
|
40
51
|
/**
|
|
41
52
|
* Dependency seam for checkDeliveryAutoAdvance. The real implementation imports
|
|
42
53
|
* these eagerly; tests inject stubs to avoid the fragile bare-specifier
|
|
43
54
|
* `mock.module` path under tsx (same rationale as CheckDeliveryWorkStartDeps).
|
|
44
55
|
*/
|
|
45
56
|
export interface CheckDeliveryAutoAdvanceDeps {
|
|
57
|
+
measureGuardAtAdvance?: MeasureGuardAtAdvanceFn;
|
|
46
58
|
getActiveTeams?: typeof getActiveTeams;
|
|
47
59
|
getActiveFocuses?: typeof getActiveFocuses;
|
|
48
60
|
hasFocusWorktree?: typeof hasFocusWorktree;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener-auto-advance.d.ts","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"listener-auto-advance.d.ts","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,12 +12,15 @@ import { getActiveTeams } from './focus-executor.js';
|
|
|
12
12
|
import { isStatusAgentActionable } from '../workflow/stage-classifier.js';
|
|
13
13
|
import { OPEN_ISSUE_STATUSES, filterWorkIssues, filterContextGroups } from '../shell/constants.js';
|
|
14
14
|
import { autoCloseContextGroups, sweepDeliveryCloseIssues } from '../delivery/delivery-close-actions.js';
|
|
15
|
-
import { resolveReconciledWrite } from '../delivery/delivery-reconciler-apply.js';
|
|
15
|
+
import { resolveReconciledWrite, workStartReconcileInput, advanceReconcileInput } from '../delivery/delivery-reconciler-apply.js';
|
|
16
16
|
import { isAuditPhaseFocus } from '../audit/audit-shape.js';
|
|
17
|
-
import { ensureWorktreeCommittedBeforeAdvance } from '../delivery/delivery-lifecycle.js';
|
|
18
|
-
import {
|
|
17
|
+
import { ensureWorktreeCommittedBeforeAdvance, evaluateGuardsForDeliveryTransition } from '../delivery/delivery-lifecycle.js';
|
|
18
|
+
import { determineTransition } from '../workflow/workflow-engine.js';
|
|
19
|
+
import { createEscalation as defaultCreateEscalation, findOpenOperatorHoldForDelivery, getDeliveryIssues, updateIssueStatus, resolveOpenFocusEscalationsOfKind } from '../queries/issues.js';
|
|
19
20
|
import { resolveOperatorHold, writeOperatorHoldGateState, describeOperatorHold } from '../delivery/operator-hold.js';
|
|
20
|
-
import { resolveExternalHold,
|
|
21
|
+
import { resolveExternalHold, makeDeferredRequestClosureEvaluator, describeExternalHold } from '../delivery/external-hold.js';
|
|
22
|
+
import { surfaceStaleReferenceLessExternalHold } from '../delivery/external-hold-surface.js';
|
|
23
|
+
import { clearSpawnCooldown } from '../spawn/spawn-cooldown.js';
|
|
21
24
|
import { createLogger } from '../shell/log.js';
|
|
22
25
|
const log = createLogger({ module: 'listener' });
|
|
23
26
|
/**
|
|
@@ -33,6 +36,7 @@ const ESCALATION_REASON_ERROR_ENCOUNTERED = 'error_encountered';
|
|
|
33
36
|
// inlined for the same no-runtime-import reason as the reason constant above.
|
|
34
37
|
const ESCALATION_DISPOSITION_NEEDS_OPERATOR = 'needs_operator';
|
|
35
38
|
const DELIVERY_STATUS_QUEUED = 'queued';
|
|
39
|
+
const DELIVERY_STATUS_CODING = 'coding';
|
|
36
40
|
const DELIVERY_STATUS_VERIFY = 'verify';
|
|
37
41
|
const DELIVERY_STATUS_VERIFY_FAILED = 'verify_failed';
|
|
38
42
|
function isSchemaConstraintViolation(err) {
|
|
@@ -75,6 +79,46 @@ export function __resetSchemaViolationStateForTests() {
|
|
|
75
79
|
export function __getSchemaViolationAttemptsForTests() {
|
|
76
80
|
return violationAttempts;
|
|
77
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Measure the guard at a teamless delivery's advance edge (coding->verify), the
|
|
84
|
+
* SAME way the team path (advanceDeliveryStage) does, so a blocking guard is not
|
|
85
|
+
* silently skipped on the teamless path (TEL-2: identical delivery state yields
|
|
86
|
+
* the identical decision). Inputs are the canonical ones for a teamless advance:
|
|
87
|
+
* all work issues are Done (openIssueCount 0, so determineTransition selects the
|
|
88
|
+
* forward edge, not a retry) and exitCode 0 (the same value paused-revival uses
|
|
89
|
+
* to re-evaluate a block -- so the entry gate and the revival gate agree).
|
|
90
|
+
*
|
|
91
|
+
* evaluateGuardsForDeliveryTransition MEASURES and, on a block, writes the
|
|
92
|
+
* transition_blocks row (the human decision_paths that name the exit, and the
|
|
93
|
+
* record paused-revival reads back to revive the pause) -- but it does NOT write
|
|
94
|
+
* the delivery's execution_status (that stays the reconciler's single write).
|
|
95
|
+
* Returns null when the edge has no workflow transition (nothing to gate).
|
|
96
|
+
*/
|
|
97
|
+
async function defaultMeasureGuardAtAdvance(config, delivery, workflow, fromStatus) {
|
|
98
|
+
const currentStage = workflow.stages.find((s) => s.name === fromStatus);
|
|
99
|
+
if (!currentStage)
|
|
100
|
+
return null;
|
|
101
|
+
const transition = determineTransition({
|
|
102
|
+
workflow,
|
|
103
|
+
currentStageId: currentStage.id,
|
|
104
|
+
exitCode: 0,
|
|
105
|
+
openIssueCount: 0,
|
|
106
|
+
attemptCount: 0,
|
|
107
|
+
maxRetries: 5,
|
|
108
|
+
});
|
|
109
|
+
if (!transition.nextStage || !transition.workflowTransition)
|
|
110
|
+
return null;
|
|
111
|
+
const outcome = await evaluateGuardsForDeliveryTransition({
|
|
112
|
+
deliveryId: delivery.id,
|
|
113
|
+
organizationId: config.organizationId,
|
|
114
|
+
workflowTransition: transition.workflowTransition,
|
|
115
|
+
exitCode: 0,
|
|
116
|
+
policyFailureMode: config.policyFailureMode,
|
|
117
|
+
deliveryName: delivery.name,
|
|
118
|
+
sessionId: null,
|
|
119
|
+
});
|
|
120
|
+
return { blocked: outcome.blocked, gateState: outcome.gateState ?? null };
|
|
121
|
+
}
|
|
78
122
|
export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
79
123
|
const _getActiveTeams = deps.getActiveTeams ?? getActiveTeams;
|
|
80
124
|
const _getActiveFocuses = deps.getActiveFocuses ?? getActiveFocuses;
|
|
@@ -89,6 +133,7 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
|
89
133
|
const _fetchEffectiveWorkflow = deps.fetchEffectiveWorkflow ?? fetchEffectiveWorkflow;
|
|
90
134
|
const _updateDeliveryStatus = deps.updateDeliveryStatus ?? updateDeliveryStatus;
|
|
91
135
|
const _findOpenOperatorHoldForDelivery = deps.findOpenOperatorHoldForDelivery ?? findOpenOperatorHoldForDelivery;
|
|
136
|
+
const _measureGuardAtAdvance = deps.measureGuardAtAdvance ?? defaultMeasureGuardAtAdvance;
|
|
92
137
|
// Only auto-advance for teamless focuses (e.g., after daemon restart where
|
|
93
138
|
// deliveries are stuck in coding with all issues Done and no team will ever
|
|
94
139
|
// run advanceDeliveryStatuses). Active teams handle their own advancement
|
|
@@ -174,20 +219,14 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
|
174
219
|
const requeueStatus = (delivery.executionStatus ?? '');
|
|
175
220
|
const requeueWorkflow = await _fetchEffectiveWorkflow(delivery.id);
|
|
176
221
|
const requeueDecision = resolveReconciledWrite({
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
// legacyTarget = current status: pre-fix behavior was "no
|
|
181
|
-
// invoker, stay put", so any move is a [reconciler-divergence].
|
|
182
|
-
legacyTarget: requeueStatus,
|
|
183
|
-
input: {
|
|
222
|
+
// Status-only back-path (verify_failed -> queued): no git touch, no
|
|
223
|
+
// guard, no review -- guardVerdict:null is the explicit choice.
|
|
224
|
+
input: advanceReconcileInput({
|
|
184
225
|
currentStatus: requeueStatus,
|
|
185
|
-
issues
|
|
186
|
-
gitState: { worktreeCommitted: true },
|
|
226
|
+
issues,
|
|
187
227
|
guardVerdict: null,
|
|
188
|
-
reviewState: null,
|
|
189
228
|
discoveryOnly: false,
|
|
190
|
-
},
|
|
229
|
+
}),
|
|
191
230
|
});
|
|
192
231
|
if (requeueDecision.target !== requeueStatus) {
|
|
193
232
|
const requeueStage = requeueWorkflow.stages.find(s => s.name === requeueDecision.target);
|
|
@@ -230,58 +269,63 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
|
230
269
|
let currentStatus = (delivery.executionStatus ?? '');
|
|
231
270
|
if (currentStatus === DELIVERY_STATUS_QUEUED) {
|
|
232
271
|
const decision = resolveReconciledWrite({
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
legacyTarget: 'coding',
|
|
237
|
-
input: {
|
|
272
|
+
// queued -> coding has no guard (the work-start crossing) -- null is
|
|
273
|
+
// the explicit choice; discoveryOnly threads the discovery terminal.
|
|
274
|
+
input: advanceReconcileInput({
|
|
238
275
|
currentStatus,
|
|
239
276
|
issues: reconcilerIssues,
|
|
240
|
-
gitState: { worktreeCommitted: true },
|
|
241
277
|
guardVerdict: null,
|
|
242
|
-
reviewState: null,
|
|
243
278
|
discoveryOnly: discoveryComplete,
|
|
244
|
-
},
|
|
279
|
+
}),
|
|
245
280
|
});
|
|
246
281
|
const stage = workflow.stages.find(s => s.name === decision.target);
|
|
247
282
|
await _updateDeliveryStatus(delivery.id, decision.target, stage?.id, undefined, undefined, { organizationId: config.organizationId, fromStatus: currentStatus });
|
|
248
283
|
currentStatus = decision.target;
|
|
249
284
|
}
|
|
285
|
+
// Measure the coding->verify guard the SAME way the team path does, so
|
|
286
|
+
// a blocking guard is not silently skipped on the teamless path (TEL-2).
|
|
287
|
+
// A block -> paused + a transition_blocks row (which paused-revival reads
|
|
288
|
+
// back to revive once the guard clears -- the daemon-traversable exit);
|
|
289
|
+
// a pass -> null verdict + cleared gate_state, advancing to verify. Only
|
|
290
|
+
// the coding->verify edge is gated here: queued->coding has no guard, and
|
|
291
|
+
// the discovery verify->done edge is handled below.
|
|
292
|
+
let advanceGuardVerdict = null;
|
|
293
|
+
let advanceGateState = null;
|
|
294
|
+
if (currentStatus === DELIVERY_STATUS_CODING) {
|
|
295
|
+
const measured = await _measureGuardAtAdvance(config, delivery, workflow, currentStatus);
|
|
296
|
+
if (measured) {
|
|
297
|
+
advanceGuardVerdict = { blocked: measured.blocked };
|
|
298
|
+
advanceGateState = measured.blocked ? measured.gateState : null;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
250
301
|
const verifyDecision = resolveReconciledWrite({
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
input: {
|
|
302
|
+
// coding -> verify: the guard verdict is the MEASURED one
|
|
303
|
+
// (advanceGuardVerdict from measureGuardAtAdvance above) -- the same
|
|
304
|
+
// measurement the team path makes, never a bypassing null (D6 parity).
|
|
305
|
+
input: advanceReconcileInput({
|
|
256
306
|
currentStatus,
|
|
257
307
|
issues: reconcilerIssues,
|
|
258
|
-
|
|
259
|
-
guardVerdict: null,
|
|
260
|
-
reviewState: null,
|
|
308
|
+
guardVerdict: advanceGuardVerdict,
|
|
261
309
|
discoveryOnly: discoveryComplete,
|
|
262
|
-
},
|
|
310
|
+
}),
|
|
263
311
|
});
|
|
264
312
|
const verifyStage = workflow.stages.find(s => s.name === verifyDecision.target);
|
|
265
|
-
await _updateDeliveryStatus(delivery.id, verifyDecision.target, verifyStage?.id,
|
|
313
|
+
await _updateDeliveryStatus(delivery.id, verifyDecision.target, verifyStage?.id, advanceGateState, undefined, { organizationId: config.organizationId, fromStatus: currentStatus });
|
|
266
314
|
currentStatus = verifyDecision.target;
|
|
267
|
-
// Discovery-only terminal step: verify -> done (no review window).
|
|
268
|
-
//
|
|
269
|
-
//
|
|
270
|
-
//
|
|
315
|
+
// Discovery-only terminal step: verify -> done (no review window). A
|
|
316
|
+
// completed discovery-only delivery walks one step further than a
|
|
317
|
+
// normal one, since its findings ARE the output and there is no review
|
|
318
|
+
// to await.
|
|
271
319
|
if (discoveryComplete && currentStatus === DELIVERY_STATUS_VERIFY) {
|
|
272
320
|
const doneDecision = resolveReconciledWrite({
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
legacyTarget: DELIVERY_STATUS_VERIFY,
|
|
277
|
-
input: {
|
|
321
|
+
// Discovery-only verify -> done: no review window and no guard at
|
|
322
|
+
// this edge (its findings ARE the output) -- null is explicit.
|
|
323
|
+
input: advanceReconcileInput({
|
|
278
324
|
currentStatus,
|
|
279
325
|
issues: reconcilerIssues,
|
|
280
|
-
gitState: { worktreeCommitted: true },
|
|
281
326
|
guardVerdict: null,
|
|
282
|
-
reviewState: null,
|
|
283
327
|
discoveryOnly: true,
|
|
284
|
-
},
|
|
328
|
+
}),
|
|
285
329
|
});
|
|
286
330
|
if (doneDecision.target !== currentStatus) {
|
|
287
331
|
// Operator-hold gate (FAIL-CLOSED): even this discovery-only
|
|
@@ -300,17 +344,11 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
|
300
344
|
// clears by re-reading its condition, not by a human resolve.
|
|
301
345
|
const externalHold = hold.held
|
|
302
346
|
? { held: false, hold: null, cleared: false }
|
|
303
|
-
: await resolveExternalHold(holdDeps, delivery.id, delivery.gateState,
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
// request-referenced hold is actually re-read (never in mocked tests
|
|
309
|
-
// that carry no such hold). Behavior is identical in production.
|
|
310
|
-
makeRequestClosureEvaluator(async (ids) => {
|
|
311
|
-
const { listOutgoingRequestStatuses } = await import('../queries/requests.js');
|
|
312
|
-
return listOutgoingRequestStatuses(config.productId, ids);
|
|
313
|
-
}));
|
|
347
|
+
: await resolveExternalHold(holdDeps, delivery.id, delivery.gateState, makeDeferredRequestClosureEvaluator(config.productId));
|
|
348
|
+
// Surface (or clear) a stale reference-less external hold as
|
|
349
|
+
// operator-visible state (TEL-5, delivery 2). The `in` guard covers
|
|
350
|
+
// the operator-held short-circuit branch (no external eval ran).
|
|
351
|
+
surfaceStaleReferenceLessExternalHold(delivery.id, delivery.name, ('staleReferenceLess' in externalHold && externalHold.staleReferenceLess) || false, externalHold.hold);
|
|
314
352
|
if (hold.held) {
|
|
315
353
|
await writeOperatorHoldGateState(holdDeps, delivery.id, hold);
|
|
316
354
|
log.info(`[listener] Delivery "${delivery.name}" NOT moved to done -- ${describeOperatorHold(hold)}. ` +
|
|
@@ -331,6 +369,21 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
|
331
369
|
(discoveryComplete
|
|
332
370
|
? `discovery-only delivery, ${contextGroups.length} finding(s) resolved`
|
|
333
371
|
: `all ${workIssues.length} work issue(s) Done`));
|
|
372
|
+
// Spawn-independent genuine progress clears the halt (delivery 3, TEL-3
|
|
373
|
+
// + TEL-4). checkDeliveryAutoAdvance is teamless and forward-only, so a
|
|
374
|
+
// delivery advancing here is real progress the daemon observed WITHOUT a
|
|
375
|
+
// spawn -- the ONE path that can recover a focus whose spawn-cooldown
|
|
376
|
+
// `exhausted` latch would otherwise block every respawn (a team can't
|
|
377
|
+
// spawn to make progress, so only a spawn-independent advance breaks the
|
|
378
|
+
// deadlock). Reset the teardown streak + latch via clearSpawnCooldown.
|
|
379
|
+
clearSpawnCooldown(focusId);
|
|
380
|
+
// Close half for the team_failure spawn block (delivery 7 Task 1): the
|
|
381
|
+
// ESSENTIAL deadlock break. applyRespawnGuard parks every spawn while a
|
|
382
|
+
// team_failure escalation is open, so no team can run to observe its
|
|
383
|
+
// clearing condition -- only this spawn-independent advance can. Resolve
|
|
384
|
+
// the open team_failure escalation so the armed focus resumes spawning,
|
|
385
|
+
// with no human act. Best-effort, fire-and-forget.
|
|
386
|
+
void resolveOpenFocusEscalationsOfKind(focusId, 'team_failure', 'Auto-resolved by the daemon: the focus made genuine progress (a delivery advanced), so the team_failure spawn block cleared.').catch(() => { });
|
|
334
387
|
}
|
|
335
388
|
catch (err) {
|
|
336
389
|
log.warn(`[listener] Auto-advance: failed to check/advance delivery "${delivery.name}":`, err.message);
|
|
@@ -398,22 +451,9 @@ export async function checkDeliveryWorkStart(config, deps = {}) {
|
|
|
398
451
|
const issues = await _getDeliveryIssues(delivery.id);
|
|
399
452
|
const reconcilerIssues = issues.map(i => ({ status: i.status, issueType: i.issueType }));
|
|
400
453
|
// Single-writer reconciler decides: queued + In-Progress work -> coding;
|
|
401
|
-
// otherwise stays queued (no active work yet / scoping gate).
|
|
402
|
-
//
|
|
403
|
-
|
|
404
|
-
const decision = resolveReconciledWrite({
|
|
405
|
-
site: 'work-start',
|
|
406
|
-
deliveryId: delivery.id,
|
|
407
|
-
deliveryName: delivery.name,
|
|
408
|
-
legacyTarget: DELIVERY_STATUS_QUEUED,
|
|
409
|
-
input: {
|
|
410
|
-
currentStatus: DELIVERY_STATUS_QUEUED,
|
|
411
|
-
issues: reconcilerIssues,
|
|
412
|
-
gitState: { worktreeCommitted: true },
|
|
413
|
-
guardVerdict: null,
|
|
414
|
-
reviewState: null,
|
|
415
|
-
},
|
|
416
|
-
});
|
|
454
|
+
// otherwise stays queued (no active work yet / scoping gate). Shared
|
|
455
|
+
// work-start input (workStartReconcileInput) with the completion path.
|
|
456
|
+
const decision = resolveReconciledWrite({ input: workStartReconcileInput(reconcilerIssues) });
|
|
417
457
|
if (decision.target === DELIVERY_STATUS_QUEUED)
|
|
418
458
|
continue; // no active work yet
|
|
419
459
|
const workflow = await _fetchEffectiveWorkflow(delivery.id);
|
|
@@ -502,10 +542,6 @@ export async function checkVerifyDeliveriesForOpenIssues(config, deps = {}) {
|
|
|
502
542
|
// (verify + open work -> verify_failed) ahead of any review signal.
|
|
503
543
|
const workflow = await _fetchEffectiveWorkflow(delivery.id);
|
|
504
544
|
const decision = resolveReconciledWrite({
|
|
505
|
-
site: 'verify-open-issues',
|
|
506
|
-
deliveryId: delivery.id,
|
|
507
|
-
deliveryName: delivery.name,
|
|
508
|
-
legacyTarget: 'verify_failed',
|
|
509
545
|
input: {
|
|
510
546
|
currentStatus: 'verify',
|
|
511
547
|
issues: issues.map(i => ({ status: i.status, issueType: i.issueType })),
|