@telora/daemon 0.22.87 → 0.22.97
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/backends/index.d.ts +1 -1
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +1 -1
- package/dist/backends/index.js.map +1 -1
- package/dist/backends/resolve.d.ts +37 -8
- package/dist/backends/resolve.d.ts.map +1 -1
- package/dist/backends/resolve.js +62 -28
- package/dist/backends/resolve.js.map +1 -1
- package/dist/cli/connect/config-write.d.ts +7 -4
- package/dist/cli/connect/config-write.d.ts.map +1 -1
- package/dist/cli/connect/config-write.js +13 -7
- package/dist/cli/connect/config-write.js.map +1 -1
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +11 -1
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/update-commands.d.ts.map +1 -1
- package/dist/cli/update-commands.js +2 -1
- package/dist/cli/update-commands.js.map +1 -1
- package/dist/completion/event-phases.js +5 -5
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +7 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +2 -1
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/delivery/external-hold.js +1 -1
- package/dist/delivery/external-hold.js.map +1 -1
- package/dist/delivery/operator-hold.d.ts +14 -0
- package/dist/delivery/operator-hold.d.ts.map +1 -1
- package/dist/delivery/operator-hold.js +31 -1
- package/dist/delivery/operator-hold.js.map +1 -1
- package/dist/directive/directive-dispatch.js +2 -2
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +2 -1
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/directive/directive-verify-hold-gate.d.ts +32 -8
- package/dist/directive/directive-verify-hold-gate.d.ts.map +1 -1
- package/dist/directive/directive-verify-hold-gate.js +20 -21
- package/dist/directive/directive-verify-hold-gate.js.map +1 -1
- package/dist/drift/staleness-sensor.d.ts +6 -0
- package/dist/drift/staleness-sensor.d.ts.map +1 -1
- package/dist/drift/staleness-sensor.js +24 -20
- package/dist/drift/staleness-sensor.js.map +1 -1
- package/dist/drift/staleness.d.ts +18 -5
- package/dist/drift/staleness.d.ts.map +1 -1
- package/dist/drift/staleness.js +28 -15
- package/dist/drift/staleness.js.map +1 -1
- package/dist/focus/focus-engine.d.ts.map +1 -1
- package/dist/focus/focus-engine.js +6 -9
- package/dist/focus/focus-engine.js.map +1 -1
- package/dist/focus/focus-executor.js +2 -2
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts +31 -0
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +44 -22
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +4 -0
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/team-actionable-work.d.ts +76 -20
- package/dist/focus/team-actionable-work.d.ts.map +1 -1
- package/dist/focus/team-actionable-work.js +85 -20
- package/dist/focus/team-actionable-work.js.map +1 -1
- package/dist/nexus/incoming.js +1 -1
- package/dist/nexus/incoming.js.map +1 -1
- package/dist/nexus/pending-returns.d.ts +124 -0
- package/dist/nexus/pending-returns.d.ts.map +1 -0
- package/dist/nexus/pending-returns.js +194 -0
- package/dist/nexus/pending-returns.js.map +1 -0
- package/dist/nexus/return-routing.d.ts +89 -0
- package/dist/nexus/return-routing.d.ts.map +1 -0
- package/dist/nexus/return-routing.js +148 -0
- package/dist/nexus/return-routing.js.map +1 -0
- package/dist/nexus/return.d.ts +66 -89
- package/dist/nexus/return.d.ts.map +1 -1
- package/dist/nexus/return.js +116 -279
- package/dist/nexus/return.js.map +1 -1
- package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
- package/dist/prompt/focus-prompt-builder.js +1 -0
- package/dist/prompt/focus-prompt-builder.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +23 -0
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +31 -4
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/focus-discovery.d.ts +7 -1
- package/dist/queries/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focus-discovery.js +9 -3
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/requests.d.ts +51 -3
- package/dist/queries/requests.d.ts.map +1 -1
- package/dist/queries/requests.js +63 -10
- package/dist/queries/requests.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +1 -0
- package/dist/queries/verification.js.map +1 -1
- package/dist/shell/heartbeat-metadata.d.ts +18 -0
- package/dist/shell/heartbeat-metadata.d.ts.map +1 -1
- package/dist/shell/heartbeat-metadata.js +24 -0
- package/dist/shell/heartbeat-metadata.js.map +1 -1
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +6 -17
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/shell/model-resolution.d.ts +9 -4
- package/dist/shell/model-resolution.d.ts.map +1 -1
- package/dist/shell/model-resolution.js +46 -7
- package/dist/shell/model-resolution.js.map +1 -1
- package/dist/shell/unified-init.d.ts +24 -0
- package/dist/shell/unified-init.d.ts.map +1 -1
- package/dist/shell/unified-init.js +22 -17
- package/dist/shell/unified-init.js.map +1 -1
- package/dist/spawn/model-id-guards.d.ts +50 -0
- package/dist/spawn/model-id-guards.d.ts.map +1 -0
- package/dist/spawn/model-id-guards.js +110 -0
- package/dist/spawn/model-id-guards.js.map +1 -0
- package/dist/spawn/model-routing.d.ts +1 -43
- package/dist/spawn/model-routing.d.ts.map +1 -1
- package/dist/spawn/model-routing.js +3 -94
- package/dist/spawn/model-routing.js.map +1 -1
- package/dist/spawn/prompt-assembly.js +1 -1
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -1
- package/dist/spawn/respawn-cycle-escalation.js +11 -3
- package/dist/spawn/respawn-cycle-escalation.js.map +1 -1
- package/dist/spawn/review-hold-park.d.ts +31 -0
- package/dist/spawn/review-hold-park.d.ts.map +1 -0
- package/dist/spawn/review-hold-park.js +120 -0
- package/dist/spawn/review-hold-park.js.map +1 -0
- package/dist/spawn/shared.d.ts +1 -1
- package/dist/spawn/shared.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.d.ts +27 -4
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +88 -3
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts +1 -0
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +7 -0
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +4 -0
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +19 -15
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/update/auto-update-idle.d.ts.map +1 -1
- package/dist/update/auto-update-idle.js +2 -1
- package/dist/update/auto-update-idle.js.map +1 -1
- package/dist/update/auto-update.d.ts +20 -3
- package/dist/update/auto-update.d.ts.map +1 -1
- package/dist/update/auto-update.js +8 -24
- package/dist/update/auto-update.js.map +1 -1
- package/dist/update/self-update.d.ts +43 -4
- package/dist/update/self-update.d.ts.map +1 -1
- package/dist/update/self-update.js +61 -38
- package/dist/update/self-update.js.map +1 -1
- package/dist/update/version-check.d.ts +29 -45
- package/dist/update/version-check.d.ts.map +1 -1
- package/dist/update/version-check.js +48 -79
- package/dist/update/version-check.js.map +1 -1
- package/dist/verify/failure-signature.d.ts.map +1 -1
- package/dist/verify/failure-signature.js +1 -0
- package/dist/verify/failure-signature.js.map +1 -1
- package/dist/verify/verification-checkout.d.ts +58 -0
- package/dist/verify/verification-checkout.d.ts.map +1 -0
- package/dist/verify/verification-checkout.js +266 -0
- package/dist/verify/verification-checkout.js.map +1 -0
- package/dist/verify/verification-default-on.d.ts +27 -3
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +98 -5
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +11 -0
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.d.ts +22 -1
- package/dist/verify/verification-deterministic.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.js +6 -7
- package/dist/verify/verification-deterministic.js.map +1 -1
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +10 -8
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +3 -0
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +5 -2
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/worktree/verify-interlock.d.ts +9 -1
- package/dist/worktree/verify-interlock.d.ts.map +1 -1
- package/dist/worktree/verify-interlock.js +40 -3
- package/dist/worktree/verify-interlock.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,6 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directive executor's read of the ONE actionable-work world-model.
|
|
3
|
+
*
|
|
4
|
+
* The directive dispatcher has two spawn-PRODUCING paths: the no-active-team
|
|
5
|
+
* fallback in executeInjectDirective (which stashes a PendingSpawnDirective for
|
|
6
|
+
* the listener to spawn) and executeSpawnDirective (which terminates the live
|
|
7
|
+
* team and stashes a respawn). Both would drive a team into a focus with NO
|
|
8
|
+
* team-actionable work -- one whose verify hold covers the only non-terminal
|
|
9
|
+
* work -- which is exactly the respawn class that produced the 2026-09-06 storm
|
|
10
|
+
* (a lead spawned, ran one turn, found nothing it could commit or advance, and
|
|
11
|
+
* exited, 80 times).
|
|
12
|
+
*
|
|
13
|
+
* This module gives the directive executor the SAME verdict the spawn gate
|
|
14
|
+
* (focus/listener-spawn.ts) and the team-exit classifier read: the one predicate
|
|
15
|
+
* in focus/team-actionable-work.ts, fed the delivery-scoped hold facts
|
|
16
|
+
* (resolveFocusVerifyHoldFacts). So all four controllers cannot disagree about
|
|
17
|
+
* whether a focus has actionable work -- the "one world-model" this focus
|
|
18
|
+
* converges -- including the f1 shape (2026-09-13), where a sibling delivery's
|
|
19
|
+
* open work stays actionable while another delivery is under verify.
|
|
20
|
+
*
|
|
21
|
+
* @module directive/directive-verify-hold-gate
|
|
22
|
+
*/
|
|
23
|
+
import { type VerifyHoldFacts } from '../focus/team-actionable-work.js';
|
|
1
24
|
/** Injectable seam so callers unit-test the gate without a live verify. */
|
|
2
25
|
export interface DirectiveVerifyHoldDeps {
|
|
3
|
-
|
|
26
|
+
/** Resolve the focus's hold facts; defaults to resolveFocusVerifyHoldFacts. */
|
|
27
|
+
verifyHoldFacts?: (focusId: string) => VerifyHoldFacts | Promise<VerifyHoldFacts>;
|
|
4
28
|
/**
|
|
5
29
|
* The session lineage of the directive being dispatched. A review-lineage
|
|
6
30
|
* directive is NEVER blocked by a verify hold: a review is exactly the work
|
|
@@ -13,21 +37,21 @@ export interface DirectiveVerifyHoldDeps {
|
|
|
13
37
|
}
|
|
14
38
|
/**
|
|
15
39
|
* True when a stage directive that would SPAWN (or respawn) a team for this
|
|
16
|
-
* focus must be suppressed because the focus has no team-actionable work:
|
|
17
|
-
*
|
|
40
|
+
* focus must be suppressed because the focus has no team-actionable work: a
|
|
41
|
+
* verify hold covers its only open work. Reads the one canonical predicate
|
|
18
42
|
* (focus/team-actionable-work.ts) shared with the spawn gate and the team-exit
|
|
19
43
|
* classifier.
|
|
20
44
|
*
|
|
21
45
|
* `hasUnheldActionableWork` is true by construction at this call site -- the
|
|
22
46
|
* directive executor only reaches a spawn-producing path for a focus it already
|
|
23
|
-
* decided has a directive to run;
|
|
24
|
-
*
|
|
25
|
-
* NOT a spawn and is never gated
|
|
26
|
-
* spawn-producing branches.
|
|
47
|
+
* decided has a directive to run; a hold with no work outside the verified
|
|
48
|
+
* delivery is the only thing that can flip the shared verdict to "no actionable
|
|
49
|
+
* work". An inject to an already-live team is NOT a spawn and is never gated
|
|
50
|
+
* here; callers apply this only on their spawn-producing branches.
|
|
27
51
|
*
|
|
28
52
|
* The one exception is LINEAGE: a review-lineage directive is never blocked (see
|
|
29
53
|
* DirectiveVerifyHoldDeps.lineage) -- the review is the work that clears the very
|
|
30
54
|
* hold, so gating it on the hold would deadlock the focus in verify.
|
|
31
55
|
*/
|
|
32
|
-
export declare function directiveSpawnBlockedByVerifyHold(focusId: string, deps?: DirectiveVerifyHoldDeps): boolean
|
|
56
|
+
export declare function directiveSpawnBlockedByVerifyHold(focusId: string, deps?: DirectiveVerifyHoldDeps): Promise<boolean>;
|
|
33
57
|
//# sourceMappingURL=directive-verify-hold-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directive-verify-hold-gate.d.ts","sourceRoot":"","sources":["../../src/directive/directive-verify-hold-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"directive-verify-hold-gate.d.ts","sourceRoot":"","sources":["../../src/directive/directive-verify-hold-gate.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,WAAW,uBAAuB;IACtC,+EAA+E;IAC/E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAClF;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAAC,OAAO,CAAC,CAOlB"}
|
|
@@ -9,49 +9,48 @@
|
|
|
9
9
|
* The directive dispatcher has two spawn-PRODUCING paths: the no-active-team
|
|
10
10
|
* fallback in executeInjectDirective (which stashes a PendingSpawnDirective for
|
|
11
11
|
* the listener to spawn) and executeSpawnDirective (which terminates the live
|
|
12
|
-
* team and stashes a respawn). Both would drive a team into a focus
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
12
|
+
* team and stashes a respawn). Both would drive a team into a focus with NO
|
|
13
|
+
* team-actionable work -- one whose verify hold covers the only non-terminal
|
|
14
|
+
* work -- which is exactly the respawn class that produced the 2026-09-06 storm
|
|
15
|
+
* (a lead spawned, ran one turn, found nothing it could commit or advance, and
|
|
16
|
+
* exited, 80 times).
|
|
17
17
|
*
|
|
18
18
|
* This module gives the directive executor the SAME verdict the spawn gate
|
|
19
19
|
* (focus/listener-spawn.ts) and the team-exit classifier read: the one predicate
|
|
20
|
-
* in focus/team-actionable-work.ts,
|
|
21
|
-
* So all four controllers cannot disagree about
|
|
22
|
-
* work -- the "one world-model" this focus
|
|
20
|
+
* in focus/team-actionable-work.ts, fed the delivery-scoped hold facts
|
|
21
|
+
* (resolveFocusVerifyHoldFacts). So all four controllers cannot disagree about
|
|
22
|
+
* whether a focus has actionable work -- the "one world-model" this focus
|
|
23
|
+
* converges -- including the f1 shape (2026-09-13), where a sibling delivery's
|
|
24
|
+
* open work stays actionable while another delivery is under verify.
|
|
23
25
|
*
|
|
24
26
|
* @module directive/directive-verify-hold-gate
|
|
25
27
|
*/
|
|
26
|
-
import { focusHasTeamActionableWork,
|
|
28
|
+
import { focusHasTeamActionableWork, resolveFocusVerifyHoldFacts, } from '../focus/team-actionable-work.js';
|
|
27
29
|
/**
|
|
28
30
|
* True when a stage directive that would SPAWN (or respawn) a team for this
|
|
29
|
-
* focus must be suppressed because the focus has no team-actionable work:
|
|
30
|
-
*
|
|
31
|
+
* focus must be suppressed because the focus has no team-actionable work: a
|
|
32
|
+
* verify hold covers its only open work. Reads the one canonical predicate
|
|
31
33
|
* (focus/team-actionable-work.ts) shared with the spawn gate and the team-exit
|
|
32
34
|
* classifier.
|
|
33
35
|
*
|
|
34
36
|
* `hasUnheldActionableWork` is true by construction at this call site -- the
|
|
35
37
|
* directive executor only reaches a spawn-producing path for a focus it already
|
|
36
|
-
* decided has a directive to run;
|
|
37
|
-
*
|
|
38
|
-
* NOT a spawn and is never gated
|
|
39
|
-
* spawn-producing branches.
|
|
38
|
+
* decided has a directive to run; a hold with no work outside the verified
|
|
39
|
+
* delivery is the only thing that can flip the shared verdict to "no actionable
|
|
40
|
+
* work". An inject to an already-live team is NOT a spawn and is never gated
|
|
41
|
+
* here; callers apply this only on their spawn-producing branches.
|
|
40
42
|
*
|
|
41
43
|
* The one exception is LINEAGE: a review-lineage directive is never blocked (see
|
|
42
44
|
* DirectiveVerifyHoldDeps.lineage) -- the review is the work that clears the very
|
|
43
45
|
* hold, so gating it on the hold would deadlock the focus in verify.
|
|
44
46
|
*/
|
|
45
|
-
export function directiveSpawnBlockedByVerifyHold(focusId, deps = {}) {
|
|
47
|
+
export async function directiveSpawnBlockedByVerifyHold(focusId, deps = {}) {
|
|
46
48
|
// Review is always spawnable, hold or not -- it releases the deliveries the
|
|
47
49
|
// hold is holding. Read the lineage before the hold so a review directive is
|
|
48
50
|
// never suppressed.
|
|
49
51
|
if (deps.lineage === 'review')
|
|
50
52
|
return false;
|
|
51
|
-
const
|
|
52
|
-
return !focusHasTeamActionableWork({
|
|
53
|
-
hasUnheldActionableWork: true,
|
|
54
|
-
underVerifyHold,
|
|
55
|
-
});
|
|
53
|
+
const facts = await (deps.verifyHoldFacts ?? resolveFocusVerifyHoldFacts)(focusId);
|
|
54
|
+
return !focusHasTeamActionableWork({ hasUnheldActionableWork: true, ...facts });
|
|
56
55
|
}
|
|
57
56
|
//# sourceMappingURL=directive-verify-hold-gate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directive-verify-hold-gate.js","sourceRoot":"","sources":["../../src/directive/directive-verify-hold-gate.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+EAA+E;AAC/E,gFAAgF;AAChF,2DAA2D;AAC3D,gBAAgB;AAEhB
|
|
1
|
+
{"version":3,"file":"directive-verify-hold-gate.js","sourceRoot":"","sources":["../../src/directive/directive-verify-hold-gate.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+EAA+E;AAC/E,gFAAgF;AAChF,2DAA2D;AAC3D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAE5B,MAAM,kCAAkC,CAAC;AAiB1C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,OAAe,EACf,OAAgC,EAAE;IAElC,4EAA4E;IAC5E,6EAA6E;IAC7E,oBAAoB;IACpB,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC;IACnF,OAAO,CAAC,0BAA0B,CAAC,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -74,6 +74,12 @@ export declare function recordAndCheckGapWedged(store: Map<string, number>, caus
|
|
|
74
74
|
* legitimately-busy daemon that will drain-and-update on its own is never flagged.
|
|
75
75
|
*/
|
|
76
76
|
export declare const DEFAULT_STALENESS_WEDGE_THRESHOLD_HOURS = 12;
|
|
77
|
+
/**
|
|
78
|
+
* The exact operator command that closes the gap when the machine cannot. It pins
|
|
79
|
+
* the @telora scope to the update channel, so running it on a host whose ~/.npmrc
|
|
80
|
+
* scopes @telora to Gitea still installs the release.
|
|
81
|
+
*/
|
|
82
|
+
export declare function readyUpdateCommand(newest: string, channel: string): string;
|
|
77
83
|
/** Minimal open-escalation row shape the sensor's dedup / resolve reads. */
|
|
78
84
|
interface StalenessEscalationRow {
|
|
79
85
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staleness-sensor.d.ts","sourceRoot":"","sources":["../../src/drift/staleness-sensor.ts"],"names":[],"mappings":"AAmEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,
|
|
1
|
+
{"version":3,"file":"staleness-sensor.d.ts","sourceRoot":"","sources":["../../src/drift/staleness-sensor.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
*
|
|
7
7
|
* The differential instrument this focus is named for: it computes
|
|
8
8
|
* newest-available MINUS actually-running for a tracked target. Its first (and
|
|
9
|
-
* directly observable) target is the running daemon vs the
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* directly observable) target is the running daemon vs the UPDATE CHANNEL -- the
|
|
10
|
+
* registry every daemon install pins the @telora scope to (npmjs, unless
|
|
11
|
+
* TELORA_REGISTRY_URL overrides it; never the host's ~/.npmrc scope):
|
|
12
12
|
*
|
|
13
13
|
* running = ~/.telora/daemon.meta.json .version (this daemon's own build)
|
|
14
14
|
* newest = the warm version cache .latestVersion (dist-tags.latest from the
|
|
15
|
-
*
|
|
15
|
+
* channel checkForUpdates read, kept fresh by
|
|
16
16
|
* startVersionCacheRefreshLoop)
|
|
17
17
|
*
|
|
18
18
|
* ATTRIBUTED readings only. The cache records WHICH registry produced `newest`;
|
|
19
|
-
* a reading is trusted only when that registry is the
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
19
|
+
* a reading is trusted only when that registry is the update channel. A reading
|
|
20
|
+
* from any other registry (a cache stamped with the Gitea URL, a legacy cache
|
|
21
|
+
* with no registry) is reported UNMEASURED, never "in sync" -- a host cannot
|
|
22
|
+
* certify the installed version is current by reading a registry installs do
|
|
23
|
+
* not use.
|
|
24
24
|
*
|
|
25
25
|
* CLOSING the gap, not reporting it. The daemon-version gap is machine-closable:
|
|
26
26
|
* the safe-seam auto-update controller (auto-update.ts) already installs a newer
|
|
@@ -66,7 +66,7 @@ import { hostname as osHostname } from 'node:os';
|
|
|
66
66
|
import { configForProduct } from '../shell/config.js';
|
|
67
67
|
import { readFreshVersionCache } from './staleness.js';
|
|
68
68
|
import { readDaemonMeta } from '../shell/daemon-process.js';
|
|
69
|
-
import { isNewerVersion, versionDistance,
|
|
69
|
+
import { isNewerVersion, versionDistance, resolveUpdateChannelUrl, scopedInstallCommand, isReadingAttributable, } from '../update/version-check.js';
|
|
70
70
|
import { createEscalation, markEscalationResolved } from '../queries/escalations.js';
|
|
71
71
|
import { callApi } from '../queries/shared.js';
|
|
72
72
|
import { daemonStalenessCauseKey } from '../queries/cause-key.js';
|
|
@@ -180,9 +180,13 @@ function loadWedgeThresholdMs() {
|
|
|
180
180
|
function formatDistance(d) {
|
|
181
181
|
return `${d.major}.${d.minor}.${d.patch}`;
|
|
182
182
|
}
|
|
183
|
-
/**
|
|
184
|
-
|
|
185
|
-
|
|
183
|
+
/**
|
|
184
|
+
* The exact operator command that closes the gap when the machine cannot. It pins
|
|
185
|
+
* the @telora scope to the update channel, so running it on a host whose ~/.npmrc
|
|
186
|
+
* scopes @telora to Gitea still installs the release.
|
|
187
|
+
*/
|
|
188
|
+
export function readyUpdateCommand(newest, channel) {
|
|
189
|
+
return `${scopedInstallCommand(`@telora/daemon@${newest}`, channel)} # then restart the daemon`;
|
|
186
190
|
}
|
|
187
191
|
/**
|
|
188
192
|
* Whether the auto-update controller can close the daemon-version gap itself.
|
|
@@ -339,7 +343,7 @@ const defaultDeps = {
|
|
|
339
343
|
readRunningVersion: () => readDaemonMeta()?.version ?? null,
|
|
340
344
|
readNewestAvailable: () => readFreshVersionCache()?.latestVersion ?? null,
|
|
341
345
|
readReadingRegistry: () => readFreshVersionCache()?.registryUrl ?? null,
|
|
342
|
-
readInstallRegistry: () =>
|
|
346
|
+
readInstallRegistry: () => resolveUpdateChannelUrl(),
|
|
343
347
|
patchThreshold: DEFAULT_STALENESS_PATCH_THRESHOLD,
|
|
344
348
|
canMachineCloseGap: defaultCanMachineCloseGap,
|
|
345
349
|
hasOpenStalenessEscalation: defaultHasOpenStalenessEscalation,
|
|
@@ -357,7 +361,7 @@ const defaultDeps = {
|
|
|
357
361
|
async function applyStalenessAction(args) {
|
|
358
362
|
const { action, diff, pc, canMachineClose, installRegistry, counts, deps } = args;
|
|
359
363
|
if (action === 'hand-over') {
|
|
360
|
-
const readyCommand = readyUpdateCommand(diff.newest);
|
|
364
|
+
const readyCommand = readyUpdateCommand(diff.newest, installRegistry);
|
|
361
365
|
// canMachineClose + hand-over can only mean wedged (decideStalenessAction);
|
|
362
366
|
// !canMachineClose means auto-update is disabled.
|
|
363
367
|
const reason = canMachineClose ? 'auto_update_wedged' : 'auto_update_disabled';
|
|
@@ -434,12 +438,12 @@ export async function runStalenessSensorTick(config, deps = defaultDeps) {
|
|
|
434
438
|
`cannot compute the propagation gap -- the version cache may not be warm yet.`);
|
|
435
439
|
return counts;
|
|
436
440
|
}
|
|
437
|
-
// Attribution gate: the `newest` reading must be attributable to the
|
|
438
|
-
//
|
|
439
|
-
//
|
|
441
|
+
// Attribution gate: the `newest` reading must be attributable to the update
|
|
442
|
+
// channel every install pins to. A reading from any other registry (a cache
|
|
443
|
+
// stamped with the Gitea URL, a legacy cache with no registry) is UNMEASURED
|
|
440
444
|
// -- reporting "in sync" here would certify the installed version against a
|
|
441
|
-
// registry
|
|
442
|
-
//
|
|
445
|
+
// registry installs do not use (the mars false-negative, on the platform).
|
|
446
|
+
// Silence still means "measured and in sync", never "not measured".
|
|
443
447
|
const readingRegistry = deps.readReadingRegistry();
|
|
444
448
|
const installRegistry = deps.readInstallRegistry();
|
|
445
449
|
if (!isReadingAttributable(readingRegistry, installRegistry)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staleness-sensor.js","sourceRoot":"","sources":["../../src/drift/staleness-sensor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"staleness-sensor.js","sourceRoot":"","sources":["../../src/drift/staleness-sensor.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,15 +41,25 @@ export interface StalenessDeps {
|
|
|
41
41
|
}
|
|
42
42
|
export declare function resolveVersionCheckCachePath(): string;
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* True when `cache` is within the TTL AND its reading came from `channel` (the
|
|
45
|
+
* update channel). A cache stamped with another registry -- e.g. a Gitea reading
|
|
46
|
+
* left over from before the daemon declared its channel -- or an unstamped legacy
|
|
47
|
+
* cache is NOT fresh: its latestVersion would name a version the channel install
|
|
48
|
+
* may not serve (a Gitea 0.22.87 candidate installing npmjs @latest 0.22.85 is a
|
|
49
|
+
* downgrade), so it must never drive an update decision.
|
|
50
|
+
*/
|
|
51
|
+
export declare function isFreshChannelReading(cache: VersionCheckCache, nowMs: number, channel: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Read the version-check cache only when it is FRESH (within the TTL) and read
|
|
54
|
+
* from the update channel ({@link isFreshChannelReading}).
|
|
45
55
|
*
|
|
46
56
|
* The running daemon keeps this cache warm via {@link startVersionCacheRefreshLoop};
|
|
47
57
|
* the auto-update controller reads the candidate version from here instead of
|
|
48
58
|
* issuing a registry call on every idle edge, so rapid idle flapping cannot
|
|
49
|
-
* produce a registry-call storm. An expired cache returns null --
|
|
50
|
-
* answer must never drive an update decision.
|
|
59
|
+
* produce a registry-call storm. An expired or off-channel cache returns null --
|
|
60
|
+
* a stale answer must never drive an update decision.
|
|
51
61
|
*/
|
|
52
|
-
export declare function readFreshVersionCache(now?: () => number): VersionCheckCache | null;
|
|
62
|
+
export declare function readFreshVersionCache(now?: () => number, channel?: string): VersionCheckCache | null;
|
|
53
63
|
/** Options for {@link getStalenessInfoCore} / {@link getStalenessInfo}. */
|
|
54
64
|
export interface StalenessOptions {
|
|
55
65
|
/**
|
|
@@ -79,10 +89,13 @@ export interface CacheRefreshDeps {
|
|
|
79
89
|
readCache: () => VersionCheckCache | null;
|
|
80
90
|
writeCache: (cache: VersionCheckCache) => void;
|
|
81
91
|
checkForUpdates: (currentVersion: string) => Promise<VersionCheckResult | null>;
|
|
92
|
+
/** The update channel a cached reading must come from to count as fresh. */
|
|
93
|
+
channel: string;
|
|
82
94
|
now?: () => number;
|
|
83
95
|
}
|
|
84
96
|
/**
|
|
85
|
-
* Refresh the version-check cache when it is missing or
|
|
97
|
+
* Refresh the version-check cache when it is missing, expired, or read from a
|
|
98
|
+
* registry other than the update channel.
|
|
86
99
|
* Returns true when a fresh registry answer was written, false when the
|
|
87
100
|
* cache was already fresh or the registry was unreachable (no write -- an
|
|
88
101
|
* expired cache stays expired rather than being re-stamped with old data).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staleness.d.ts","sourceRoot":"","sources":["../../src/drift/staleness.ts"],"names":[],"mappings":"AAoCA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"staleness.d.ts","sourceRoot":"","sources":["../../src/drift/staleness.ts"],"names":[],"mappings":"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"}
|
package/dist/drift/staleness.js
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
34
34
|
import { join } from 'node:path';
|
|
35
35
|
import { ensureGlobalStateDir, getDaemonStatus, readDaemonMeta, resolveGlobalStateDir, } from '../shell/daemon-process.js';
|
|
36
|
-
import { checkForUpdates, isNewerVersion } from '../update/version-check.js';
|
|
36
|
+
import { checkForUpdates, isNewerVersion, isReadingAttributable, resolveUpdateChannelUrl, scopedInstallCommand, } from '../update/version-check.js';
|
|
37
37
|
import { createLogger } from '../shell/log.js';
|
|
38
38
|
const log = createLogger({ module: 'staleness' });
|
|
39
39
|
/** Cache freshness window. Within this, no network call is made. */
|
|
@@ -47,24 +47,34 @@ export function resolveVersionCheckCachePath() {
|
|
|
47
47
|
return join(resolveGlobalStateDir(), VERSION_CHECK_CACHE_FILE);
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* True when `cache` is within the TTL AND its reading came from `channel` (the
|
|
51
|
+
* update channel). A cache stamped with another registry -- e.g. a Gitea reading
|
|
52
|
+
* left over from before the daemon declared its channel -- or an unstamped legacy
|
|
53
|
+
* cache is NOT fresh: its latestVersion would name a version the channel install
|
|
54
|
+
* may not serve (a Gitea 0.22.87 candidate installing npmjs @latest 0.22.85 is a
|
|
55
|
+
* downgrade), so it must never drive an update decision.
|
|
56
|
+
*/
|
|
57
|
+
export function isFreshChannelReading(cache, nowMs, channel) {
|
|
58
|
+
const checkedAtMs = Date.parse(cache.checkedAt);
|
|
59
|
+
if (!Number.isFinite(checkedAtMs) || nowMs - checkedAtMs >= VERSION_CHECK_CACHE_TTL_MS)
|
|
60
|
+
return false;
|
|
61
|
+
return isReadingAttributable(cache.registryUrl, channel);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Read the version-check cache only when it is FRESH (within the TTL) and read
|
|
65
|
+
* from the update channel ({@link isFreshChannelReading}).
|
|
51
66
|
*
|
|
52
67
|
* The running daemon keeps this cache warm via {@link startVersionCacheRefreshLoop};
|
|
53
68
|
* the auto-update controller reads the candidate version from here instead of
|
|
54
69
|
* issuing a registry call on every idle edge, so rapid idle flapping cannot
|
|
55
|
-
* produce a registry-call storm. An expired cache returns null --
|
|
56
|
-
* answer must never drive an update decision.
|
|
70
|
+
* produce a registry-call storm. An expired or off-channel cache returns null --
|
|
71
|
+
* a stale answer must never drive an update decision.
|
|
57
72
|
*/
|
|
58
|
-
export function readFreshVersionCache(now = Date.now) {
|
|
73
|
+
export function readFreshVersionCache(now = Date.now, channel = resolveUpdateChannelUrl()) {
|
|
59
74
|
const cache = readCacheFile();
|
|
60
75
|
if (!cache)
|
|
61
76
|
return null;
|
|
62
|
-
|
|
63
|
-
if (!Number.isFinite(checkedAtMs))
|
|
64
|
-
return null;
|
|
65
|
-
if (now() - checkedAtMs >= VERSION_CHECK_CACHE_TTL_MS)
|
|
66
|
-
return null;
|
|
67
|
-
return cache;
|
|
77
|
+
return isFreshChannelReading(cache, now(), channel) ? cache : null;
|
|
68
78
|
}
|
|
69
79
|
function readCacheFile() {
|
|
70
80
|
const path = resolveVersionCheckCachePath();
|
|
@@ -160,7 +170,8 @@ export async function getStalenessInfo(opts = {}) {
|
|
|
160
170
|
}
|
|
161
171
|
}
|
|
162
172
|
/**
|
|
163
|
-
* Refresh the version-check cache when it is missing or
|
|
173
|
+
* Refresh the version-check cache when it is missing, expired, or read from a
|
|
174
|
+
* registry other than the update channel.
|
|
164
175
|
* Returns true when a fresh registry answer was written, false when the
|
|
165
176
|
* cache was already fresh or the registry was unreachable (no write -- an
|
|
166
177
|
* expired cache stays expired rather than being re-stamped with old data).
|
|
@@ -168,8 +179,9 @@ export async function getStalenessInfo(opts = {}) {
|
|
|
168
179
|
export async function maybeRefreshVersionCheckCacheCore(deps, currentVersion) {
|
|
169
180
|
const cache = deps.readCache();
|
|
170
181
|
if (cache) {
|
|
171
|
-
|
|
172
|
-
|
|
182
|
+
// Off-channel readings (a Gitea-stamped or unstamped cache) are refreshed
|
|
183
|
+
// immediately regardless of age, so a channel switch heals on the first tick.
|
|
184
|
+
const withinTtl = isFreshChannelReading(cache, (deps.now ?? Date.now)(), deps.channel);
|
|
173
185
|
// A cache entry whose latestVersion is at/below the running version carries
|
|
174
186
|
// zero actionable signal. After a self-update restart the running version can
|
|
175
187
|
// leapfrog the cached latest (e.g. running 0.17.53 > cached 0.17.48); the TTL
|
|
@@ -201,6 +213,7 @@ export async function maybeRefreshVersionCheckCache(currentVersion) {
|
|
|
201
213
|
readCache: readCacheFile,
|
|
202
214
|
writeCache: writeCacheFile,
|
|
203
215
|
checkForUpdates,
|
|
216
|
+
channel: resolveUpdateChannelUrl(),
|
|
204
217
|
now: Date.now,
|
|
205
218
|
}, currentVersion);
|
|
206
219
|
}
|
|
@@ -251,7 +264,7 @@ export function formatStalenessWarning(info) {
|
|
|
251
264
|
if (info.installMode === 'npx' && info.autoUpdateEnabled === false) {
|
|
252
265
|
line +=
|
|
253
266
|
' Daemon runs from an npx cache with auto-update disabled; self-update cannot replace an npx-cached binary.' +
|
|
254
|
-
|
|
267
|
+
` Install globally (${scopedInstallCommand('@telora/daemon', resolveUpdateChannelUrl())}) and run \`telora-daemon restart\`.`;
|
|
255
268
|
}
|
|
256
269
|
return line;
|
|
257
270
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staleness.js","sourceRoot":"","sources":["../../src/drift/staleness.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gEAAgE;AAChE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,qBAAqB,GAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"staleness.js","sourceRoot":"","sources":["../../src/drift/staleness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-engine.d.ts","sourceRoot":"","sources":["../../src/focus/focus-engine.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA2B,gBAAgB,EAAoC,MAAM,qBAAqB,CAAC;AAClH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAkEtD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAOT;AAMD,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,WAAW;IAExB,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAA6B;IAE3C;;;;OAIG;IACH,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAEzC;;;;OAIG;IACH,SAAS,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAM;IAEjD,8EAA8E;IAC9E,OAAO,CAAC,qBAAqB,CAA6B;IAE1D;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAUlC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-engine.d.ts","sourceRoot":"","sources":["../../src/focus/focus-engine.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA2B,gBAAgB,EAAoC,MAAM,qBAAqB,CAAC;AAClH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAkEtD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAOT;AAMD,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,WAAW;IAExB,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAA6B;IAE3C;;;;OAIG;IACH,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAEzC;;;;OAIG;IACH,SAAS,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAM;IAEjD,8EAA8E;IAC9E,OAAO,CAAC,qBAAqB,CAA6B;IAE1D;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAUlC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2FjE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2FtB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAiE1C,wBAAwB;IA+BtC,IAAI,IAAI,IAAI;IAeN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA+F/B,WAAW,IAAI,YAAY;IA8C3B,gBAAgB,IAAI,aAAa;IAsBjC;;;OAGG;IACH,OAAO,CAAC,aAAa;CAStB"}
|
|
@@ -122,15 +122,12 @@ export class FocusEngine {
|
|
|
122
122
|
log.info('Initializing Supabase client...');
|
|
123
123
|
initSupabase(this.config);
|
|
124
124
|
// Wire the durable spawn-cooldown write-through. Registered once, after the
|
|
125
|
-
// Supabase client exists: recordFocusTeardown / clearSpawnCooldown
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
// budget survive the auto-updater's routine daemon re-exec.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
log.warn(`[spawn-cooldown] failed to persist teardown state for focus ${focusId.slice(0, 8)}: ${err.message}`);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
125
|
+
// Supabase client exists: recordFocusTeardown / clearSpawnCooldown persist
|
|
126
|
+
// the teardown streak + `exhausted` latch to product_focuses (best-effort;
|
|
127
|
+
// spawn-cooldown.ts logs a failed write) so a deliberate halt and a spent
|
|
128
|
+
// terminating budget survive the auto-updater's routine daemon re-exec. The
|
|
129
|
+
// write's promise is returned so clearSpawnCooldownDurably can await it.
|
|
130
|
+
setSpawnCooldownPersister((focusId, state) => updateFocusSpawnCooldown(focusId, state));
|
|
134
131
|
// Same write-through for the other two terminating bounds (TEL-2): the
|
|
135
132
|
// cross-respawn no-progress watchdog and the below-coverage drift budget.
|
|
136
133
|
setDeliveryAdvancementPersister((focusId, state) => {
|