@telora/daemon 0.22.85 → 0.22.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +4 -3
- package/dist/ci/ci-escalation.d.ts +17 -1
- package/dist/ci/ci-escalation.d.ts.map +1 -1
- package/dist/ci/ci-escalation.js +51 -3
- package/dist/ci/ci-escalation.js.map +1 -1
- package/dist/ci/ci-red-attribution.d.ts +85 -0
- package/dist/ci/ci-red-attribution.d.ts.map +1 -0
- package/dist/ci/ci-red-attribution.js +108 -0
- package/dist/ci/ci-red-attribution.js.map +1 -0
- package/dist/ci/ci-sensor-loop.d.ts +84 -80
- package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
- package/dist/ci/ci-sensor-loop.js +132 -129
- package/dist/ci/ci-sensor-loop.js.map +1 -1
- package/dist/completion/coverage-stabilized.d.ts.map +1 -1
- package/dist/completion/coverage-stabilized.js +1 -1
- package/dist/completion/coverage-stabilized.js.map +1 -1
- package/dist/completion/escalations.d.ts +40 -5
- package/dist/completion/escalations.d.ts.map +1 -1
- package/dist/completion/escalations.js +19 -11
- package/dist/completion/escalations.js.map +1 -1
- package/dist/completion/event-escalations.d.ts +12 -1
- package/dist/completion/event-escalations.d.ts.map +1 -1
- package/dist/completion/event-escalations.js +73 -37
- package/dist/completion/event-escalations.js.map +1 -1
- package/dist/completion/event.d.ts +4 -1
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +1 -1
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/human-only-act.d.ts +1 -1
- package/dist/completion/human-only-act.js +1 -1
- package/dist/completion/machine-remediable-demotion.d.ts +28 -1
- package/dist/completion/machine-remediable-demotion.d.ts.map +1 -1
- package/dist/completion/machine-remediable-demotion.js +9 -6
- package/dist/completion/machine-remediable-demotion.js.map +1 -1
- package/dist/completion/read-only-pristine.d.ts.map +1 -1
- package/dist/completion/read-only-pristine.js +4 -0
- package/dist/completion/read-only-pristine.js.map +1 -1
- package/dist/completion/review-exit-deps.js +1 -1
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-escalations.d.ts +10 -0
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +38 -3
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +8 -7
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-shortfall.d.ts +5 -1
- package/dist/completion/review-exit-shortfall.d.ts.map +1 -1
- package/dist/completion/review-exit-shortfall.js +8 -3
- package/dist/completion/review-exit-shortfall.js.map +1 -1
- package/dist/completion/status-advance-phase.d.ts +2 -0
- package/dist/completion/status-advance-phase.d.ts.map +1 -1
- package/dist/completion/status-advance-phase.js +2 -1
- package/dist/completion/status-advance-phase.js.map +1 -1
- package/dist/completion/terminated-work-reconcile.js +2 -2
- package/dist/completion/terminated-work-reconcile.js.map +1 -1
- package/dist/delivery/delivery-advance-block.d.ts +3 -3
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +13 -8
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/delivery/delivery-lifecycle.d.ts +10 -0
- package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
- package/dist/delivery/delivery-lifecycle.js +12 -6
- package/dist/delivery/delivery-lifecycle.js.map +1 -1
- package/dist/delivery/delivery-merge-ops.d.ts.map +1 -1
- package/dist/delivery/delivery-merge-ops.js +39 -21
- package/dist/delivery/delivery-merge-ops.js.map +1 -1
- package/dist/delivery/external-hold.d.ts +8 -2
- package/dist/delivery/external-hold.d.ts.map +1 -1
- package/dist/delivery/external-hold.js +12 -5
- package/dist/delivery/external-hold.js.map +1 -1
- package/dist/delivery/operator-hold.d.ts +6 -1
- package/dist/delivery/operator-hold.d.ts.map +1 -1
- package/dist/delivery/operator-hold.js +31 -10
- package/dist/delivery/operator-hold.js.map +1 -1
- package/dist/delivery/paused-revival.d.ts +6 -0
- package/dist/delivery/paused-revival.d.ts.map +1 -1
- package/dist/delivery/paused-revival.js +3 -1
- package/dist/delivery/paused-revival.js.map +1 -1
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +6 -3
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +4 -1
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/drift/staleness-sensor.d.ts +14 -0
- package/dist/drift/staleness-sensor.d.ts.map +1 -1
- package/dist/drift/staleness-sensor.js +30 -1
- package/dist/drift/staleness-sensor.js.map +1 -1
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +6 -8
- 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 +23 -13
- 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 +21 -4
- package/dist/focus/focus-respawn-guard.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +10 -6
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/verify-open-issues.d.ts.map +1 -1
- package/dist/focus/verify-open-issues.js +21 -1
- package/dist/focus/verify-open-issues.js.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.js +35 -14
- package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
- package/dist/loops/index.d.ts.map +1 -1
- package/dist/loops/index.js +2 -1
- package/dist/loops/index.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 +5 -1
- package/dist/merge/focus-merge.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts +2 -1
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +15 -12
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
- package/dist/merge/merge-conflict-escalation.js +4 -0
- package/dist/merge/merge-conflict-escalation.js.map +1 -1
- package/dist/nexus/return.d.ts +14 -15
- package/dist/nexus/return.d.ts.map +1 -1
- package/dist/nexus/return.js +41 -31
- package/dist/nexus/return.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts +13 -5
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +78 -18
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/routing-decider-sections.d.ts +60 -0
- package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -0
- package/dist/prompt-sections/routing-decider-sections.js +197 -0
- package/dist/prompt-sections/routing-decider-sections.js.map +1 -0
- package/dist/queries/agent-resolvable-aging.d.ts +4 -3
- package/dist/queries/agent-resolvable-aging.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-aging.js +5 -4
- package/dist/queries/agent-resolvable-aging.js.map +1 -1
- package/dist/queries/agent-resolvable-promotion.d.ts +172 -124
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +332 -307
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/agent-resolvable-retirement.d.ts +105 -0
- package/dist/queries/agent-resolvable-retirement.d.ts.map +1 -0
- package/dist/queries/agent-resolvable-retirement.js +227 -0
- package/dist/queries/agent-resolvable-retirement.js.map +1 -0
- package/dist/queries/cause-key.d.ts +109 -0
- package/dist/queries/cause-key.d.ts.map +1 -1
- package/dist/queries/cause-key.js +93 -1
- package/dist/queries/cause-key.js.map +1 -1
- package/dist/queries/deliveries.d.ts +14 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +20 -2
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +130 -5
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +111 -2
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/escalation-consumption.d.ts +95 -15
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +162 -24
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/escalation-dispositions.d.ts +19 -7
- package/dist/queries/escalation-dispositions.d.ts.map +1 -1
- package/dist/queries/escalation-dispositions.js +7 -0
- package/dist/queries/escalation-dispositions.js.map +1 -1
- package/dist/queries/escalation-suppression.d.ts +63 -19
- package/dist/queries/escalation-suppression.d.ts.map +1 -1
- package/dist/queries/escalation-suppression.js +64 -35
- package/dist/queries/escalation-suppression.js.map +1 -1
- package/dist/queries/escalations.d.ts +127 -70
- package/dist/queries/escalations.d.ts.map +1 -1
- package/dist/queries/escalations.js +170 -188
- package/dist/queries/escalations.js.map +1 -1
- package/dist/queries/filing-observation.d.ts +82 -0
- package/dist/queries/filing-observation.d.ts.map +1 -0
- package/dist/queries/filing-observation.js +157 -0
- package/dist/queries/filing-observation.js.map +1 -0
- package/dist/queries/holds.d.ts +69 -2
- package/dist/queries/holds.d.ts.map +1 -1
- package/dist/queries/holds.js +106 -11
- package/dist/queries/holds.js.map +1 -1
- package/dist/queries/incident-correlation.d.ts +291 -0
- package/dist/queries/incident-correlation.d.ts.map +1 -0
- package/dist/queries/incident-correlation.js +408 -0
- package/dist/queries/incident-correlation.js.map +1 -0
- package/dist/queries/routing-measurement.d.ts +48 -1
- package/dist/queries/routing-measurement.d.ts.map +1 -1
- package/dist/queries/routing-measurement.js +64 -2
- package/dist/queries/routing-measurement.js.map +1 -1
- package/dist/queries/routing-quality.d.ts +8 -0
- package/dist/queries/routing-quality.d.ts.map +1 -1
- package/dist/queries/routing-quality.js +12 -3
- package/dist/queries/routing-quality.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/shell/crash-recovery.d.ts.map +1 -1
- package/dist/shell/crash-recovery.js +6 -6
- package/dist/shell/crash-recovery.js.map +1 -1
- package/dist/shell/install-probe-tick.d.ts.map +1 -1
- package/dist/shell/install-probe-tick.js +3 -1
- package/dist/shell/install-probe-tick.js.map +1 -1
- package/dist/spawn/respawn-cycle-escalation.d.ts +10 -2
- package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -1
- package/dist/spawn/respawn-cycle-escalation.js +16 -2
- package/dist/spawn/respawn-cycle-escalation.js.map +1 -1
- package/dist/spawn/routing-decider-spawn.d.ts +93 -0
- package/dist/spawn/routing-decider-spawn.d.ts.map +1 -0
- package/dist/spawn/routing-decider-spawn.js +185 -0
- package/dist/spawn/routing-decider-spawn.js.map +1 -0
- package/dist/spawn/routing-decider.d.ts +42 -0
- package/dist/spawn/routing-decider.d.ts.map +1 -0
- package/dist/spawn/routing-decider.js +95 -0
- package/dist/spawn/routing-decider.js.map +1 -0
- package/dist/spawn/shared.d.ts +8 -0
- package/dist/spawn/shared.d.ts.map +1 -1
- package/dist/spawn/shared.js +1 -1
- package/dist/spawn/shared.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts +23 -16
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +27 -11
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +19 -7
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +36 -8
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/failure-signature.d.ts +91 -0
- package/dist/verify/failure-signature.d.ts.map +1 -0
- package/dist/verify/failure-signature.js +233 -0
- package/dist/verify/failure-signature.js.map +1 -0
- package/dist/verify/shortfall-repeat.d.ts +12 -9
- package/dist/verify/shortfall-repeat.d.ts.map +1 -1
- package/dist/verify/shortfall-repeat.js +38 -14
- package/dist/verify/shortfall-repeat.js.map +1 -1
- package/dist/verify/stall-detectors.d.ts +19 -43
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +26 -101
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/unreviewed-settle-detector.d.ts +8 -0
- package/dist/verify/unreviewed-settle-detector.d.ts.map +1 -1
- package/dist/verify/unreviewed-settle-detector.js +15 -1
- package/dist/verify/unreviewed-settle-detector.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +14 -2
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js +8 -2
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +62 -14
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +101 -28
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verify-gate-stall.d.ts +116 -0
- package/dist/verify/verify-gate-stall.d.ts.map +1 -0
- package/dist/verify/verify-gate-stall.js +169 -0
- package/dist/verify/verify-gate-stall.js.map +1 -0
- package/dist/verify/verify-restatement.d.ts.map +1 -1
- package/dist/verify/verify-restatement.js +2 -1
- package/dist/verify/verify-restatement.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,26 +1,12 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by:
|
|
2
|
+
// Pinned by: 35 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/queries/escalations.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
|
-
/**
|
|
5
|
-
* Escalation queries: creation, open-escalation dedup reads, and resolution.
|
|
6
|
-
*
|
|
7
|
-
* Split out of queries/issues.ts (file-size limit); the issue CRUD stays there
|
|
8
|
-
* and re-exports this module so existing importers of queries/issues.js keep
|
|
9
|
-
* working -- the same shape as the queries/holds.ts split.
|
|
10
|
-
*
|
|
11
|
-
* This module must NOT take a runtime (value) import of `@telora/daemon-core`
|
|
12
|
-
* (only the type import below). Under the node:test module-mock loader a bare
|
|
13
|
-
* `@telora/*` value specifier resolves RELATIVE TO THIS FILE
|
|
14
|
-
* (.../src/queries/@telora/daemon-core) and dies with ERR_MODULE_NOT_FOUND --
|
|
15
|
-
* so every test that registers a mock.module and transitively loads this file
|
|
16
|
-
* fails to even start. The disposition vocabulary is therefore mirrored as
|
|
17
|
-
* type-pinned local literals (DISPOSITION_AGENT_RESOLVABLE / _NEEDS_INTENT);
|
|
18
|
-
* the same quirk keeps src/shell/log.ts daemon-local.
|
|
19
|
-
*/
|
|
20
4
|
import { callApi } from './shared.js';
|
|
21
5
|
import { resolveProvenance } from '../completion/escalation-provenance.js';
|
|
22
6
|
import { createLogger } from '../shell/log.js';
|
|
23
7
|
import { DISPOSITION_AGENT_RESOLVABLE } from './escalation-dispositions.js';
|
|
8
|
+
import { routeFilingDisposition } from './filing-observation.js';
|
|
9
|
+
import { correlateFiling, incidentIoOver, isOpenFocusKindRow, isOpenWorktreeDirtyMatch, readSymptoms, resolveFilingIncidentKey, retireClearedSymptoms, rowAnswersForKind, rowNamesDelivery, stampIncidentMetadata, } from './incident-correlation.js';
|
|
24
10
|
// The agent-resolvable / demotable consumption reads live in
|
|
25
11
|
// queries/escalation-consumption.ts; importers reference that module directly
|
|
26
12
|
// (this module deliberately does NOT re-export it -- no facade, per the daemon's
|
|
@@ -32,11 +18,28 @@ const log = createLogger({ module: 'escalations' });
|
|
|
32
18
|
* Every daemon-side producer that composes a description MUST fit it under this
|
|
33
19
|
* ONE number rather than compose blind and let the edge reject on length --
|
|
34
20
|
* the disagreement that let an over-cap description be re-submitted forever
|
|
35
|
-
* (Nexus notifications, and the agent_resolvable promotion refile
|
|
36
|
-
* producer (nexus/return.ts)
|
|
37
|
-
*
|
|
21
|
+
* (Nexus notifications, and the former agent_resolvable promotion refile, which
|
|
22
|
+
* the daemon no longer files). The Nexus producer (nexus/return.ts) imports it
|
|
23
|
+
* from here so producer and server agree on the limit.
|
|
38
24
|
*/
|
|
39
25
|
export const ESCALATION_DESCRIPTION_MAX = 5000;
|
|
26
|
+
/**
|
|
27
|
+
* Create an escalation request -- the single filing chokepoint. Provenance is
|
|
28
|
+
* derived from `anchor` via resolveProvenance (explicit productId/focusId/deliveryId
|
|
29
|
+
* win; a derivation miss degrades, never aborts). The disposition is routed by
|
|
30
|
+
* routeFilingDisposition: a daemon filing enters the machine lane WHATEVER
|
|
31
|
+
* disposition it names -- needs_operator / external_wait / needs_intent /
|
|
32
|
+
* needs_clarification are sent agent_resolvable as an observation carrying the
|
|
33
|
+
* proposed disposition and any proposed human act. The daemon files no
|
|
34
|
+
* human-facing row; only an agent that has assembled the intent ladder makes a
|
|
35
|
+
* filing human-facing (MCP escalate). A stop or hold the detector reported stays
|
|
36
|
+
* in force on its observation (queries/holds.ts isMachineStopObservation and
|
|
37
|
+
* findOpenOperatorHoldForDelivery). The RESOLVED provenance (plus a branch the site carries) yields metadata.incident_key
|
|
38
|
+
* (a key already in metadata wins; inbound-notification kinds carry none), and the
|
|
39
|
+
* ONE incident reducer (queries/incident-correlation.ts correlateFiling) either
|
|
40
|
+
* attaches the filing to its incident's open row in the same lane -- no row filed
|
|
41
|
+
* -- or the row is filed stamped with the key and its own symptom.
|
|
42
|
+
*/
|
|
40
43
|
export async function createEscalation(params, deps = {}) {
|
|
41
44
|
const call = deps.callApi ?? callApi;
|
|
42
45
|
const resolveProvenanceFn = deps.resolveProvenance ?? resolveProvenance;
|
|
@@ -44,23 +47,39 @@ export async function createEscalation(params, deps = {}) {
|
|
|
44
47
|
const productId = params.productId ?? derived.productId;
|
|
45
48
|
const focusId = params.focusId ?? derived.focusId;
|
|
46
49
|
const deliveryId = params.deliveryId ?? derived.deliveryId;
|
|
50
|
+
const key = resolveFilingIncidentKey(params, { productId, focusId, deliveryId });
|
|
51
|
+
const routed = routeFilingDisposition(params, ESCALATION_DESCRIPTION_MAX);
|
|
52
|
+
if (routed.route === 'observation') {
|
|
53
|
+
log.info(`[escalations] ${params.disposition} filing (kind ${params.escalationKind ?? 'none'}) sent to the machine lane as an observation${params.humanAct ? ' carrying its proposed human act' : ''}`);
|
|
54
|
+
}
|
|
55
|
+
const filing = { ...params, metadata: routed.metadata };
|
|
56
|
+
const observedAt = (deps.now ?? (() => new Date().toISOString()))();
|
|
57
|
+
const correlation = key
|
|
58
|
+
? await correlateFiling({ key, filing, disposition: routed.disposition, focusId, observedAt }, incidentIoOver(call))
|
|
59
|
+
: null;
|
|
60
|
+
if (correlation?.note)
|
|
61
|
+
log[correlation.warn ? 'warn' : 'info'](`[escalations] ${correlation.note}`);
|
|
62
|
+
if (correlation?.outcome === 'attached' || correlation?.outcome === 'already_carried') {
|
|
63
|
+
return { escalationId: null, correlated: true, incidentEscalationId: correlation.incidentRowId };
|
|
64
|
+
}
|
|
65
|
+
const metadata = stampIncidentMetadata(filing, key, observedAt);
|
|
47
66
|
const res = await call('escalation_create', {
|
|
48
67
|
issueId: params.issueId,
|
|
49
68
|
fields: {
|
|
50
69
|
reasonType: params.reasonType,
|
|
51
|
-
description:
|
|
70
|
+
description: routed.description,
|
|
52
71
|
whatWasTried: params.whatWasTried,
|
|
53
|
-
helpNeeded:
|
|
72
|
+
helpNeeded: routed.helpNeeded,
|
|
54
73
|
...(params.escalationKind ? { escalationKind: params.escalationKind } : {}),
|
|
55
|
-
...(
|
|
74
|
+
...(metadata ? { metadata } : {}),
|
|
56
75
|
...(productId ? { productId } : {}),
|
|
57
76
|
...(focusId ? { focusId } : {}),
|
|
58
77
|
...(deliveryId ? { deliveryId } : {}),
|
|
59
78
|
...(params.targetProductId ? { targetProductId: params.targetProductId } : {}),
|
|
60
|
-
...(
|
|
79
|
+
...(routed.disposition ? { disposition: routed.disposition } : {}),
|
|
61
80
|
},
|
|
62
81
|
});
|
|
63
|
-
return { escalationId: res.escalation?.id ?? null };
|
|
82
|
+
return { escalationId: res.escalation?.id ?? null, correlated: false, incidentEscalationId: correlation?.incidentRowId ?? null };
|
|
64
83
|
}
|
|
65
84
|
/**
|
|
66
85
|
* List open (not-yet-resolved) escalations for the organization.
|
|
@@ -85,6 +104,7 @@ export async function listPendingEscalations(deps = {}) {
|
|
|
85
104
|
whatWasTried: e.whatWasTried ?? null,
|
|
86
105
|
helpNeeded: e.helpNeeded ?? null,
|
|
87
106
|
escalationKind: e.escalationKind ?? null,
|
|
107
|
+
focusId: e.focusId ?? null,
|
|
88
108
|
metadata: e.metadata ?? null,
|
|
89
109
|
}));
|
|
90
110
|
}
|
|
@@ -118,11 +138,24 @@ export async function hasOpenTeamFailureEscalation(focusId, deps = {}, opts = {}
|
|
|
118
138
|
e.metadata?.focusId === focusId);
|
|
119
139
|
// TEL-2: the respawn guard passes excludeAgentResolvable so a MACHINE-owned
|
|
120
140
|
// (agent_resolvable) team_failure does NOT gate the spawn -- it is a RECORD the
|
|
121
|
-
// incoming team resolves
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
|
|
141
|
+
// incoming team resolves, not a hold. EXCEPT a machine-stop observation
|
|
142
|
+
// (queries/holds.ts isMachineStopObservation): the chokepoint sends every daemon
|
|
143
|
+
// filing agent_resolvable, so a detector that proposed the act ending its stop
|
|
144
|
+
// (non-advanceable, advancement-stalled) keeps blocking on that proposal. A null /
|
|
145
|
+
// needs_intent / needs_operator row (agent-filed or legacy) still blocks. The
|
|
146
|
+
// idempotency callers pass no opts, so they count EVERY open team_failure.
|
|
147
|
+
return forThisFocus.some((e) => !(opts.excludeAgentResolvable && e.disposition === DISPOSITION_AGENT_RESOLVABLE && !isMachineStopObservation(e)));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* DEDUP-only sibling of hasOpenTeamFailureEscalation, for the team_failure RE-FILE
|
|
151
|
+
* guards (completion/event.ts): also counts an open row on the focus answering for
|
|
152
|
+
* team_failure as a promotion refile (originalKind / original_cause_key) or a
|
|
153
|
+
* carried symptom, so a promoted team_failure is not re-filed. The respawn guard
|
|
154
|
+
* keeps the kind-column read -- a HOLD must not match a condition whose kind-keyed
|
|
155
|
+
* close-half would never release it.
|
|
156
|
+
*/
|
|
157
|
+
export async function hasOpenTeamFailureEscalationForDedup(focusId, deps = {}) {
|
|
158
|
+
return hasOpenFocusEscalation(focusId, 'team_failure', deps, { matchCorrelated: true });
|
|
126
159
|
}
|
|
127
160
|
/**
|
|
128
161
|
* Returns true when an open (status pending or in_review) escalation exists
|
|
@@ -134,7 +167,9 @@ export async function hasOpenTeamFailureEscalation(focusId, deps = {}, opts = {}
|
|
|
134
167
|
* COLUMNS in preference to the metadata bag. A metadata fallback is retained
|
|
135
168
|
* for back-compat with rows already open at deploy time (filed before this
|
|
136
169
|
* promotion, which carry the discriminator only in metadata.kind /
|
|
137
|
-
* metadata.deliveryId).
|
|
170
|
+
* metadata.deliveryId). A pure DEDUP read, so it also sees a promotion refile
|
|
171
|
+
* (metadata.originalKind + the delivery's carried incident_key) and a symptom
|
|
172
|
+
* correlated onto the delivery's incident row (rowAnswersForKind / rowNamesDelivery).
|
|
138
173
|
*
|
|
139
174
|
* Used by the delivery advance-block path so a delivery stuck across many
|
|
140
175
|
* polls files exactly one open escalation instead of one per tick.
|
|
@@ -144,21 +179,11 @@ export async function hasOpenEscalationForDelivery(deliveryId, escalationKind) {
|
|
|
144
179
|
fields: { statuses: ['pending', 'in_review'] },
|
|
145
180
|
limit: 500,
|
|
146
181
|
});
|
|
147
|
-
return (result.escalations ?? []).some((e) =>
|
|
148
|
-
// Preferred: match on the typed columns.
|
|
149
|
-
if (e.escalationKind === escalationKind && e.deliveryId === deliveryId) {
|
|
150
|
-
return true;
|
|
151
|
-
}
|
|
152
|
-
// Back-compat: rows filed before the column promotion carry the
|
|
153
|
-
// discriminator in the metadata bag.
|
|
154
|
-
const meta = e.metadata ?? null;
|
|
155
|
-
return meta?.kind === escalationKind && meta?.deliveryId === deliveryId;
|
|
156
|
-
});
|
|
182
|
+
return (result.escalations ?? []).some((e) => rowNamesDelivery(e, deliveryId) && rowAnswersForKind(e, escalationKind));
|
|
157
183
|
}
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
import { OPEN_ESCALATION_STATUSES } from './holds.js';
|
|
184
|
+
// The holds symbols this module consumes; the operator-hold lookup family lives in
|
|
185
|
+
// queries/holds.ts and importers reference it there directly (no re-export facade).
|
|
186
|
+
import { OPEN_ESCALATION_STATUSES, isMachineStopObservation } from './holds.js';
|
|
162
187
|
/**
|
|
163
188
|
* escalation_kind discriminators for the two focus-merge worktree-dirty
|
|
164
189
|
* classes. Declared as daemon-local string constants (not imported from
|
|
@@ -188,34 +213,6 @@ export const WORKTREE_DIRTY_ESCALATION_KINDS = [
|
|
|
188
213
|
MERGE_CONFLICT_ESCALATION_KIND,
|
|
189
214
|
MERGE_REFUSED_DIRTY_ESCALATION_KIND,
|
|
190
215
|
];
|
|
191
|
-
/**
|
|
192
|
-
* True when `e` is an OPEN worktree-dirty-class escalation for `focusId` whose
|
|
193
|
-
* kind is in `kindSet`. Shared by hasOpenWorktreeDirtyEscalation (dedup) and
|
|
194
|
-
* resolveOpenWorktreeDirtyEscalations (auto-close) so both agree on what counts.
|
|
195
|
-
*
|
|
196
|
-
* The status re-check is defense-in-depth. The live escalation_list handler
|
|
197
|
-
* (issue-handlers.listEscalations) already honors the `statuses` filter
|
|
198
|
-
* server-side, so the daemon normally receives only pending/in_review rows --
|
|
199
|
-
* but we re-check here so the invariant "a RESOLVED worktree-dirty row must
|
|
200
|
-
* never suppress (or be re-resolved as) a legitimate new escalation" holds
|
|
201
|
-
* regardless of how the rows were fetched (custom `kinds`, a future caller that
|
|
202
|
-
* forgets the statuses filter, etc.).
|
|
203
|
-
*/
|
|
204
|
-
function isOpenWorktreeDirtyMatch(e, focusId, kindSet) {
|
|
205
|
-
if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
|
|
206
|
-
return false;
|
|
207
|
-
// Preferred: match on the typed columns.
|
|
208
|
-
if (e.focusId === focusId && e.escalationKind && kindSet.has(e.escalationKind)) {
|
|
209
|
-
return true;
|
|
210
|
-
}
|
|
211
|
-
// Back-compat: rows filed before the column promotion carry the focus / kind
|
|
212
|
-
// in the metadata bag.
|
|
213
|
-
const meta = e.metadata ?? null;
|
|
214
|
-
const metaKind = meta?.kind;
|
|
215
|
-
return (meta?.focusId === focusId &&
|
|
216
|
-
typeof metaKind === 'string' &&
|
|
217
|
-
kindSet.has(metaKind));
|
|
218
|
-
}
|
|
219
216
|
/**
|
|
220
217
|
* Returns true when an open (status pending or in_review) worktree-dirty-class
|
|
221
218
|
* escalation exists for the given FOCUS.
|
|
@@ -250,7 +247,7 @@ export async function hasOpenWorktreeDirtyEscalation(focusId, kinds = WORKTREE_D
|
|
|
250
247
|
fields: { statuses: ['pending', 'in_review'], focusId },
|
|
251
248
|
limit: 500,
|
|
252
249
|
});
|
|
253
|
-
return (result.escalations ?? []).some((e) => isOpenWorktreeDirtyMatch(e, focusId, kindSet));
|
|
250
|
+
return (result.escalations ?? []).some((e) => isOpenWorktreeDirtyMatch(e, focusId, kindSet, true));
|
|
254
251
|
}
|
|
255
252
|
/** The escalation_kind filed by the planning-wedge watchdog. */
|
|
256
253
|
export const WEDGED_FOCUS_ESCALATION_KIND = 'wedged_focus';
|
|
@@ -263,40 +260,13 @@ export const WEDGED_FOCUS_ESCALATION_KIND = 'wedged_focus';
|
|
|
263
260
|
* (the 172-duplicate storm class). Keying on the focus + escalation_kind COLUMNS
|
|
264
261
|
* collapses the threshold-crossing escalation to at most one open row per focus.
|
|
265
262
|
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
* status + focus + kind predicate is ALSO applied client-side as defense-in-depth.
|
|
270
|
-
* Because it queries the DB rather than an in-memory Set, the dedup SURVIVES A
|
|
271
|
-
* DAEMON RESTART -- a restart cannot re-storm a focus that is still wedged.
|
|
263
|
+
* Delegates to hasOpenFocusEscalation (server-side focusId + open-status narrowing,
|
|
264
|
+
* client-side re-check). Because it queries the DB rather than an in-memory Set,
|
|
265
|
+
* the dedup SURVIVES A DAEMON RESTART -- a restart cannot re-storm a wedged focus.
|
|
272
266
|
*/
|
|
273
267
|
export async function hasOpenWedgedFocusEscalation(focusId) {
|
|
274
|
-
|
|
275
|
-
fields: { statuses: ['pending', 'in_review'], focusId },
|
|
276
|
-
limit: 500,
|
|
277
|
-
});
|
|
278
|
-
return (result.escalations ?? []).some((e) => {
|
|
279
|
-
if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
|
|
280
|
-
return false;
|
|
281
|
-
if (e.focusId === focusId && e.escalationKind === WEDGED_FOCUS_ESCALATION_KIND)
|
|
282
|
-
return true;
|
|
283
|
-
// Back-compat: a row filed before the column promotion carries focus / kind
|
|
284
|
-
// in the metadata bag.
|
|
285
|
-
const meta = e.metadata ?? null;
|
|
286
|
-
return meta?.focusId === focusId && meta?.kind === WEDGED_FOCUS_ESCALATION_KIND;
|
|
287
|
-
});
|
|
268
|
+
return hasOpenFocusEscalation(focusId, WEDGED_FOCUS_ESCALATION_KIND, {}, { matchCorrelated: true });
|
|
288
269
|
}
|
|
289
|
-
/**
|
|
290
|
-
* Returns true when an OPEN (status pending or in_review) escalation of the
|
|
291
|
-
* given `escalationKind` already exists for the given FOCUS. Generic per-focus
|
|
292
|
-
* dedup, mirroring hasOpenWedgedFocusEscalation but parameterized on the kind.
|
|
293
|
-
*
|
|
294
|
-
* Used by the targeted stall detectors (review_window_stalled) so a focus that
|
|
295
|
-
* stays stalled across many poll ticks files exactly one open escalation
|
|
296
|
-
* instead of one per tick. Queries the DB (not an in-memory Set), so the dedup
|
|
297
|
-
* survives a daemon restart. Narrows server-side by focusId + open statuses and
|
|
298
|
-
* re-applies the status/focus/kind predicate client-side as defense-in-depth.
|
|
299
|
-
*/
|
|
300
270
|
/**
|
|
301
271
|
* The escalation_kind the review-exit drift-streak breaker files when a focus
|
|
302
272
|
* branch keeps advancing DURING each review pass (review-exit-escalations.ts).
|
|
@@ -311,52 +281,45 @@ export const REVIEW_COVERAGE_INCOMPLETE_ESCALATION_KIND = 'review_coverage_incom
|
|
|
311
281
|
* fired parks its re-review spawns instead of burning a review cycle every
|
|
312
282
|
* spawn cooldown while the escalation sits open (the 2026-08-06 incident: the
|
|
313
283
|
* breaker fired 4 minutes in, but nothing stopped the loop for 4.5h). Mirrors
|
|
314
|
-
* hasOpenTeamFailureEscalation
|
|
284
|
+
* hasOpenTeamFailureEscalation's excludeAgentResolvable (TEL-2), but the respawn
|
|
285
|
+
* guard does NOT pass it: the coverage hold is a machine wait-state the coverage
|
|
286
|
+
* stabilizer clears, so it parks the spawn whatever its disposition.
|
|
315
287
|
*/
|
|
316
|
-
export async function hasOpenReviewCoverageIncompleteEscalation(focusId) {
|
|
317
|
-
return hasOpenFocusEscalation(focusId, REVIEW_COVERAGE_INCOMPLETE_ESCALATION_KIND);
|
|
288
|
+
export async function hasOpenReviewCoverageIncompleteEscalation(focusId, deps = {}, opts = {}) {
|
|
289
|
+
return hasOpenFocusEscalation(focusId, REVIEW_COVERAGE_INCOMPLETE_ESCALATION_KIND, deps, opts);
|
|
318
290
|
}
|
|
319
|
-
|
|
320
|
-
|
|
291
|
+
/**
|
|
292
|
+
* Returns true when an OPEN (status pending or in_review) escalation of the
|
|
293
|
+
* given `escalationKind` already exists for the given FOCUS. Generic per-focus
|
|
294
|
+
* dedup (review_window_stalled, wedged_focus, the review breakers): one open row
|
|
295
|
+
* per focus across poll ticks and daemon restarts. Narrows server-side by
|
|
296
|
+
* focusId + open statuses and re-applies status/focus/kind client-side.
|
|
297
|
+
* Dedup callers pass no opts (every open row counts, observations included).
|
|
298
|
+
*
|
|
299
|
+
* `matchCorrelated` is for PURE dedup reads only: it also counts a promotion
|
|
300
|
+
* refile (metadata.originalKind) and a symptom correlated onto an open incident
|
|
301
|
+
* row on the focus. It is opt-in because two callers read this as a HOLD (the
|
|
302
|
+
* respawn guard's review_coverage_incomplete, the state cascade's breaker hold),
|
|
303
|
+
* and a promoted or absorbed condition has no close-half that would release it.
|
|
304
|
+
*/
|
|
305
|
+
export async function hasOpenFocusEscalation(focusId, escalationKind, deps = {}, opts = {}) {
|
|
306
|
+
const call = deps.callApi ?? callApi;
|
|
307
|
+
const result = await call('escalation_list', {
|
|
321
308
|
fields: { statuses: ['pending', 'in_review'], focusId },
|
|
322
309
|
limit: 500,
|
|
323
310
|
});
|
|
324
311
|
return (result.escalations ?? []).some((e) => {
|
|
325
|
-
if (e.
|
|
312
|
+
if (opts.excludeAgentResolvable && e.disposition === DISPOSITION_AGENT_RESOLVABLE && !isMachineStopObservation(e))
|
|
326
313
|
return false;
|
|
327
|
-
|
|
328
|
-
return true;
|
|
329
|
-
// Back-compat: a row filed before the column promotion carries focus / kind
|
|
330
|
-
// in the metadata bag.
|
|
331
|
-
const meta = e.metadata ?? null;
|
|
332
|
-
return meta?.focusId === focusId && meta?.kind === escalationKind;
|
|
314
|
+
return isOpenFocusKindRow(e, focusId, escalationKind, opts.matchCorrelated ?? false);
|
|
333
315
|
});
|
|
334
316
|
}
|
|
335
|
-
/**
|
|
336
|
-
* The close half for a per-FOCUS escalation kind: resolve every open (pending or
|
|
337
|
-
* in_review) escalation of `escalationKind` for the focus, once the daemon has
|
|
338
|
-
* observed its clearing condition. Mirrors resolveOpenWorktreeDirtyEscalations
|
|
339
|
-
* (the delivery-scoped precedent) for the focus-scoped blocking kinds that
|
|
340
|
-
* applyRespawnGuard reads as a spawn block (team_failure) -- so a machine-filed
|
|
341
|
-
* spawn block clears itself the moment its own condition (genuine progress)
|
|
342
|
-
* clears, and the armed focus resumes spawning with no human act.
|
|
343
|
-
*
|
|
344
|
-
* Best-effort: a resolve failure for one row is logged and skipped, never thrown,
|
|
345
|
-
* so the caller's primary work (advancing a delivery) is not blocked. Returns the
|
|
346
|
-
* count resolved.
|
|
347
|
-
*/
|
|
348
|
-
/**
|
|
349
|
-
* Read the OPEN (pending or in_review) escalations of `escalationKind` for a
|
|
350
|
-
* focus, returning each row's id + metadata. The read sibling of
|
|
351
|
-
* resolveOpenFocusEscalationsOfKind, for close-halves whose clearing condition
|
|
352
|
-
* is per-row (e.g. review_coverage_incomplete clears only when the focus branch
|
|
353
|
-
* has stabilized at the tip recorded in the row's metadata at filing).
|
|
354
|
-
*/
|
|
355
317
|
/**
|
|
356
318
|
* List the escalation_kind of every OPEN (pending/in_review) escalation naming a
|
|
357
|
-
* focus -- the raw evidence the wedge-cause arbiter (TEL-3) draws on
|
|
358
|
-
*
|
|
359
|
-
*
|
|
319
|
+
* focus -- the raw evidence the wedge-cause arbiter (TEL-3) draws on -- plus every
|
|
320
|
+
* symptom kind correlated onto those rows, so a cause absorbed into an incident
|
|
321
|
+
* row still counts. Any-kind (no server kind filter); the caller narrows to wedge
|
|
322
|
+
* causes. Column-first with the metadata.focusId fallback for pre-backfill rows.
|
|
360
323
|
*/
|
|
361
324
|
export async function listOpenFocusEscalationKinds(focusId, deps = {}) {
|
|
362
325
|
const call = deps.callApi ?? callApi;
|
|
@@ -368,9 +331,16 @@ export async function listOpenFocusEscalationKinds(focusId, deps = {}) {
|
|
|
368
331
|
.filter((e) => (!e.status || OPEN_ESCALATION_STATUSES.has(e.status)) &&
|
|
369
332
|
(e.focusId === focusId ||
|
|
370
333
|
e.metadata?.focusId === focusId))
|
|
371
|
-
.
|
|
334
|
+
.flatMap((e) => [e.escalationKind ?? '', ...readSymptoms(e.metadata).map((s) => s.escalation_kind ?? '')])
|
|
372
335
|
.filter((k) => k.length > 0);
|
|
373
336
|
}
|
|
337
|
+
/**
|
|
338
|
+
* Read the OPEN (pending or in_review) escalations of `escalationKind` for a
|
|
339
|
+
* focus, returning each row's id + metadata. The read sibling of
|
|
340
|
+
* resolveOpenFocusEscalationsOfKind, for close-halves whose clearing condition
|
|
341
|
+
* is per-row (e.g. review_coverage_incomplete clears only when the focus branch
|
|
342
|
+
* has stabilized at the tip recorded in the row's metadata at filing).
|
|
343
|
+
*/
|
|
374
344
|
export async function listOpenFocusEscalationsOfKind(focusId, escalationKind, deps = {}) {
|
|
375
345
|
const call = deps.callApi ?? callApi;
|
|
376
346
|
const result = await call('escalation_list', {
|
|
@@ -378,44 +348,63 @@ export async function listOpenFocusEscalationsOfKind(focusId, escalationKind, de
|
|
|
378
348
|
limit: 500,
|
|
379
349
|
});
|
|
380
350
|
return (result.escalations ?? [])
|
|
381
|
-
.filter((e) =>
|
|
382
|
-
if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
|
|
383
|
-
return false;
|
|
384
|
-
if (e.focusId === focusId && e.escalationKind === escalationKind)
|
|
385
|
-
return true;
|
|
386
|
-
const meta = e.metadata ?? null;
|
|
387
|
-
return meta?.focusId === focusId && meta?.kind === escalationKind;
|
|
388
|
-
})
|
|
351
|
+
.filter((e) => isOpenFocusKindRow(e, focusId, escalationKind))
|
|
389
352
|
.map((e) => ({ id: e.id, metadata: e.metadata ?? null }));
|
|
390
353
|
}
|
|
391
|
-
|
|
354
|
+
/**
|
|
355
|
+
* The close half for a per-FOCUS escalation kind: resolve every open (pending or
|
|
356
|
+
* in_review) escalation of `escalationKind` for the focus, once the daemon has
|
|
357
|
+
* observed its clearing condition. Mirrors resolveOpenWorktreeDirtyEscalations
|
|
358
|
+
* (the delivery-scoped precedent) for the focus-scoped blocking kinds that
|
|
359
|
+
* applyRespawnGuard reads as a spawn block (team_failure) -- so a machine-filed
|
|
360
|
+
* spawn block clears itself the moment its own condition (genuine progress)
|
|
361
|
+
* clears, and the armed focus resumes spawning with no human act.
|
|
362
|
+
*
|
|
363
|
+
* Best-effort: a resolve failure for one row is logged and skipped, never thrown,
|
|
364
|
+
* so the caller's primary work (advancing a delivery) is not blocked. Returns the
|
|
365
|
+
* count resolved.
|
|
366
|
+
*/
|
|
367
|
+
export async function resolveOpenFocusEscalationsOfKind(focusId, escalationKind, resolutionClass, resolutionNotes, deps = {}) {
|
|
392
368
|
const call = deps.callApi ?? callApi;
|
|
393
369
|
const result = await call('escalation_list', {
|
|
394
370
|
fields: { statuses: ['pending', 'in_review'], escalationKind, focusId },
|
|
395
371
|
limit: 500,
|
|
396
372
|
});
|
|
397
|
-
const open = (result.escalations ?? []).filter((e) =>
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
});
|
|
373
|
+
const open = (result.escalations ?? []).filter((e) => isOpenFocusKindRow(e, focusId, escalationKind));
|
|
374
|
+
return resolveAndRetire(open, { kinds: [escalationKind], scope: { focusId }, resolutionClass }, resolutionNotes, deps, `${escalationKind} escalation for focus ${focusId}`);
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* The shared close-half body: resolve each own-kind row (best-effort per row), then retire the
|
|
378
|
+
* clearing's ABSORBED symptoms from the scope's other open rows (reusing `rows` when given, else
|
|
379
|
+
* reading them) so no symptom outlives its condition. Returns the count resolved.
|
|
380
|
+
*/
|
|
381
|
+
async function resolveAndRetire(own, clearing, resolutionNotes, deps, label, rows) {
|
|
407
382
|
let resolved = 0;
|
|
408
|
-
for (const e of
|
|
383
|
+
for (const e of own) {
|
|
409
384
|
try {
|
|
410
|
-
await markEscalationResolved(e.id, resolutionNotes, deps
|
|
385
|
+
await markEscalationResolved(e.id, clearing.resolutionClass, resolutionNotes, deps);
|
|
411
386
|
resolved++;
|
|
412
387
|
}
|
|
413
388
|
catch (err) {
|
|
414
|
-
log.warn(`[escalations] Failed to auto-resolve ${
|
|
389
|
+
log.warn(`[escalations] Failed to auto-resolve ${label} (escalation ${e.id}): ${err.message}`);
|
|
415
390
|
}
|
|
416
391
|
}
|
|
392
|
+
await retireAbsorbedSymptoms(clearing, { ...(rows ? { rows } : {}), skipIds: own.map((e) => e.id) }, deps);
|
|
417
393
|
return resolved;
|
|
418
394
|
}
|
|
395
|
+
/**
|
|
396
|
+
* Retire a clearing's absorbed symptoms over the API (incident-correlation.ts retireClearedSymptoms,
|
|
397
|
+
* rule 6) -- for the resolve helpers here and for sweeps elsewhere that resolve their own rows.
|
|
398
|
+
* Best-effort: logs, never throws. Returns the count of symptoms retired.
|
|
399
|
+
*/
|
|
400
|
+
export async function retireAbsorbedSymptoms(clearing, opts = {}, deps = {}) {
|
|
401
|
+
const outcome = await retireClearedSymptoms(clearing, incidentIoOver(deps.callApi ?? callApi), opts);
|
|
402
|
+
for (const warning of outcome.warnings)
|
|
403
|
+
log.warn(`[escalations] ${warning}`);
|
|
404
|
+
if (outcome.retired > 0)
|
|
405
|
+
log.info(`[escalations] Retired ${outcome.retired} absorbed symptom(s) whose condition cleared.`);
|
|
406
|
+
return outcome.retired;
|
|
407
|
+
}
|
|
419
408
|
/**
|
|
420
409
|
* The escalation kinds that describe a focus that cannot converge -- the review
|
|
421
410
|
* hand-off breaker family plus team_failure. When the focus DOES converge, each
|
|
@@ -457,16 +446,8 @@ export async function resolveConvergedFocusEscalations(focusId, resolutionNotes,
|
|
|
457
446
|
const kind = e.escalationKind ?? meta?.kind ?? '';
|
|
458
447
|
return FOCUS_CONVERGENCE_TERMINATED_KINDS.has(kind) || meta?.terminates_when === 'focus_converged';
|
|
459
448
|
});
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
try {
|
|
463
|
-
await markEscalationResolved(e.id, resolutionNotes, deps, 'auto_swept');
|
|
464
|
-
resolved++;
|
|
465
|
-
}
|
|
466
|
-
catch (err) {
|
|
467
|
-
log.warn(`[escalations] Failed to auto-sweep converged-focus escalation ${e.id} for focus ${focusId}: ${err.message}`);
|
|
468
|
-
}
|
|
469
|
-
}
|
|
449
|
+
const clearing = { kinds: [...FOCUS_CONVERGENCE_TERMINATED_KINDS], scope: { focusId }, resolutionClass: 'auto_swept' };
|
|
450
|
+
const resolved = await resolveAndRetire(open, clearing, resolutionNotes, deps, `converged-focus escalation for focus ${focusId}`, result.escalations ?? []);
|
|
470
451
|
if (resolved > 0) {
|
|
471
452
|
log.info(`[escalations] Auto-swept ${resolved} convergence-terminated escalation(s) for focus ${focusId}.`);
|
|
472
453
|
}
|
|
@@ -489,8 +470,11 @@ export async function resolveConvergedFocusEscalations(focusId, resolutionNotes,
|
|
|
489
470
|
* actually resolves -- e.g. a clean worktree clears advance_blocked /
|
|
490
471
|
* merge_refused_dirty but NOT merge_conflict (a content conflict is not a dirty
|
|
491
472
|
* worktree), and a successful merge clears merge_conflict.
|
|
473
|
+
*
|
|
474
|
+
* `resolutionClass` is REQUIRED: the class of actor that observed the clearing
|
|
475
|
+
* (the daemon's condition-cleared callers pass 'auto_swept').
|
|
492
476
|
*/
|
|
493
|
-
export async function resolveOpenWorktreeDirtyEscalations(focusId, kinds, resolutionNotes = 'Auto-resolved by the daemon: the worktree-dirty condition cleared.', deps = {}) {
|
|
477
|
+
export async function resolveOpenWorktreeDirtyEscalations(focusId, kinds, resolutionClass, resolutionNotes = 'Auto-resolved by the daemon: the worktree-dirty condition cleared.', deps = {}) {
|
|
494
478
|
const call = deps.callApi ?? callApi;
|
|
495
479
|
const kindSet = new Set(kinds);
|
|
496
480
|
const result = await call('escalation_list', {
|
|
@@ -498,17 +482,7 @@ export async function resolveOpenWorktreeDirtyEscalations(focusId, kinds, resolu
|
|
|
498
482
|
limit: 500,
|
|
499
483
|
});
|
|
500
484
|
const open = (result.escalations ?? []).filter((e) => isOpenWorktreeDirtyMatch(e, focusId, kindSet));
|
|
501
|
-
|
|
502
|
-
for (const e of open) {
|
|
503
|
-
try {
|
|
504
|
-
await markEscalationResolved(e.id, resolutionNotes, deps);
|
|
505
|
-
resolved++;
|
|
506
|
-
}
|
|
507
|
-
catch (err) {
|
|
508
|
-
log.warn(`[escalations] Failed to auto-resolve worktree-dirty escalation ${e.id} for focus ${focusId}: ${err.message}`);
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
return resolved;
|
|
485
|
+
return resolveAndRetire(open, { kinds, scope: { focusId }, resolutionClass }, resolutionNotes, deps, `worktree-dirty escalation for focus ${focusId}`, result.escalations ?? []);
|
|
512
486
|
}
|
|
513
487
|
/**
|
|
514
488
|
* Returns true when an OPEN (status pending or in_review) PRD machine escalation
|
|
@@ -548,16 +522,24 @@ export async function hasOpenPrdEscalation(prdId, discriminator) {
|
|
|
548
522
|
});
|
|
549
523
|
}
|
|
550
524
|
/**
|
|
551
|
-
* Mark an escalation as resolved
|
|
525
|
+
* Mark an escalation as resolved, recording WHO actually resolved it.
|
|
526
|
+
*
|
|
527
|
+
* `resolutionClass` is REQUIRED and typed: every daemon close path must state the
|
|
528
|
+
* class of actor it observed (a condition-cleared sweep or a promotion/demotion
|
|
529
|
+
* refile is 'auto_swept'; an agent's own progress is 'agent_session'). It feeds
|
|
530
|
+
* the routing-quality mis-route measurement (queries/routing-quality.ts), which
|
|
531
|
+
* differences a filing's declared disposition against this recorded class --
|
|
532
|
+
* when it was optional no caller passed it, so every resolved row read null and
|
|
533
|
+
* the measurement fail-opened forever on judged=0.
|
|
552
534
|
*/
|
|
553
|
-
export async function markEscalationResolved(escalationId, resolutionNotes, deps = {}
|
|
535
|
+
export async function markEscalationResolved(escalationId, resolutionClass, resolutionNotes, deps = {}) {
|
|
554
536
|
const call = deps.callApi ?? callApi;
|
|
555
537
|
await call('escalation_update', {
|
|
556
538
|
escalationId,
|
|
557
539
|
fields: {
|
|
558
540
|
status: 'resolved',
|
|
541
|
+
resolutionClass,
|
|
559
542
|
...(resolutionNotes ? { resolutionNotes } : {}),
|
|
560
|
-
...(resolutionClass ? { resolutionClass } : {}),
|
|
561
543
|
},
|
|
562
544
|
});
|
|
563
545
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalations.js","sourceRoot":"","sources":["../../src/queries/escalations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"escalations.js","sourceRoot":"","sources":["../../src/queries/escalations.ts"],"names":[],"mappings":"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"}
|