@telora/daemon 0.21.98 → 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 +6 -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/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 +5 -2
- 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-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +10 -6
- 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 +18 -1
- 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 +71 -0
- 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 +19 -147
- package/dist/delivery/delivery-lifecycle.js.map +1 -1
- package/dist/delivery/delivery-merge-ops.d.ts +46 -0
- package/dist/delivery/delivery-merge-ops.d.ts.map +1 -0
- package/dist/delivery/delivery-merge-ops.js +154 -0
- package/dist/delivery/delivery-merge-ops.js.map +1 -0
- package/dist/delivery/delivery-reconciler-apply.d.ts +28 -0
- package/dist/delivery/delivery-reconciler-apply.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler-apply.js +30 -0
- package/dist/delivery/delivery-reconciler-apply.js.map +1 -1
- package/dist/delivery/delivery-reconciler.d.ts +7 -2
- package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler.js +34 -5
- package/dist/delivery/delivery-reconciler.js.map +1 -1
- package/dist/delivery/external-hold-surface.d.ts +32 -0
- package/dist/delivery/external-hold-surface.d.ts.map +1 -0
- package/dist/delivery/external-hold-surface.js +67 -0
- package/dist/delivery/external-hold-surface.js.map +1 -0
- package/dist/delivery/external-hold.d.ts +21 -0
- package/dist/delivery/external-hold.d.ts.map +1 -1
- package/dist/delivery/external-hold.js +40 -5
- package/dist/delivery/external-hold.js.map +1 -1
- package/dist/delivery/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.map +1 -1
- package/dist/delivery/wait-reachability.js +11 -0
- package/dist/delivery/wait-reachability.js.map +1 -1
- package/dist/directive/close-loop-dispatcher.d.ts +16 -263
- package/dist/directive/close-loop-dispatcher.d.ts.map +1 -1
- package/dist/directive/close-loop-dispatcher.js +21 -259
- package/dist/directive/close-loop-dispatcher.js.map +1 -1
- package/dist/directive/directive-dispatch.d.ts +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 +103 -22
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +125 -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/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 +23 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +6 -0
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts +36 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +45 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/guards.d.ts +10 -0
- package/dist/queries/guards.d.ts.map +1 -1
- package/dist/queries/guards.js +14 -1
- package/dist/queries/guards.js.map +1 -1
- package/dist/queries/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 +51 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +34 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/verification.d.ts +5 -6
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +5 -6
- package/dist/queries/verification.js.map +1 -1
- package/dist/resolvers/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/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/spawn-cooldown.d.ts +41 -7
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +47 -0
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +33 -1
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/verify/stall-detectors.d.ts +20 -8
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +27 -46
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/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 +1 -1
- package/dist/directive/close-loop-stage.d.ts +0 -50
- package/dist/directive/close-loop-stage.d.ts.map +0 -1
- package/dist/directive/close-loop-stage.js +0 -210
- package/dist/directive/close-loop-stage.js.map +0 -1
- package/dist/focus-stage-lifecycle/review-convergence.d.ts +0 -133
- package/dist/focus-stage-lifecycle/review-convergence.d.ts.map +0 -1
- package/dist/focus-stage-lifecycle/review-convergence.js +0 -237
- package/dist/focus-stage-lifecycle/review-convergence.js.map +0 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evidence-driven demotion of a stall filing back to the machine lane (TEL-3 of
|
|
3
|
+
* "A stall is diagnosed before it is handed to a human").
|
|
4
|
+
*
|
|
5
|
+
* The agent_resolvable PROMOTION sweep (queries/agent-resolvable-promotion.ts)
|
|
6
|
+
* moves ownership ONE way -- machine -> human on open-age. Nothing moved it back:
|
|
7
|
+
* a filing that a human took but that is actually machine-remediable could only
|
|
8
|
+
* ratchet toward the human. This is the inverse: an OPEN needs_intent team_failure
|
|
9
|
+
* whose recorded evidence shows a machine-remediable cause is returned to the
|
|
10
|
+
* machine (disposition agent_resolvable), where the agent-resolvable transport
|
|
11
|
+
* rides it into the next spawn.
|
|
12
|
+
*
|
|
13
|
+
* Evidence = the SAME classifier TEL-1 filed it with (statedCauseNeedsIntent).
|
|
14
|
+
* A team_failure-kind row disposed needs_intent is filed that way ONLY when a
|
|
15
|
+
* human-decision cause matched, so a row here whose recorded statedCause is NOT a
|
|
16
|
+
* human decision (a pre-TEL-1 default, or a misroute) is demotable; a row whose
|
|
17
|
+
* cause IS a genuine build-changing decision is left with the human. Gate-stuck
|
|
18
|
+
* filings are kind daemon_gate_stuck (needs_operator), never team_failure, so they
|
|
19
|
+
* are excluded by construction -- an operator-owned hold is never demoted.
|
|
20
|
+
*
|
|
21
|
+
* Deploy-safe like the promotion: escalation_update cannot rewrite disposition
|
|
22
|
+
* without an edge deploy, so a demotion RESOLVES the source needs_intent row and
|
|
23
|
+
* REFILES the same content as an agent_resolvable escalation (idempotent on a
|
|
24
|
+
* cause key derived from the source id). Best-effort per row; never throws.
|
|
25
|
+
*/
|
|
26
|
+
import { type DemotableTeamFailureItem } from '../queries/issues.js';
|
|
27
|
+
import { type FileEscalationIdempotentParams, type FileEscalationIdempotentResult } from '../queries/escalation-suppression.js';
|
|
28
|
+
/** escalation_kind preserved on a demoted (formerly needs_intent) team_failure. */
|
|
29
|
+
export declare const MACHINE_REMEDIABLE_DEMOTED_KIND = "team_failure";
|
|
30
|
+
/** The cause key that makes a demotion refile idempotent (one per source filing). */
|
|
31
|
+
export declare function machineRemediableDemotionCauseKey(originalEscalationId: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Pure: split open needs_intent team_failures into the ones a HUMAN still owns
|
|
34
|
+
* (their recorded cause names a build-changing decision) and the ones to DEMOTE
|
|
35
|
+
* (no human-decision cause -> machine-remediable). Exported for direct testing.
|
|
36
|
+
*/
|
|
37
|
+
export declare function partitionDemotable(items: readonly DemotableTeamFailureItem[]): {
|
|
38
|
+
keep: DemotableTeamFailureItem[];
|
|
39
|
+
demote: DemotableTeamFailureItem[];
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Pure: build the agent_resolvable refile params for a needs_intent filing whose
|
|
43
|
+
* evidence shows a machine-remediable cause. Preserves the original description +
|
|
44
|
+
* kind so the incoming team sees the full context; anchored to the focus when one
|
|
45
|
+
* is present.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildDemotionRefileParams(item: DemotableTeamFailureItem, ctx: {
|
|
48
|
+
organizationId: string;
|
|
49
|
+
focusId?: string;
|
|
50
|
+
productId?: string;
|
|
51
|
+
}): FileEscalationIdempotentParams;
|
|
52
|
+
/** Counts a single demotion sweep returns (for tick logging). */
|
|
53
|
+
export interface MachineRemediableDemotionCounts {
|
|
54
|
+
scanned: number;
|
|
55
|
+
demoted: number;
|
|
56
|
+
}
|
|
57
|
+
/** Injected IO for the demotion sweep (real defaults; tests inject stubs). */
|
|
58
|
+
export interface MachineRemediableDemotionDeps {
|
|
59
|
+
listOpenDemotable: () => Promise<DemotableTeamFailureItem[]>;
|
|
60
|
+
markResolved: (id: string, notes?: string) => Promise<void>;
|
|
61
|
+
file: (params: FileEscalationIdempotentParams) => Promise<FileEscalationIdempotentResult>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Sweep the org's OPEN needs_intent team_failures and return ownership to the
|
|
65
|
+
* machine for every one whose recorded evidence is machine-remediable: refile the
|
|
66
|
+
* same content as agent_resolvable, then resolve the source needs_intent row.
|
|
67
|
+
* Idempotent (shared cause key + source resolve) and best-effort per filing -- a
|
|
68
|
+
* failure is logged and the source left open for the next sweep, never thrown, so
|
|
69
|
+
* one bad row never aborts the sweep. Spawn-independent by design: a needs_intent
|
|
70
|
+
* team_failure BLOCKS the respawn (TEL-2 keeps human-owned holds blocking), so the
|
|
71
|
+
* demotion cannot ride a spawn -- it must run from this org loop.
|
|
72
|
+
*/
|
|
73
|
+
export declare function sweepMachineRemediableDemotions(deps?: Partial<MachineRemediableDemotionDeps>): Promise<MachineRemediableDemotionCounts>;
|
|
74
|
+
//# sourceMappingURL=machine-remediable-demotion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-remediable-demotion.d.ts","sourceRoot":"","sources":["../../src/completion/machine-remediable-demotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACpC,MAAM,sCAAsC,CAAC;AAO9C,mFAAmF;AACnF,eAAO,MAAM,+BAA+B,iBAAiB,CAAC;AAE9D,qFAAqF;AACrF,wBAAgB,iCAAiC,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,wBAAwB,EAAE,GACzC;IAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;IAAC,MAAM,EAAE,wBAAwB,EAAE,CAAA;CAAE,CAW1E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,8BAA8B,CAiChC;AAED,iEAAiE;AACjE,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,6BAA6B;IAC5C,iBAAiB,EAAE,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC7D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAC3F;AAUD;;;;;;;;;GASG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,GAAE,OAAO,CAAC,6BAA6B,CAAM,GAChD,OAAO,CAAC,+BAA+B,CAAC,CA4C1C"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evidence-driven demotion of a stall filing back to the machine lane (TEL-3 of
|
|
3
|
+
* "A stall is diagnosed before it is handed to a human").
|
|
4
|
+
*
|
|
5
|
+
* The agent_resolvable PROMOTION sweep (queries/agent-resolvable-promotion.ts)
|
|
6
|
+
* moves ownership ONE way -- machine -> human on open-age. Nothing moved it back:
|
|
7
|
+
* a filing that a human took but that is actually machine-remediable could only
|
|
8
|
+
* ratchet toward the human. This is the inverse: an OPEN needs_intent team_failure
|
|
9
|
+
* whose recorded evidence shows a machine-remediable cause is returned to the
|
|
10
|
+
* machine (disposition agent_resolvable), where the agent-resolvable transport
|
|
11
|
+
* rides it into the next spawn.
|
|
12
|
+
*
|
|
13
|
+
* Evidence = the SAME classifier TEL-1 filed it with (statedCauseNeedsIntent).
|
|
14
|
+
* A team_failure-kind row disposed needs_intent is filed that way ONLY when a
|
|
15
|
+
* human-decision cause matched, so a row here whose recorded statedCause is NOT a
|
|
16
|
+
* human decision (a pre-TEL-1 default, or a misroute) is demotable; a row whose
|
|
17
|
+
* cause IS a genuine build-changing decision is left with the human. Gate-stuck
|
|
18
|
+
* filings are kind daemon_gate_stuck (needs_operator), never team_failure, so they
|
|
19
|
+
* are excluded by construction -- an operator-owned hold is never demoted.
|
|
20
|
+
*
|
|
21
|
+
* Deploy-safe like the promotion: escalation_update cannot rewrite disposition
|
|
22
|
+
* without an edge deploy, so a demotion RESOLVES the source needs_intent row and
|
|
23
|
+
* REFILES the same content as an agent_resolvable escalation (idempotent on a
|
|
24
|
+
* cause key derived from the source id). Best-effort per row; never throws.
|
|
25
|
+
*/
|
|
26
|
+
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
|
|
27
|
+
import { markEscalationResolved as defaultMarkEscalationResolved, listOpenDemotableTeamFailureForOrg as defaultListOpenDemotable, } from '../queries/issues.js';
|
|
28
|
+
import { fileEscalationIdempotent as defaultFileEscalationIdempotent, } from '../queries/escalation-suppression.js';
|
|
29
|
+
import { computeCauseKey } from '../queries/cause-key.js';
|
|
30
|
+
import { statedCauseNeedsIntent } from './event-escalations.js';
|
|
31
|
+
import { createLogger } from '../shell/log.js';
|
|
32
|
+
const log = createLogger({ module: 'escalations' });
|
|
33
|
+
/** escalation_kind preserved on a demoted (formerly needs_intent) team_failure. */
|
|
34
|
+
export const MACHINE_REMEDIABLE_DEMOTED_KIND = 'team_failure';
|
|
35
|
+
/** The cause key that makes a demotion refile idempotent (one per source filing). */
|
|
36
|
+
export function machineRemediableDemotionCauseKey(originalEscalationId) {
|
|
37
|
+
return computeCauseKey('team_failure_demoted', { escalationId: originalEscalationId });
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Pure: split open needs_intent team_failures into the ones a HUMAN still owns
|
|
41
|
+
* (their recorded cause names a build-changing decision) and the ones to DEMOTE
|
|
42
|
+
* (no human-decision cause -> machine-remediable). Exported for direct testing.
|
|
43
|
+
*/
|
|
44
|
+
export function partitionDemotable(items) {
|
|
45
|
+
const keep = [];
|
|
46
|
+
const demote = [];
|
|
47
|
+
for (const item of items) {
|
|
48
|
+
if (statedCauseNeedsIntent(item.statedCause)) {
|
|
49
|
+
keep.push(item); // a genuine human decision -- leave it with the human
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
demote.push(item); // no human-decision evidence -- return to the machine
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { keep, demote };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Pure: build the agent_resolvable refile params for a needs_intent filing whose
|
|
59
|
+
* evidence shows a machine-remediable cause. Preserves the original description +
|
|
60
|
+
* kind so the incoming team sees the full context; anchored to the focus when one
|
|
61
|
+
* is present.
|
|
62
|
+
*/
|
|
63
|
+
export function buildDemotionRefileParams(item, ctx) {
|
|
64
|
+
return {
|
|
65
|
+
causeKey: machineRemediableDemotionCauseKey(item.id),
|
|
66
|
+
organizationId: ctx.organizationId,
|
|
67
|
+
issueId: null,
|
|
68
|
+
reasonType: ESCALATION_REASONS.BLOCKED_BY_EXTERNAL,
|
|
69
|
+
// Evidence shows the cause is machine-remediable -> return it to the machine
|
|
70
|
+
// lane. The agent-resolvable transport rides it into the next coding spawn,
|
|
71
|
+
// and the promotion sweep re-escalates it to a human only if it survives.
|
|
72
|
+
disposition: ESCALATION_DISPOSITIONS.AGENT_RESOLVABLE,
|
|
73
|
+
anchor: ctx.focusId ? { focusId: ctx.focusId } : {},
|
|
74
|
+
...(ctx.productId ? { productId: ctx.productId } : {}),
|
|
75
|
+
escalationKind: MACHINE_REMEDIABLE_DEMOTED_KIND,
|
|
76
|
+
description: `A no-progress stall filed to the intent owner has been RETURNED to the ` +
|
|
77
|
+
`machine: its recorded cause names no build-changing decision, so it is ` +
|
|
78
|
+
`machine-remediable and rides into the focus's next coding spawn.\n\n` +
|
|
79
|
+
`**Demoted from:** needs_intent (team_failure)\n` +
|
|
80
|
+
`**Original filing:** ${item.id}\n\n` +
|
|
81
|
+
`${item.description}`,
|
|
82
|
+
whatWasTried: `The stall was re-classified from its own recorded stated cause; no human ` +
|
|
83
|
+
`decision is required, so ownership returned to the machine (needs_intent -> ` +
|
|
84
|
+
`agent_resolvable).`,
|
|
85
|
+
helpNeeded: `None from a human yet -- the incoming coding team will attempt this. It is ` +
|
|
86
|
+
`re-escalated to an operator only if it survives the agent-resolvable window.`,
|
|
87
|
+
metadata: {
|
|
88
|
+
cause: MACHINE_REMEDIABLE_DEMOTED_KIND,
|
|
89
|
+
demotedFrom: 'needs_intent',
|
|
90
|
+
originalEscalationId: item.id,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function defaultDeps() {
|
|
95
|
+
return {
|
|
96
|
+
listOpenDemotable: defaultListOpenDemotable,
|
|
97
|
+
markResolved: defaultMarkEscalationResolved,
|
|
98
|
+
file: defaultFileEscalationIdempotent,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Sweep the org's OPEN needs_intent team_failures and return ownership to the
|
|
103
|
+
* machine for every one whose recorded evidence is machine-remediable: refile the
|
|
104
|
+
* same content as agent_resolvable, then resolve the source needs_intent row.
|
|
105
|
+
* Idempotent (shared cause key + source resolve) and best-effort per filing -- a
|
|
106
|
+
* failure is logged and the source left open for the next sweep, never thrown, so
|
|
107
|
+
* one bad row never aborts the sweep. Spawn-independent by design: a needs_intent
|
|
108
|
+
* team_failure BLOCKS the respawn (TEL-2 keeps human-owned holds blocking), so the
|
|
109
|
+
* demotion cannot ride a spawn -- it must run from this org loop.
|
|
110
|
+
*/
|
|
111
|
+
export async function sweepMachineRemediableDemotions(deps = {}) {
|
|
112
|
+
const d = { ...defaultDeps(), ...deps };
|
|
113
|
+
const open = await d.listOpenDemotable();
|
|
114
|
+
const { demote } = partitionDemotable(open);
|
|
115
|
+
let demoted = 0;
|
|
116
|
+
for (const item of demote) {
|
|
117
|
+
if (!item.organizationId) {
|
|
118
|
+
log.warn(`[escalations] needs_intent team_failure ${item.id} is machine-remediable but ` +
|
|
119
|
+
`lacks an org anchor; cannot refile (skipping)`);
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const ctx = {
|
|
123
|
+
organizationId: item.organizationId,
|
|
124
|
+
...(item.focusId ? { focusId: item.focusId } : {}),
|
|
125
|
+
...(item.productId ? { productId: item.productId } : {}),
|
|
126
|
+
};
|
|
127
|
+
try {
|
|
128
|
+
const result = await d.file(buildDemotionRefileParams(item, ctx));
|
|
129
|
+
// Only retire the source once the agent_resolvable refile is in place (filed
|
|
130
|
+
// OR already suppressed by a prior demotion) -- never resolve without a
|
|
131
|
+
// landing spot, which would drop the signal entirely.
|
|
132
|
+
if (result.filed || result.suppressed) {
|
|
133
|
+
await d.markResolved(item.id, `Returned to the machine: the recorded cause is machine-remediable, so ` +
|
|
134
|
+
`ownership was demoted needs_intent -> agent_resolvable.`);
|
|
135
|
+
demoted++;
|
|
136
|
+
log.info(`[escalations] Demoted needs_intent team_failure ${item.id} to agent_resolvable ` +
|
|
137
|
+
`(focus ${item.focusId ?? '<none>'})`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
log.warn(`[escalations] Failed to demote needs_intent team_failure ${item.id}: ${err.message}`);
|
|
142
|
+
// Left open; the next sweep retries.
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return { scanned: open.length, demoted };
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=machine-remediable-demotion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-remediable-demotion.js","sourceRoot":"","sources":["../../src/completion/machine-remediable-demotion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAIpI,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAyB1E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;IAGpD,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAKrD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,uBAAuB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAGzD,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IAKvD,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;IAMnE,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IACzE,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,8BAA8B,EAAE,OAAO,8BAA8B,CAAC;IACtE,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;CAC3C;AAyBD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD,OAAO,EACL,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,gGAAgG;AAChG,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE,cAAsC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAigBf"}
|
|
@@ -21,10 +21,11 @@ import { resolveReviewCycleCap, resolveReviewHandoffCap } from '../verify/stall-
|
|
|
21
21
|
import { createEscalation, hasOpenFocusEscalation, findOpenOperatorHoldForDelivery, getDeliveryIssues } from '../queries/issues.js';
|
|
22
22
|
import { resolveOperatorHold, writeOperatorHoldGateState, describeOperatorHold } from '../delivery/operator-hold.js';
|
|
23
23
|
import { resolveExternalHold, makeDeferredRequestClosureEvaluator, describeExternalHold } from '../delivery/external-hold.js';
|
|
24
|
+
import { surfaceStaleReferenceLessExternalHold } from '../delivery/external-hold-surface.js';
|
|
24
25
|
import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
25
26
|
import { resolveShortfallHold, writeShortfallGateState, describeShortfallHold, } from './review-exit-shortfall.js';
|
|
26
27
|
import { recordReviewCycleAndMaybeEscalate, fileCoverageIncompleteEscalation, fileGapsWithoutIssueEscalation, fileMissingReportNotice, recordHandoffAndMaybeTerminate, } from './review-exit-escalations.js';
|
|
27
|
-
import {
|
|
28
|
+
import { forceFullPassReviewFocuses, recordBelowCoverageDrift, resetCoverageDriftState } from './coverage-drift-state.js';
|
|
28
29
|
import { reviewFiledIssueExists, blockingReviewFiledIssueExists, filterDeferrableReviewNotes, } from './review-defect-detector.js';
|
|
29
30
|
import { createLogger } from '../shell/log.js';
|
|
30
31
|
const log = createLogger({ module: 'focus-executor' });
|
|
@@ -273,6 +274,10 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
273
274
|
// not by a human resolve. Same fail-closed shape as the operator-hold gate.
|
|
274
275
|
if (target === DELIVERY_STATUS.DONE) {
|
|
275
276
|
const externalHold = await resolveExternalHold({ updateDeliveryStatus: deps.updateDeliveryStatus }, d.id, d.gateState, makeDeferredRequestClosureEvaluator(productId));
|
|
277
|
+
// Surface (or clear) a stale reference-less hold as operator-visible state
|
|
278
|
+
// (TEL-5, delivery 2): a reference-less hold cannot self-clear, so once it
|
|
279
|
+
// is age-bounded stale it must not be a silent permanent hold.
|
|
280
|
+
surfaceStaleReferenceLessExternalHold(d.id, d.name, externalHold.staleReferenceLess ?? false, externalHold.hold);
|
|
276
281
|
if (externalHold.held) {
|
|
277
282
|
externalHeldAny = true;
|
|
278
283
|
log.info(`[focus-executor] Delivery "${d.name}" NOT moved to done -- ${describeExternalHold(externalHold)}. ` +
|
|
@@ -412,9 +417,9 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
412
417
|
}
|
|
413
418
|
// A routed completion means the drift streak (if any) is broken: either
|
|
414
419
|
// coverage was complete (auto-approve) or defects routed the delivery. Clear
|
|
415
|
-
// the per-focus below-coverage counter so a future drift starts fresh
|
|
416
|
-
|
|
417
|
-
|
|
420
|
+
// the per-focus below-coverage counter so a future drift starts fresh (this
|
|
421
|
+
// also writes the cleared budget through durably).
|
|
422
|
+
resetCoverageDriftState(focusId);
|
|
418
423
|
// A routed exit is progress: the routes-nothing hand-off streak is broken, so
|
|
419
424
|
// reset the durable hand-off counter to 0 (only when it stands above 0, to
|
|
420
425
|
// avoid a needless write on every routed exit). Best-effort -- never aborts
|
|
@@ -515,8 +520,7 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
515
520
|
log.warn(`setReviewedThroughSha (drift) failed for "${focusName}": ${err.message}`);
|
|
516
521
|
}
|
|
517
522
|
}
|
|
518
|
-
const streak = (
|
|
519
|
-
belowCoverageDriftCounts.set(focusId, streak);
|
|
523
|
+
const streak = recordBelowCoverageDrift(focusId);
|
|
520
524
|
if (streak >= 2) {
|
|
521
525
|
// Drift persisted after the full-pass respawn -- an operator must look.
|
|
522
526
|
await fileCoverageIncompleteEscalation(deps, escalationCtx, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-phase.js","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-exit-phase.js","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Focus-scope anchored-injection retirement on the lifecycle that ACTUALLY runs
|
|
3
|
+
* (the derived winding_down settle), TEL-5 of "One focus lifecycle, terminating
|
|
4
|
+
* at winding_down".
|
|
5
|
+
*
|
|
6
|
+
* The anchored-injection sweep used to live ONLY inside the machine-completion
|
|
7
|
+
* family (directive/close-loop-dispatcher.ts advanceFocusToDoneWithSweep), which
|
|
8
|
+
* fires only when the product_focuses.stage column reaches 'close_loop'. A focus
|
|
9
|
+
* that settles (all deliveries terminal -> derived phase winding_down) WITHOUT
|
|
10
|
+
* the stage column reaching close_loop -- e.g. review disabled, or a delivery
|
|
11
|
+
* exiting via review rather than the per-delivery verify gate -- never had its
|
|
12
|
+
* anchored injections retired, so the focus completed with a stale reality tree
|
|
13
|
+
* whose FRT overlays stayed frozen.
|
|
14
|
+
*
|
|
15
|
+
* This runs the SAME sweep (planInjectionSweep + executeSweep +
|
|
16
|
+
* buildWritebackVerify, reused verbatim -- the FRT writeback is unrecoverable if
|
|
17
|
+
* reimplemented) when the DERIVED phase reaches winding_down, and writes NO focus
|
|
18
|
+
* stage: completion stays human-owned (the machine never writes focus.stage =
|
|
19
|
+
* 'done'). Idempotent + best-effort: planInjectionSweep skips injections already
|
|
20
|
+
* 'verified', so a re-run once the tree is settled is an empty-plan no-op; every
|
|
21
|
+
* I/O failure holds (retries next settle) rather than throwing.
|
|
22
|
+
*/
|
|
23
|
+
import type { FocusDeliveryInfo } from '../types/index.js';
|
|
24
|
+
/** The per-injection snapshot the sweep reads (status + owning tree id). */
|
|
25
|
+
interface InjectionNodeSnapshot {
|
|
26
|
+
id: string;
|
|
27
|
+
injectionStatus: string | null;
|
|
28
|
+
realityTreeId?: string | null;
|
|
29
|
+
}
|
|
30
|
+
/** I/O seam so the sweep unit-tests with plain stubs (no mock.module). */
|
|
31
|
+
export interface SettleSweepDeps {
|
|
32
|
+
/** Current injection-status snapshot for the focus (reality_tree_focus_injections). */
|
|
33
|
+
fetchInjectionSnapshot: (focusId: string) => Promise<InjectionNodeSnapshot[]>;
|
|
34
|
+
/** The per-injection FRT writeback verify, keyed by owning tree id. */
|
|
35
|
+
buildVerify: (treeIdByInjection: ReadonlyMap<string, string>) => (injectionId: string, evidence: string) => Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
export interface SettleSweepOutcome {
|
|
38
|
+
planSize: number;
|
|
39
|
+
verified: number;
|
|
40
|
+
failedAt?: {
|
|
41
|
+
injectionId: string;
|
|
42
|
+
error: Error;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Retire the focus's anchored injections whose anchoring delivery closed
|
|
47
|
+
* successfully but whose injection is not yet 'verified', at the winding_down
|
|
48
|
+
* settle. Writes no focus stage. Returns the sweep tally; never throws.
|
|
49
|
+
*/
|
|
50
|
+
export declare function sweepAnchoredInjectionsOnSettle(focus: {
|
|
51
|
+
focus_id: string;
|
|
52
|
+
focus_name: string;
|
|
53
|
+
}, deliveries: FocusDeliveryInfo[], deps?: SettleSweepDeps): Promise<SettleSweepOutcome>;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=settle-injection-sweep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settle-injection-sweep.d.ts","sourceRoot":"","sources":["../../src/completion/settle-injection-sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAa3D,4EAA4E;AAC5E,UAAU,qBAAqB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC9E,uEAAuE;IACvE,WAAW,EAAE,CACX,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3C,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAYD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAsB,+BAA+B,CACnD,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,UAAU,EAAE,iBAAiB,EAAE,EAC/B,IAAI,GAAE,eAA6B,GAClC,OAAO,CAAC,kBAAkB,CAAC,CAwD7B"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Focus-scope anchored-injection retirement on the lifecycle that ACTUALLY runs
|
|
3
|
+
* (the derived winding_down settle), TEL-5 of "One focus lifecycle, terminating
|
|
4
|
+
* at winding_down".
|
|
5
|
+
*
|
|
6
|
+
* The anchored-injection sweep used to live ONLY inside the machine-completion
|
|
7
|
+
* family (directive/close-loop-dispatcher.ts advanceFocusToDoneWithSweep), which
|
|
8
|
+
* fires only when the product_focuses.stage column reaches 'close_loop'. A focus
|
|
9
|
+
* that settles (all deliveries terminal -> derived phase winding_down) WITHOUT
|
|
10
|
+
* the stage column reaching close_loop -- e.g. review disabled, or a delivery
|
|
11
|
+
* exiting via review rather than the per-delivery verify gate -- never had its
|
|
12
|
+
* anchored injections retired, so the focus completed with a stale reality tree
|
|
13
|
+
* whose FRT overlays stayed frozen.
|
|
14
|
+
*
|
|
15
|
+
* This runs the SAME sweep (planInjectionSweep + executeSweep +
|
|
16
|
+
* buildWritebackVerify, reused verbatim -- the FRT writeback is unrecoverable if
|
|
17
|
+
* reimplemented) when the DERIVED phase reaches winding_down, and writes NO focus
|
|
18
|
+
* stage: completion stays human-owned (the machine never writes focus.stage =
|
|
19
|
+
* 'done'). Idempotent + best-effort: planInjectionSweep skips injections already
|
|
20
|
+
* 'verified', so a re-run once the tree is settled is an empty-plan no-op; every
|
|
21
|
+
* I/O failure holds (retries next settle) rather than throwing.
|
|
22
|
+
*/
|
|
23
|
+
import { getAnchoringDeliveries, planInjectionSweep, executeSweep, } from '../directive/close-loop-dispatcher.js';
|
|
24
|
+
import { buildWritebackVerify } from '../queries/verification.js';
|
|
25
|
+
import { callApi } from '../queries/shared.js';
|
|
26
|
+
import { createLogger } from '../shell/log.js';
|
|
27
|
+
const log = createLogger({ module: 'settle-injection-sweep' });
|
|
28
|
+
const defaultDeps = {
|
|
29
|
+
fetchInjectionSnapshot: async (focusId) => {
|
|
30
|
+
const result = await callApi('reality_tree_focus_injections', { focusId });
|
|
31
|
+
return (result.items ?? []).map((i) => i.injection);
|
|
32
|
+
},
|
|
33
|
+
buildVerify: (treeIdByInjection) => buildWritebackVerify(treeIdByInjection),
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Retire the focus's anchored injections whose anchoring delivery closed
|
|
37
|
+
* successfully but whose injection is not yet 'verified', at the winding_down
|
|
38
|
+
* settle. Writes no focus stage. Returns the sweep tally; never throws.
|
|
39
|
+
*/
|
|
40
|
+
export async function sweepAnchoredInjectionsOnSettle(focus, deliveries, deps = defaultDeps) {
|
|
41
|
+
const anchored = getAnchoringDeliveries(deliveries);
|
|
42
|
+
if (anchored.length === 0)
|
|
43
|
+
return { planSize: 0, verified: 0 };
|
|
44
|
+
let snapshot;
|
|
45
|
+
try {
|
|
46
|
+
snapshot = await deps.fetchInjectionSnapshot(focus.focus_id);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
log.warn(`[settle-sweep] failed to fetch injections for focus ${focus.focus_id.slice(0, 8)}: ` +
|
|
50
|
+
`${err.message} -- holding; next settle retries`);
|
|
51
|
+
return { planSize: 0, verified: 0 };
|
|
52
|
+
}
|
|
53
|
+
const statusById = new Map();
|
|
54
|
+
const treeIdByInjection = new Map();
|
|
55
|
+
for (const item of snapshot) {
|
|
56
|
+
statusById.set(item.id, item.injectionStatus);
|
|
57
|
+
const treeId = item.realityTreeId;
|
|
58
|
+
if (typeof treeId === 'string' && treeId.length > 0) {
|
|
59
|
+
treeIdByInjection.set(item.id, treeId);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const plan = planInjectionSweep(anchored, statusById);
|
|
63
|
+
if (plan.length === 0)
|
|
64
|
+
return { planSize: 0, verified: 0 }; // all already verified -- no-op
|
|
65
|
+
let outcome;
|
|
66
|
+
try {
|
|
67
|
+
outcome = await executeSweep(plan, deps.buildVerify(treeIdByInjection));
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
log.warn(`[settle-sweep] sweep threw for focus ${focus.focus_id.slice(0, 8)}: ${err.message}`);
|
|
71
|
+
return { planSize: plan.length, verified: 0 };
|
|
72
|
+
}
|
|
73
|
+
if (outcome.verified.length > 0) {
|
|
74
|
+
log.info(`[settle-sweep] Focus "${focus.focus_name}" reached winding_down -- retired ` +
|
|
75
|
+
`${outcome.verified.length}/${plan.length} anchored injection(s) at focus scope ` +
|
|
76
|
+
`(no stage write; completion stays human-owned)`);
|
|
77
|
+
}
|
|
78
|
+
if (!outcome.ok && outcome.failedAt) {
|
|
79
|
+
log.warn(`[settle-sweep] Focus "${focus.focus_name}" sweep stopped at injection ` +
|
|
80
|
+
`${outcome.failedAt.injectionId.slice(0, 8)}: ${outcome.failedAt.error.message} -- ` +
|
|
81
|
+
`${outcome.verified.length}/${plan.length} retired; next settle retries the rest`);
|
|
82
|
+
}
|
|
83
|
+
const result = { planSize: plan.length, verified: outcome.verified.length };
|
|
84
|
+
if (outcome.failedAt)
|
|
85
|
+
result.failedAt = outcome.failedAt;
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=settle-injection-sweep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settle-injection-sweep.js","sourceRoot":"","sources":["../../src/completion/settle-injection-sweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-cascade.d.ts","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"state-cascade.d.ts","sourceRoot":"","sources":["../../src/completion/state-cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAU3D,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAarF,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AA2CD;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAGxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,EAAE,iBAAiB,EAAE,EAC/B,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F1E"}
|
|
@@ -31,10 +31,12 @@ import { DELIVERY_STATUS } from '@telora/daemon-core';
|
|
|
31
31
|
import { getActiveFocuses } from '../queries/deliveries.js';
|
|
32
32
|
import { getFocusDeliveries as _getFocusDeliveries, setReviewRequestedAt as _setReviewRequestedAt, clearReviewRequestedAt as _clearReviewRequestedAt, } from '../queries/focuses.js';
|
|
33
33
|
import { configForProduct } from '../shell/config.js';
|
|
34
|
+
import { sweepAnchoredInjectionsOnSettle } from './settle-injection-sweep.js';
|
|
34
35
|
import { emitLoopTrigger } from '../loops/index.js';
|
|
35
36
|
import { deriveFocusPhase } from '../focus/focus-phase.js';
|
|
36
37
|
import { isReviewEnabled } from '../workflow/pipeline-config.js';
|
|
37
38
|
import { checkVerifyFailedCapForFocus, checkReviewWindowStaleForFocus, checkIdleTeamStallForFocus, } from '../verify/stall-detectors.js';
|
|
39
|
+
import { reconcileCoverageIncompleteHold } from './coverage-stabilized.js';
|
|
38
40
|
import { createLogger } from '../shell/log.js';
|
|
39
41
|
const log = createLogger({ module: 'state-cascade' });
|
|
40
42
|
const defaultDeps = {
|
|
@@ -53,6 +55,16 @@ const defaultDeps = {
|
|
|
53
55
|
* re-iteration (status change, new merge commit) still re-triggers review.
|
|
54
56
|
*/
|
|
55
57
|
const lastReviewSignature = new Map();
|
|
58
|
+
/**
|
|
59
|
+
* Focuses whose anchored-injection settle sweep has already fully succeeded this
|
|
60
|
+
* run, so a winding_down focus is not re-fetched every poll (keeping a terminal
|
|
61
|
+
* focus quiet). Cleared when a focus leaves winding_down (a new delivery may add
|
|
62
|
+
* a fresh anchored injection to retire on the next settle), and NOT set on a
|
|
63
|
+
* partial/failed sweep so the remainder retries next poll. In-memory only: a
|
|
64
|
+
* re-exec re-runs the sweep once, which is an idempotent empty-plan no-op once
|
|
65
|
+
* the tree is settled -- not a bound/halt, so it needs no durable column.
|
|
66
|
+
*/
|
|
67
|
+
const settledSweptFocuses = new Set();
|
|
56
68
|
/**
|
|
57
69
|
* Compute a stable signature of the focus's delivery aggregate. Changes when a
|
|
58
70
|
* delivery's status, last-update time, merge commit, or git state moves --
|
|
@@ -70,6 +82,7 @@ function computeReviewSignature(deliveries) {
|
|
|
70
82
|
*/
|
|
71
83
|
export function __resetReviewSignaturesForTesting() {
|
|
72
84
|
lastReviewSignature.clear();
|
|
85
|
+
settledSweptFocuses.clear();
|
|
73
86
|
}
|
|
74
87
|
/**
|
|
75
88
|
* When a focus reaches the verifying phase and auto-review is enabled
|
|
@@ -192,6 +205,23 @@ export async function runCascadeChecks(config) {
|
|
|
192
205
|
});
|
|
193
206
|
await checkAutoReview(focus.focus_id, phase, focus.pipeline_config, focus.review_requested_at, deliveries);
|
|
194
207
|
await clearStaleReviewRequest(focus.focus_id, phase, focus.review_requested_at);
|
|
208
|
+
// Retire anchored injections at focus scope on the lifecycle that
|
|
209
|
+
// ACTUALLY runs -- the derived winding_down settle (TEL-5). This
|
|
210
|
+
// replaces the machine-completion family's sweep, which only fired when
|
|
211
|
+
// the stage column reached close_loop. Runs once per settle-entry (the
|
|
212
|
+
// guard keeps a terminal focus quiet); a partial/failed sweep is left
|
|
213
|
+
// unmarked so the remainder retries next poll. It writes NO focus stage
|
|
214
|
+
// -- completion stays human-owned.
|
|
215
|
+
if (phase === 'winding_down') {
|
|
216
|
+
if (!settledSweptFocuses.has(focus.focus_id)) {
|
|
217
|
+
const sweep = await sweepAnchoredInjectionsOnSettle({ focus_id: focus.focus_id, focus_name: focus.focus_name }, deliveries);
|
|
218
|
+
if (!sweep.failedAt)
|
|
219
|
+
settledSweptFocuses.add(focus.focus_id);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
settledSweptFocuses.delete(focus.focus_id);
|
|
224
|
+
}
|
|
195
225
|
// Targeted daemon-owned stall detectors RIDE this same review-handling
|
|
196
226
|
// seam: they reuse the deliveries + review phase + review_requested_at
|
|
197
227
|
// already loaded above instead of fanning out a second per-poll
|
|
@@ -216,6 +246,17 @@ export async function runCascadeChecks(config) {
|
|
|
216
246
|
// escalation. Rides the same seam; reads the per-team last-activity
|
|
217
247
|
// clock rather than any loaded delivery/review state.
|
|
218
248
|
checkIdleTeamStallForFocus(stallCtx);
|
|
249
|
+
// (4) review_coverage_incomplete close-half (delivery 7 Task 2): resolve
|
|
250
|
+
// the machine-filed review spawn block once the focus branch has
|
|
251
|
+
// stabilized at the tip recorded at filing -- the spawn-independent
|
|
252
|
+
// clearing condition (applyRespawnGuard blocks the review that would
|
|
253
|
+
// otherwise observe it). No human act.
|
|
254
|
+
await reconcileCoverageIncompleteHold({
|
|
255
|
+
focusId: focus.focus_id,
|
|
256
|
+
focusName: focus.focus_name,
|
|
257
|
+
branchName: focus.branch_name,
|
|
258
|
+
repoPath: pc.repoPath,
|
|
259
|
+
});
|
|
219
260
|
}
|
|
220
261
|
catch (err) {
|
|
221
262
|
log.warn(`[state-cascade] Cascade pass failed for focus ${focus.focus_id}:`, err.message);
|