@telora/daemon 0.22.233 → 0.22.239
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/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +1 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/completion/detector.d.ts.map +1 -1
- package/dist/completion/detector.js +1 -0
- package/dist/completion/detector.js.map +1 -1
- package/dist/completion/event-entry-phases.d.ts.map +1 -1
- package/dist/completion/event-entry-phases.js +13 -11
- package/dist/completion/event-entry-phases.js.map +1 -1
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +16 -15
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/status-advance-phase.d.ts +3 -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/team-progress-measure.d.ts.map +1 -1
- package/dist/completion/team-progress-measure.js +1 -0
- package/dist/completion/team-progress-measure.js.map +1 -1
- package/dist/delivery/delivery-advance-block.d.ts +17 -4
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +203 -173
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/focus/advance-hold.d.ts +55 -0
- package/dist/focus/advance-hold.d.ts.map +1 -0
- package/dist/focus/advance-hold.js +155 -0
- package/dist/focus/advance-hold.js.map +1 -0
- package/dist/focus/focus-spawn-decision.d.ts +17 -6
- package/dist/focus/focus-spawn-decision.d.ts.map +1 -1
- package/dist/focus/focus-spawn-decision.js +6 -6
- package/dist/focus/focus-spawn-decision.js.map +1 -1
- package/dist/focus/focus-team-state.js +1 -1
- package/dist/focus/focus-worktree-state.d.ts.map +1 -1
- package/dist/focus/focus-worktree-state.js +1 -0
- package/dist/focus/focus-worktree-state.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts +14 -0
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +13 -10
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +18 -29
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +1 -0
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +10 -4
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.d.ts +3 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.js +1 -0
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
- package/dist/focus/ready-focus-spawn-action.d.ts +29 -0
- package/dist/focus/ready-focus-spawn-action.d.ts.map +1 -0
- package/dist/focus/ready-focus-spawn-action.js +32 -0
- package/dist/focus/ready-focus-spawn-action.js.map +1 -0
- package/dist/focus/ready-focus-team-work.d.ts +18 -0
- package/dist/focus/ready-focus-team-work.d.ts.map +1 -0
- package/dist/focus/ready-focus-team-work.js +59 -0
- package/dist/focus/ready-focus-team-work.js.map +1 -0
- package/dist/focus/team-actionable-work.d.ts +56 -6
- package/dist/focus/team-actionable-work.d.ts.map +1 -1
- package/dist/focus/team-actionable-work.js +56 -9
- package/dist/focus/team-actionable-work.js.map +1 -1
- package/dist/git/types.d.ts.map +1 -1
- package/dist/git/types.js +1 -0
- package/dist/git/types.js.map +1 -1
- package/dist/nexus/return.d.ts +44 -1
- package/dist/nexus/return.d.ts.map +1 -1
- package/dist/nexus/return.js +42 -0
- package/dist/nexus/return.js.map +1 -1
- package/dist/prompt/focus-prompt-builder.d.ts +10 -8
- package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
- package/dist/prompt/focus-prompt-builder.js +19 -10
- package/dist/prompt/focus-prompt-builder.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +10 -0
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/queries/deliveries.js +1 -1
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-holds.d.ts +78 -0
- package/dist/queries/delivery-gate-holds.d.ts.map +1 -0
- package/dist/queries/delivery-gate-holds.js +5 -0
- package/dist/queries/delivery-gate-holds.js.map +1 -0
- package/dist/queries/delivery-gate-state.d.ts +13 -58
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/focus-discovery.js +1 -1
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +1 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +1 -0
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/workflows.d.ts.map +1 -1
- package/dist/queries/workflows.js +1 -0
- package/dist/queries/workflows.js.map +1 -1
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +1 -0
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/idle-work-stamp.d.ts +13 -7
- package/dist/spawn/idle-work-stamp.d.ts.map +1 -1
- package/dist/spawn/idle-work-stamp.js +22 -11
- package/dist/spawn/idle-work-stamp.js.map +1 -1
- package/dist/spawn/lead-continuation.d.ts.map +1 -1
- package/dist/spawn/lead-continuation.js +13 -11
- package/dist/spawn/lead-continuation.js.map +1 -1
- package/dist/spawn/spawn-cooldown.js +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/types/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/focus/advance-hold.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* A held advance names its reason where the team reads it.
|
|
6
|
+
*
|
|
7
|
+
* A finished delivery (every work issue Done) advances coding -> verify on the
|
|
8
|
+
* live listener pass (focus/listener-auto-advance.ts) only when the daemon's
|
|
9
|
+
* precheck (delivery/delivery-advance-block.ts ensureWorktreeCommittedBeforeAdvance)
|
|
10
|
+
* admits it: the focus worktree -- which EVERY delivery of the focus shares --
|
|
11
|
+
* must be committed, and no verify command may be running in it. A refusal used
|
|
12
|
+
* to be a log.info line only, while the team prompt promised the advance was
|
|
13
|
+
* automatic. So a team whose delivery sat at coding could not see why, and it
|
|
14
|
+
* escalated to a human asking for a status the daemon owns (Tinker Tailor,
|
|
15
|
+
* 2026-09-25).
|
|
16
|
+
*
|
|
17
|
+
* This module puts the refusal on the delivery's gate_state: a `blocking` entry
|
|
18
|
+
* named for the hold (the `verify_evidence_unavailable` shape -- a named guard
|
|
19
|
+
* plus its own detail key) and `advanceHold`, which names the worktree and, for
|
|
20
|
+
* uncommitted work, the paths. A sibling's uncommitted edits hold a finished
|
|
21
|
+
* delivery too, which is exactly why the paths are named. The dashboard's
|
|
22
|
+
* Waiting-on line (src/lib/dashboard/deliveryCardUtils.ts formatGateBlockers)
|
|
23
|
+
* and a team reading the delivery through telora_product_delivery both see it.
|
|
24
|
+
*
|
|
25
|
+
* Cleared on the tick the advance lands (the advance write carries only the
|
|
26
|
+
* verification history, so the entry does not survive it) and when the delivery
|
|
27
|
+
* re-opens with open work ({@link clearAdvanceHold}). A guard block is a
|
|
28
|
+
* different path (transition_blocks + a measured gate_state) and is untouched.
|
|
29
|
+
*
|
|
30
|
+
* @module focus/advance-hold
|
|
31
|
+
*/
|
|
32
|
+
import { runGitSync } from '../git/index.js';
|
|
33
|
+
import { rewriteDeliveryGateStateAtOwnStatus, } from '../queries/deliveries.js';
|
|
34
|
+
import { createLogger } from '../shell/log.js';
|
|
35
|
+
const log = createLogger({ module: 'advance-hold' });
|
|
36
|
+
/** The guard names of the paired `blocking` entries -- one per hold reason. */
|
|
37
|
+
export const ADVANCE_HOLD_GUARDS = new Set([
|
|
38
|
+
'worktree_uncommitted',
|
|
39
|
+
'verify_in_flight',
|
|
40
|
+
]);
|
|
41
|
+
/** At most this many paths are named; the count carries the rest. */
|
|
42
|
+
export const ADVANCE_HOLD_PATH_CAP = 20;
|
|
43
|
+
/**
|
|
44
|
+
* The uncommitted paths in a worktree, as `git status --porcelain` names them
|
|
45
|
+
* (a rename names its destination). Empty when git cannot be read -- the hold
|
|
46
|
+
* is still recorded, just without paths.
|
|
47
|
+
*/
|
|
48
|
+
export function listUncommittedPaths(worktreePath) {
|
|
49
|
+
const result = runGitSync(['status', '--porcelain', '--untracked-files=all'], worktreePath);
|
|
50
|
+
if (!result.success)
|
|
51
|
+
return [];
|
|
52
|
+
// The runner trims its output, so the FIRST line may have lost the leading
|
|
53
|
+
// blank of its two-column status (" M a.ts" -> "M a.ts"): strip the status
|
|
54
|
+
// columns by pattern, never by a fixed width.
|
|
55
|
+
return result.output
|
|
56
|
+
.split('\n')
|
|
57
|
+
.map((line) => line.replace(/^[ MTADRCU?!]{1,2} /, ''))
|
|
58
|
+
.filter((path) => path.length > 0)
|
|
59
|
+
.map((path) => {
|
|
60
|
+
const arrow = path.indexOf(' -> ');
|
|
61
|
+
return arrow >= 0 ? path.slice(arrow + 4) : path;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/** Build the hold detail for a precheck refusal. Pure over its inputs. */
|
|
65
|
+
export function buildAdvanceHold(hold, uncommittedPaths, nowIso) {
|
|
66
|
+
if (hold.kind === 'verify_in_flight') {
|
|
67
|
+
return { reason: hold.kind, worktreePath: hold.worktreePath, heldSince: nowIso };
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
reason: hold.kind,
|
|
71
|
+
worktreePath: hold.worktreePath,
|
|
72
|
+
uncommittedPaths: uncommittedPaths.slice(0, ADVANCE_HOLD_PATH_CAP),
|
|
73
|
+
uncommittedPathCount: uncommittedPaths.length,
|
|
74
|
+
heldSince: nowIso,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function sameHold(a, b) {
|
|
78
|
+
return a !== undefined
|
|
79
|
+
&& a.reason === b.reason
|
|
80
|
+
&& a.worktreePath === b.worktreePath
|
|
81
|
+
&& JSON.stringify(a.uncommittedPaths ?? []) === JSON.stringify(b.uncommittedPaths ?? [])
|
|
82
|
+
&& (a.uncommittedPathCount ?? 0) === (b.uncommittedPathCount ?? 0);
|
|
83
|
+
}
|
|
84
|
+
/** Drop any advance-hold entry from a blocking list. */
|
|
85
|
+
function withoutHoldGuards(blocking) {
|
|
86
|
+
return (blocking ?? []).filter((b) => !ADVANCE_HOLD_GUARDS.has(b.guardName));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The gate_state with `hold` recorded, merged over what the row already carries
|
|
90
|
+
* (verification history and any other key survive). Returns undefined when the
|
|
91
|
+
* same hold is already recorded, so a hold that stands across polls writes once.
|
|
92
|
+
* `heldSince` is kept from the standing record when only the paths changed.
|
|
93
|
+
*/
|
|
94
|
+
export function withAdvanceHold(prior, hold) {
|
|
95
|
+
const standing = prior?.advanceHold;
|
|
96
|
+
if (sameHold(standing, hold))
|
|
97
|
+
return undefined;
|
|
98
|
+
const heldSince = standing?.reason === hold.reason ? standing.heldSince : hold.heldSince;
|
|
99
|
+
return {
|
|
100
|
+
...(prior ?? { warnings: [] }),
|
|
101
|
+
blocking: [...withoutHoldGuards(prior?.blocking), { guardName: hold.reason, passed: false }],
|
|
102
|
+
warnings: prior?.warnings ?? [],
|
|
103
|
+
evaluatedAt: hold.heldSince,
|
|
104
|
+
advanceHold: { ...hold, heldSince },
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/** The gate_state with any advance hold removed; undefined when there is none. */
|
|
108
|
+
export function withoutAdvanceHold(prior) {
|
|
109
|
+
if (!prior)
|
|
110
|
+
return undefined;
|
|
111
|
+
const hasEntry = (prior.blocking ?? []).some((b) => ADVANCE_HOLD_GUARDS.has(b.guardName));
|
|
112
|
+
if (prior.advanceHold === undefined && !hasEntry)
|
|
113
|
+
return undefined;
|
|
114
|
+
const next = { ...prior, blocking: withoutHoldGuards(prior.blocking) };
|
|
115
|
+
delete next.advanceHold;
|
|
116
|
+
return next;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Record a precheck refusal on the delivery's gate_state, at the row's own
|
|
120
|
+
* status and in its serialized write turn. A standing identical hold writes
|
|
121
|
+
* nothing. Throws what the row read/write throws; the caller logs and moves on.
|
|
122
|
+
*/
|
|
123
|
+
export async function recordAdvanceHold(deliveryId, hold, deps = {}) {
|
|
124
|
+
const paths = hold.kind === 'worktree_uncommitted'
|
|
125
|
+
? (deps.listUncommittedPaths ?? listUncommittedPaths)(hold.worktreePath)
|
|
126
|
+
: [];
|
|
127
|
+
const detail = buildAdvanceHold(hold, paths, (deps.now ?? (() => new Date().toISOString()))());
|
|
128
|
+
await rewriteDeliveryGateStateAtOwnStatus(deliveryId, ({ gateState }) => withAdvanceHold(gateState, detail), { io: deps.io });
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Clear a recorded advance hold (the delivery re-opened: it holds open work
|
|
132
|
+
* again, so nothing is waiting on the advance). No write when there is none.
|
|
133
|
+
*/
|
|
134
|
+
export async function clearAdvanceHold(deliveryId, deps = {}) {
|
|
135
|
+
await rewriteDeliveryGateStateAtOwnStatus(deliveryId, ({ gateState }) => withoutAdvanceHold(gateState), { io: deps.io });
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* An advance the precheck refused: log it, and name the hold where the team and
|
|
139
|
+
* the dashboard read it -- a finished delivery held at coding otherwise looks
|
|
140
|
+
* stuck, and a team that cannot see why escalates for a status the daemon owns.
|
|
141
|
+
* The live pass (focus/listener-auto-advance.ts) and the team-exit pass
|
|
142
|
+
* (completion/status-advance-phase.ts) both call it. Logs, never throws.
|
|
143
|
+
*/
|
|
144
|
+
export async function noteAdvanceRefused(delivery, precheck, record = recordAdvanceHold) {
|
|
145
|
+
log.info(`Skip auto-advance of "${delivery.name}": ${precheck.reason}`);
|
|
146
|
+
if (!precheck.hold)
|
|
147
|
+
return;
|
|
148
|
+
await record(delivery.id, precheck.hold).catch((err) => log.warn(`Recording the advance hold on "${delivery.name}" failed: ${err.message}`));
|
|
149
|
+
}
|
|
150
|
+
/** Whether a delivery's gate_state (as read) carries an advance hold. */
|
|
151
|
+
export function hasAdvanceHold(gateState) {
|
|
152
|
+
return gateState != null && typeof gateState === 'object'
|
|
153
|
+
&& gateState.advanceHold != null;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=advance-hold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advance-hold.js","sourceRoot":"","sources":["../../src/focus/advance-hold.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* 2. already has a team -> skip (do not double-spawn)
|
|
11
11
|
* 3. review-cycle cap hold -> skip (the review loop reached its cap without
|
|
12
12
|
* converging; focus/review-cycle-cap-hold.ts)
|
|
13
|
-
* 4.
|
|
14
|
-
* a
|
|
13
|
+
* 4. no team work / held -> skip (`skip_no_work`: nothing open for a team;
|
|
14
|
+
* `skip_held`: a verify hold defers the advance)
|
|
15
15
|
* 5. in spawn cooldown -> skip (recently torn down)
|
|
16
16
|
* 6. at total capacity -> spawn nothing more; the loop records the focus
|
|
17
17
|
* as waiting for a slot and keeps classifying
|
|
@@ -19,15 +19,19 @@
|
|
|
19
19
|
*
|
|
20
20
|
* The held check reads the ONE team-actionable-work predicate
|
|
21
21
|
* (focus/team-actionable-work.ts) shared with the team-exit decision, so the
|
|
22
|
-
* spawn gate and the exit cannot disagree about a held focus
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* spawn gate and the exit cannot disagree about a held focus. SURFACED IS NOT
|
|
23
|
+
* WORK: getReadyFocuses surfaces a focus by delivery status, and a coding
|
|
24
|
+
* delivery whose every work issue is Done is waiting on the daemon, not a team.
|
|
25
|
+
* So the unheld fact is `hasTeamWork` (focus/ready-focus-team-work.ts, the same
|
|
26
|
+
* team-work predicate the continuation stamp and the team exit read), unless
|
|
27
|
+
* `forced` -- the answer re-arm and the unclaimed-migration notice, whose
|
|
28
|
+
* carrier is the spawn itself.
|
|
25
29
|
*
|
|
26
30
|
* The capacity check reads the LIVE active-team count, so the caller passes a
|
|
27
31
|
* freshly-sampled count per focus (a successful spawn raises it for the next
|
|
28
32
|
* focus; a skipped spawn does not).
|
|
29
33
|
*/
|
|
30
|
-
export type FocusSpawnAction = 'spawn' | 'skip_unknown_role' | 'skip_active_team' | 'skip_cap_held' | 'skip_held' | 'skip_cooldown' | 'stop_capacity';
|
|
34
|
+
export type FocusSpawnAction = 'spawn' | 'skip_unknown_role' | 'skip_active_team' | 'skip_cap_held' | 'skip_held' | 'skip_no_work' | 'skip_cooldown' | 'stop_capacity';
|
|
31
35
|
export interface FocusSpawnGate {
|
|
32
36
|
/** Whether the focus's assigned_agent_role_id resolves to a known role. */
|
|
33
37
|
hasRole: boolean;
|
|
@@ -55,6 +59,13 @@ export interface FocusSpawnGate {
|
|
|
55
59
|
* (f1, 2026-09-13). Absent reads as false (the storm-safe verdict).
|
|
56
60
|
*/
|
|
57
61
|
workOutsideVerifyHold?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* The focus holds team work (focus/ready-focus-team-work.ts). Absent reads as
|
|
64
|
+
* true (pure-gate tests predate it; a focus with a live team is not read).
|
|
65
|
+
*/
|
|
66
|
+
hasTeamWork?: boolean;
|
|
67
|
+
/** An escape spawns past the work fact: an answer re-arm or an owed unclaimed-migration notice. */
|
|
68
|
+
forced?: boolean;
|
|
58
69
|
inSpawnCooldown: boolean;
|
|
59
70
|
/** Live count of active teams as of this focus's turn. */
|
|
60
71
|
activeTeamCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-spawn-decision.d.ts","sourceRoot":"","sources":["../../src/focus/focus-spawn-decision.ts"],"names":[],"mappings":"AAkBA
|
|
1
|
+
{"version":3,"file":"focus-spawn-decision.d.ts","sourceRoot":"","sources":["../../src/focus/focus-spawn-decision.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,cAAc,GACd,eAAe,GACf,eAAe,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mGAAmG;IACnG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAoBvE"}
|
|
@@ -22,16 +22,16 @@ export function decideFocusSpawn(gate) {
|
|
|
22
22
|
if (gate.reviewCycleCapHeld)
|
|
23
23
|
return 'skip_cap_held';
|
|
24
24
|
// Read the ONE team-actionable-work predicate (shared with the team-exit
|
|
25
|
-
// decision).
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
|
|
25
|
+
// decision). No open work, or a verify hold with no open work outside the
|
|
26
|
+
// verified delivery: defer rather than spawn a team that would find nothing to
|
|
27
|
+
// commit and terminate -- the billed no-op loop this gate removes.
|
|
28
|
+
const hasUnheldActionableWork = gate.forced === true || gate.hasTeamWork !== false;
|
|
29
29
|
if (!focusHasTeamActionableWork({
|
|
30
|
-
hasUnheldActionableWork
|
|
30
|
+
hasUnheldActionableWork,
|
|
31
31
|
underVerifyHold: gate.underVerifyHold,
|
|
32
32
|
workOutsideVerifyHold: gate.workOutsideVerifyHold,
|
|
33
33
|
})) {
|
|
34
|
-
return 'skip_held';
|
|
34
|
+
return hasUnheldActionableWork ? 'skip_held' : 'skip_no_work';
|
|
35
35
|
}
|
|
36
36
|
if (gate.inSpawnCooldown)
|
|
37
37
|
return 'skip_cooldown';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-spawn-decision.js","sourceRoot":"","sources":["../../src/focus/focus-spawn-decision.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,yGAAyG;AACzG,4DAA4D;AAC5D,yEAAyE;AACzE,4DAA4D;AAC5D,gBAAgB;AAEhB;;;;;;GAMG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-spawn-decision.js","sourceRoot":"","sources":["../../src/focus/focus-spawn-decision.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,yGAAyG;AACzG,4DAA4D;AAC5D,yEAAyE;AACzE,4DAA4D;AAC5D,gBAAgB;AAEhB;;;;;;GAMG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAqFvE,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,mBAAmB,CAAC;IAC9C,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO,kBAAkB,CAAC;IAClD,gFAAgF;IAChF,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO,eAAe,CAAC;IACpD,yEAAyE;IACzE,0EAA0E;IAC1E,+EAA+E;IAC/E,mEAAmE;IACnE,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC;IACnF,IAAI,CAAC,0BAA0B,CAAC;QAC9B,uBAAuB;QACvB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;KAClD,CAAC,EAAE,CAAC;QACH,OAAO,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,CAAC,eAAe;QAAE,OAAO,eAAe,CAAC;IACjD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB;QAAE,OAAO,eAAe,CAAC;IAC1E,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
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: 53 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/focus/focus-team-state.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
4
|
import { createLogger } from '../shell/log.js';
|
|
5
5
|
const log = createLogger({ module: 'focus-executor' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-worktree-state.d.ts","sourceRoot":"","sources":["../../src/focus/focus-worktree-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"focus-worktree-state.d.ts","sourceRoot":"","sources":["../../src/focus/focus-worktree-state.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAKjC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;CAClD;AAQD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BpH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,GAAE,iBAAsB,GAAG,IAAI,CAiB7G;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAe1F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAErE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
2
|
// Pinned by: packages/daemon/src/directive/directive-verify-hold-disposal-convergence.test.ts,
|
|
3
3
|
// packages/daemon/src/directive/directive-verify-hold-gate.test.ts,
|
|
4
|
+
// packages/daemon/src/focus/advance-hold.test.ts,
|
|
4
5
|
// packages/daemon/src/focus/focus-engine-characterization.test.ts,
|
|
5
6
|
// packages/daemon/src/focus/focus-worktree-state-product-identity.test.ts,
|
|
6
7
|
// packages/daemon/src/focus/pending-spawn-verify-hold.test.ts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-worktree-state.js","sourceRoot":"","sources":["../../src/focus/focus-worktree-state.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+FAA+F;AAC/F,sEAAsE;AACtE,qEAAqE;AACrE,6EAA6E;AAC7E,iEAAiE;AACjE,0DAA0D;AAC1D,gBAAgB;AAuBhB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAevD,wEAAwE;AAExE,+DAA+D;AAC/D,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB,EAAE,QAAgB,EAAE,OAA0B,EAAE;IACnG,MAAM,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC;IAC9E,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,wEAAwE,EACvE,GAAa,CAAC,OAAO,CACvB,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,EAAE,EAAE,wCAAwC;YACvD,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACrC,SAAS;YACT,QAAQ;SACT,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,YAAY,QAAQ,oCAAoC,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,IAAuB,EAAE,OAA0B,EAAE;IACrG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAElC,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;IACjF,mDAAmD;IACnD,sBAAsB,CAAC;QACrB,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,GAAG,CAAC,IAAI,CACN,+CAA+C,OAAO,GAAG,EACxD,GAAa,CAAC,OAAO,CACvB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,OAA0B,EAAE;IAC/E,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;QACjF,mDAAmD;QACnD,sBAAsB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5C,GAAG,CAAC,IAAI,CACN,+CAA+C,OAAO,GAAG,EACxD,GAAa,CAAC,OAAO,CACvB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"focus-worktree-state.js","sourceRoot":"","sources":["../../src/focus/focus-worktree-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ import { fetchEffectiveWorkflow } from '../queries/workflows.js';
|
|
|
14
14
|
import { getActiveTeams } from './focus-executor.js';
|
|
15
15
|
import { hasFocusWorktree } from './focus-worktree-state.js';
|
|
16
16
|
import { ensureWorktreeCommittedBeforeAdvance } from '../delivery/delivery-lifecycle.js';
|
|
17
|
+
import { recordAdvanceHold, clearAdvanceHold } from './advance-hold.js';
|
|
17
18
|
import { getDeliveryIssues, updateIssueStatus } from '../queries/issues.js';
|
|
18
19
|
import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
|
|
19
20
|
/**
|
|
@@ -41,6 +42,15 @@ export type MeasureGuardAtAdvanceFn = (config: DaemonConfig, delivery: {
|
|
|
41
42
|
* Dependency seam for checkDeliveryAutoAdvance. The real implementation imports
|
|
42
43
|
* these eagerly; tests inject stubs to avoid the fragile bare-specifier
|
|
43
44
|
* `mock.module` path under tsx (same rationale as CheckDeliveryWorkStartDeps).
|
|
45
|
+
*
|
|
46
|
+
* NOTE: neither hasFocusWorktree NOR getActiveTeams is consulted for focus
|
|
47
|
+
* SELECTION any longer. hasFocusWorktree was dropped from selection in the
|
|
48
|
+
* 2026-07-27 wedge fix; getActiveTeams (the team-presence freeze) is dropped for
|
|
49
|
+
* the same reason and by the same shape -- advancement eligibility is a property
|
|
50
|
+
* of the DELIVERY's own state, not of whether the focus has a live team. Both
|
|
51
|
+
* deps fields + imports are retained for back-compat with existing test call
|
|
52
|
+
* sites (referenced via `typeof` here); the requirements they used to gate now
|
|
53
|
+
* live only at the per-delivery write point (ensureWorktreeCommittedBeforeAdvance).
|
|
44
54
|
*/
|
|
45
55
|
export interface CheckDeliveryAutoAdvanceDeps {
|
|
46
56
|
measureGuardAtAdvance?: MeasureGuardAtAdvanceFn;
|
|
@@ -54,6 +64,10 @@ export interface CheckDeliveryAutoAdvanceDeps {
|
|
|
54
64
|
fetchEffectiveWorkflow?: typeof fetchEffectiveWorkflow;
|
|
55
65
|
updateDeliveryStatus?: typeof updateDeliveryStatus;
|
|
56
66
|
findOpenOperatorHoldForDelivery?: typeof findOpenOperatorHoldForDelivery;
|
|
67
|
+
/** Record a precheck refusal on the delivery's gate_state (focus/advance-hold.ts). */
|
|
68
|
+
recordAdvanceHold?: typeof recordAdvanceHold;
|
|
69
|
+
/** Clear a recorded advance hold when the delivery re-opens. */
|
|
70
|
+
clearAdvanceHold?: typeof clearAdvanceHold;
|
|
57
71
|
}
|
|
58
72
|
export declare function checkDeliveryAutoAdvance(config: DaemonConfig, deps?: CheckDeliveryAutoAdvanceDeps): Promise<void>;
|
|
59
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener-auto-advance.d.ts","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"listener-auto-advance.d.ts","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAO7D,OAAO,EAAE,oCAAoC,EAAuC,MAAM,mCAAmC,CAAC;AAC9H,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAsC,MAAM,mBAAmB,CAAC;AAE5G,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAwBtE;;;;;;;;;;GAUG;AACH,yDAAyD;AACzD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACrC;AA8CD,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACtC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,CAAC,EAAE,uBAAuB,CAAC;IAChD,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,oCAAoC,CAAC,EAAE,OAAO,oCAAoC,CAAC;IACnF,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IACzE,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;CAC5C;AAeD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC,IAAI,CAAC,CA6Uf;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC7C,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
2
|
// Pinned by: packages/daemon/src/delivery/delivery-work-start.test.ts,
|
|
3
3
|
// packages/daemon/src/delivery/discovery-only-auto-advance.test.ts,
|
|
4
|
+
// packages/daemon/src/focus/advance-hold.test.ts,
|
|
4
5
|
// packages/daemon/src/focus/listener-auto-advance-guard-measure.test.ts,
|
|
5
6
|
// packages/daemon/src/focus/listener-auto-advance-team-presence.test.ts,
|
|
6
7
|
// packages/daemon/src/focus/listener-auto-advance-teamless-wedge.test.ts,
|
|
@@ -20,6 +21,7 @@ import { autoCloseContextGroups, sweepDeliveryCloseIssues } from '../delivery/de
|
|
|
20
21
|
import { resolveReconciledWrite, workStartReconcileInput, advanceReconcileInput } from '../delivery/delivery-reconciler-apply.js';
|
|
21
22
|
import { isAuditPhaseFocus } from '../audit/audit-shape.js';
|
|
22
23
|
import { ensureWorktreeCommittedBeforeAdvance, evaluateGuardsForDeliveryTransition } from '../delivery/delivery-lifecycle.js';
|
|
24
|
+
import { clearAdvanceHold, hasAdvanceHold, noteAdvanceRefused } from './advance-hold.js';
|
|
23
25
|
import { determineTransition } from '../workflow/workflow-engine.js';
|
|
24
26
|
import { getDeliveryIssues, updateIssueStatus } from '../queries/issues.js';
|
|
25
27
|
import { resolveOpenFocusEscalationsOfKind } from '../queries/escalations.js';
|
|
@@ -82,17 +84,17 @@ async function defaultMeasureGuardAtAdvance(config, delivery, workflow, fromStat
|
|
|
82
84
|
});
|
|
83
85
|
return { blocked: outcome.blocked, gateState: outcome.gateState ?? null };
|
|
84
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* The delivery re-opened: nothing waits on the advance any more, so a hold
|
|
89
|
+
* recorded while it was finished no longer describes it. Logs, never throws.
|
|
90
|
+
*/
|
|
91
|
+
async function clearReopenedAdvanceHold(delivery, clear) {
|
|
92
|
+
if (!hasAdvanceHold(delivery.gateState))
|
|
93
|
+
return;
|
|
94
|
+
await clear(delivery.id).catch((err) => log.warn(`Clearing the advance hold on "${delivery.name}" failed: ${err.message}`));
|
|
95
|
+
}
|
|
85
96
|
export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
86
97
|
const _getActiveFocuses = deps.getActiveFocuses ?? getActiveFocuses;
|
|
87
|
-
// NOTE: neither hasFocusWorktree NOR getActiveTeams is consulted for focus
|
|
88
|
-
// SELECTION any longer. hasFocusWorktree was dropped from selection in the
|
|
89
|
-
// 2026-07-27 wedge fix; getActiveTeams (the team-presence freeze) is dropped
|
|
90
|
-
// here for the same reason and by the same shape -- advancement eligibility is
|
|
91
|
-
// a property of the DELIVERY's own state, not of whether the focus has a live
|
|
92
|
-
// team. Both deps fields + imports are retained for back-compat with existing
|
|
93
|
-
// test call sites (referenced via `typeof` in CheckDeliveryAutoAdvanceDeps);
|
|
94
|
-
// the requirements they used to gate now live only at the per-delivery write
|
|
95
|
-
// point (ensureWorktreeCommittedBeforeAdvance below).
|
|
96
98
|
const _getFocusDeliveries = deps.getFocusDeliveries ?? getFocusDeliveries;
|
|
97
99
|
const _getDeliveryIssues = deps.getDeliveryIssues ?? getDeliveryIssues;
|
|
98
100
|
const _updateIssueStatus = deps.updateIssueStatus ?? updateIssueStatus;
|
|
@@ -184,6 +186,7 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
|
184
186
|
// the reconciler's areDeliveryIssuesDone uses).
|
|
185
187
|
const openWork = workIssues.filter(i => OPEN_ISSUE_STATUSES.has(i.status));
|
|
186
188
|
if (openWork.length > 0) {
|
|
189
|
+
await clearReopenedAdvanceHold(delivery, deps.clearAdvanceHold ?? clearAdvanceHold);
|
|
187
190
|
// A delivery with open work never advances FORWARD here. But the
|
|
188
191
|
// re-queue edge verify_failed -> queued (delivery-reconciler.ts) is
|
|
189
192
|
// the one this teamless pass MUST drive: a verify_failed delivery
|
|
@@ -232,7 +235,7 @@ export async function checkDeliveryAutoAdvance(config, deps = {}) {
|
|
|
232
235
|
sessionId: null,
|
|
233
236
|
});
|
|
234
237
|
if (!precheck.ok) {
|
|
235
|
-
|
|
238
|
+
await noteAdvanceRefused(delivery, precheck, deps.recordAdvanceHold);
|
|
236
239
|
continue;
|
|
237
240
|
}
|
|
238
241
|
// Advance via the single-writer reconciler. The teamless path has no
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener-auto-advance.js","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"listener-auto-advance.js","sourceRoot":"","sources":["../../src/focus/listener-auto-advance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener-spawn.d.ts","sourceRoot":"","sources":["../../src/focus/listener-spawn.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"listener-spawn.d.ts","sourceRoot":"","sources":["../../src/focus/listener-spawn.ts"],"names":[],"mappings":"AAoCA,OAAO,EAA2D,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ5H,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAkD,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAOlJ,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEtG,OAAO,EAAmC,KAAK,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAiExH;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,kBAA0C,GAAG,OAAO,CAAC,IAAI,CAAC,CAuKzG;AAuDD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,aAAa,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAChD,GAAG,CAAC,MAAM,CAAC,CAuBb;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,GACxC,OAAO,CAQT;AAeD;;;;;;GAMG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAGlB;AA8BD;;;;;;GAMG;AACH,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,cAAc,EACrB,IAAI,GAAE,6BAAkC,GACvC,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACxF,OAAO,CAUT;AAkCD;;;;;;;;;GASG;AACH,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAItH;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,oBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7G;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,GAAE,oBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC,CAiNpH"}
|
|
@@ -1,7 +1,7 @@
|
|
|
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: 22 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/focus/listener-spawn.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
|
-
import {
|
|
4
|
+
import { resolveReadyFocusSpawnAction } from './ready-focus-spawn-action.js';
|
|
5
5
|
import { config, roles, pollState, idleLoggedFocuses, nullRoleSkipWarnedFocuses, lastRolesRefreshAt, healthCheckConsecutiveFailures, POLL_INTERVAL_MS, ROLES_REFRESH_INTERVAL_MS, setPollState, setLastRolesRefreshAt, setLastReadyFocusCount, } from './listener-state.js';
|
|
6
6
|
import { getAgentRoles } from '../queries/roles.js';
|
|
7
7
|
import { hasActiveTeam, getActiveTeamCount, getActiveTeams } from './focus-executor.js';
|
|
@@ -28,6 +28,20 @@ import { startEscalationSpoolDrain } from '../queries/escalation-spool.js';
|
|
|
28
28
|
import { recordFiring, classifyLatestUnclassifiedFiring, isMechanismDemoted, markLatestFiringUnacted, SUPERVISION_MECHANISM } from '../completion/supervision-firing-record.js';
|
|
29
29
|
import { createLogger } from '../shell/log.js';
|
|
30
30
|
const log = createLogger({ module: 'listener' });
|
|
31
|
+
/**
|
|
32
|
+
* The spawn-gate skips the ready pass logs at debug and passes over, re-read live
|
|
33
|
+
* each poll (no cooldown penalty; the focus stays in the ready count, so
|
|
34
|
+
* telemetry is honest):
|
|
35
|
+
* - skip_no_work: surfaced by status, but no open work issue and nothing to
|
|
36
|
+
* scope (a finished delivery waits on the daemon's advance, not on a team).
|
|
37
|
+
* - skip_held: held by an in-flight verify (a team would find nothing to commit
|
|
38
|
+
* and terminate); spawnable the cycle after the hold clears (AC5). debug so a
|
|
39
|
+
* multi-minute verify does not spin-log at info.
|
|
40
|
+
*/
|
|
41
|
+
const QUIET_SKIP_LOG = {
|
|
42
|
+
skip_no_work: 'has no open team work; not spawning',
|
|
43
|
+
skip_held: 'held by an in-flight verify; deferring spawn',
|
|
44
|
+
};
|
|
31
45
|
/**
|
|
32
46
|
* Refresh the in-memory agent-role cache when it is older than the refresh
|
|
33
47
|
* interval, so mid-run role changes are picked up. Best-effort: a fetch failure
|
|
@@ -50,26 +64,6 @@ async function refreshAgentRolesIfStale(organizationId) {
|
|
|
50
64
|
log.warn(`Failed to refresh agent roles: ${err.message}`);
|
|
51
65
|
}
|
|
52
66
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Resolve one ready focus's spawn-gate action from live state (decideFocusSpawn
|
|
55
|
-
* is the pure decision). The capacity input is the LIVE team count sampled at
|
|
56
|
-
* this focus's turn, so a spawn earlier in the pass is reflected for the next
|
|
57
|
-
* focus. The review-cycle cap hold is read only for a focus with no team (the
|
|
58
|
-
* pass's reader, one count read per product). Extracted from processReadyFocuses
|
|
59
|
-
* to keep it under its size floor.
|
|
60
|
-
*/
|
|
61
|
-
async function resolveReadyFocusSpawnAction(focus, role, deps, cfg, readCapHold) {
|
|
62
|
-
const focusId = focus.focus_id;
|
|
63
|
-
return decideFocusSpawn({
|
|
64
|
-
hasRole: role !== undefined,
|
|
65
|
-
hasActiveTeam: hasActiveTeam(focusId),
|
|
66
|
-
reviewCycleCapHeld: !hasActiveTeam(focusId) && await readCapHold(focus),
|
|
67
|
-
...(await deps.resolveFocusVerifyHoldFacts(focusId)),
|
|
68
|
-
inSpawnCooldown: await isNextSpawnInCooldown(cfg, focus),
|
|
69
|
-
activeTeamCount: getActiveTeamCount(),
|
|
70
|
-
maxTotalSessions: cfg.maxTotalSessions,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
67
|
/**
|
|
74
68
|
* Record the focuses a spawn pass left without a team ONLY because every session
|
|
75
69
|
* slot is in use (focus/awaiting-slot.ts, published as awaiting_slot), replacing
|
|
@@ -158,13 +152,8 @@ export async function processReadyFocuses(deps = READY_FOCUS_PASS_DEPS) {
|
|
|
158
152
|
log.error(`Unknown agent role: ${focus.assigned_agent_role_id}`);
|
|
159
153
|
continue;
|
|
160
154
|
}
|
|
161
|
-
if (action === 'skip_held') {
|
|
162
|
-
|
|
163
|
-
// nothing to commit and terminate). Re-read live each poll, so it is
|
|
164
|
-
// spawnable again the cycle after the hold clears -- no cooldown penalty
|
|
165
|
-
// (AC5). Stays in the ready count (already recorded) so telemetry is
|
|
166
|
-
// honest. debug-level so a multi-minute verify does not spin-log at info.
|
|
167
|
-
log.debug(`Focus "${focus.focus_name}" held by an in-flight verify; deferring spawn`);
|
|
155
|
+
if (action === 'skip_no_work' || action === 'skip_held') {
|
|
156
|
+
log.debug(`Focus "${focus.focus_name}" ${QUIET_SKIP_LOG[action]}`);
|
|
168
157
|
continue;
|
|
169
158
|
}
|
|
170
159
|
if (action === 'skip_active_team') {
|