@telora/daemon 0.22.62 → 0.22.78
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/completion/completion-phase-registry.d.ts.map +1 -1
- package/dist/completion/completion-phase-registry.js +1 -0
- package/dist/completion/completion-phase-registry.js.map +1 -1
- package/dist/completion/event-entry-phases.js +3 -3
- package/dist/completion/event-entry-phases.js.map +1 -1
- package/dist/completion/event-escalations.d.ts.map +1 -1
- package/dist/completion/event-escalations.js +4 -0
- package/dist/completion/event-escalations.js.map +1 -1
- package/dist/completion/event.d.ts +1 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/index.js +1 -1
- package/dist/completion/review-cycle-delta.d.ts.map +1 -1
- package/dist/completion/review-cycle-delta.js +2 -1
- package/dist/completion/review-cycle-delta.js.map +1 -1
- package/dist/completion/review-exit-deps.d.ts +4 -1
- package/dist/completion/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit-deps.js +5 -2
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-escalations.d.ts +12 -0
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +22 -7
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-evidence.d.ts +26 -0
- package/dist/completion/review-exit-evidence.d.ts.map +1 -0
- package/dist/completion/review-exit-evidence.js +115 -0
- package/dist/completion/review-exit-evidence.js.map +1 -0
- package/dist/completion/review-exit-phase.d.ts +14 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +58 -81
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-progress.d.ts.map +1 -1
- package/dist/completion/review-exit-progress.js +14 -1
- package/dist/completion/review-exit-progress.js.map +1 -1
- package/dist/completion/review-exit-rehoming.d.ts +53 -0
- package/dist/completion/review-exit-rehoming.d.ts.map +1 -0
- package/dist/completion/review-exit-rehoming.js +57 -0
- package/dist/completion/review-exit-rehoming.js.map +1 -0
- package/dist/completion/settle-injection-sweep.d.ts +7 -2
- package/dist/completion/settle-injection-sweep.d.ts.map +1 -1
- package/dist/completion/settle-injection-sweep.js +32 -2
- package/dist/completion/settle-injection-sweep.js.map +1 -1
- package/dist/completion/state-cascade.d.ts +13 -12
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +35 -1
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +56 -23
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-loop-registry.js +2 -2
- package/dist/focus/focus-loop-registry.js.map +1 -1
- package/dist/nexus/return.d.ts +7 -5
- package/dist/nexus/return.d.ts.map +1 -1
- package/dist/nexus/return.js +7 -6
- package/dist/nexus/return.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts +0 -18
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +40 -20
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/queries/agent-resolvable-promotion.d.ts +53 -0
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +114 -7
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +1 -0
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/escalations.d.ts +34 -2
- package/dist/queries/escalations.d.ts.map +1 -1
- package/dist/queries/escalations.js +72 -4
- package/dist/queries/escalations.js.map +1 -1
- package/dist/queries/focuses.d.ts +13 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +18 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/issues.d.ts +9 -0
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +11 -0
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/verification.d.ts +14 -2
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +43 -6
- package/dist/queries/verification.js.map +1 -1
- package/dist/reality/reality-writeback.d.ts +28 -0
- package/dist/reality/reality-writeback.d.ts.map +1 -1
- package/dist/reality/reality-writeback.js +30 -0
- package/dist/reality/reality-writeback.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +16 -10
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +52 -35
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/types/focus.d.ts +12 -0
- package/dist/types/focus.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +1 -0
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/unreviewed-settle-detector.d.ts +36 -1
- package/dist/verify/unreviewed-settle-detector.d.ts.map +1 -1
- package/dist/verify/unreviewed-settle-detector.js +98 -32
- package/dist/verify/unreviewed-settle-detector.js.map +1 -1
- package/dist/verify/verification-boundary-env.d.ts +51 -0
- package/dist/verify/verification-boundary-env.d.ts.map +1 -0
- package/dist/verify/verification-boundary-env.js +63 -0
- package/dist/verify/verification-boundary-env.js.map +1 -0
- package/dist/verify/verification-deps-default.js +2 -1
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.js +1 -1
- package/dist/verify/verification-deps.js.map +1 -1
- package/dist/verify/verification-deterministic.d.ts +11 -1
- package/dist/verify/verification-deterministic.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.js +26 -5
- package/dist/verify/verification-deterministic.js.map +1 -1
- package/dist/verify/verification-engine.d.ts +1 -0
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +28 -4
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts +52 -0
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -0
- package/dist/verify/verification-evidence-unavailable-feedback.js +178 -0
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -0
- package/dist/verify/verification-feedback.d.ts +34 -59
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +64 -172
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verify-restatement.d.ts.map +1 -1
- package/dist/verify/verify-restatement.js +2 -1
- package/dist/verify/verify-restatement.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ReviewFiledFindingSummary } from './review-exit-escalations.js';
|
|
2
|
+
import type { ReviewExitDeps } from './review-exit-deps.js';
|
|
3
|
+
/** The review-filed evidence bundle the routing decision tree consumes. */
|
|
4
|
+
export interface ReviewExitEvidence {
|
|
5
|
+
reportExists: boolean;
|
|
6
|
+
reviewOutcome: 'approved' | 'gaps_found' | null;
|
|
7
|
+
reviewCreatedIssueIds: string[];
|
|
8
|
+
hasIssueEvidence: boolean;
|
|
9
|
+
hasBlockingIssueEvidence: boolean;
|
|
10
|
+
deferrableIssueIds: Set<string>;
|
|
11
|
+
attributedDeliveryIds: ReadonlySet<string>;
|
|
12
|
+
reviewFiledTargetDeliveryIds: ReadonlySet<string>;
|
|
13
|
+
openBlockingFindings: ReviewFiledFindingSummary[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Gather the review-exit evidence for a focus/session. Every read is best-effort:
|
|
17
|
+
* a failure logs and degrades to the empty/no-evidence default, exactly as the
|
|
18
|
+
* inline block did -- routing runs regardless.
|
|
19
|
+
*/
|
|
20
|
+
export declare function gatherReviewExitEvidence(deps: ReviewExitDeps, args: {
|
|
21
|
+
focusId: string;
|
|
22
|
+
focusName: string;
|
|
23
|
+
sessionId: string;
|
|
24
|
+
reviewRequestedAt: string | null;
|
|
25
|
+
}): Promise<ReviewExitEvidence>;
|
|
26
|
+
//# sourceMappingURL=review-exit-evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-evidence.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-evidence.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC;IAChD,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAChG,OAAO,CAAC,kBAAkB,CAAC,CA6F7B"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: none -- no test imports this module directly (baselined; see lint:pinned-by)
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* Evidence-gathering phase of the review-exit handler.
|
|
6
|
+
*
|
|
7
|
+
* Reads the review report + the focus's issues (both best-effort, a read failure
|
|
8
|
+
* degrades to "no evidence" rather than aborting) and derives every review-filed
|
|
9
|
+
* signal the routing decision tree downstream consumes: the stamped verdict, the
|
|
10
|
+
* session's created-issue ids, the focus-wide review-filed id union, the
|
|
11
|
+
* deferrable-note set, the gaps_found attribution target sets, and the enumerated
|
|
12
|
+
* open blocking findings.
|
|
13
|
+
*
|
|
14
|
+
* Extracted verbatim from review-exit-phase.ts to keep that file under the
|
|
15
|
+
* size limit -- sibling of review-exit-attribution.ts / review-exit-escalations.ts.
|
|
16
|
+
* Bodies (and their comments) are unchanged.
|
|
17
|
+
*
|
|
18
|
+
* @module completion/review-exit-evidence
|
|
19
|
+
*/
|
|
20
|
+
import { resolveAttributedDeliveryIds } from './review-exit-attribution.js';
|
|
21
|
+
import { reviewFiledIssueExistsComplete, blockingReviewFiledIssueExistsComplete, filterDeferrableReviewNotesComplete, filterBlockingReviewFiledComplete, } from './review-defect-detector.js';
|
|
22
|
+
import { createLogger } from '../shell/log.js';
|
|
23
|
+
const log = createLogger({ module: 'focus-executor' });
|
|
24
|
+
/**
|
|
25
|
+
* Gather the review-exit evidence for a focus/session. Every read is best-effort:
|
|
26
|
+
* a failure logs and degrades to the empty/no-evidence default, exactly as the
|
|
27
|
+
* inline block did -- routing runs regardless.
|
|
28
|
+
*/
|
|
29
|
+
export async function gatherReviewExitEvidence(deps, args) {
|
|
30
|
+
const { focusId, focusName, sessionId, reviewRequestedAt } = args;
|
|
31
|
+
let reportExists = false;
|
|
32
|
+
// The review's stamped VERDICT ('approved' | 'gaps_found' | null). This is the
|
|
33
|
+
// signal the gate previously discarded: a gaps_found report can never converge
|
|
34
|
+
// a verify delivery to done. Read failure => null (treated as no verdict, the
|
|
35
|
+
// safe direction -- no gaps_found routing, no inconsistency escalation).
|
|
36
|
+
let reviewOutcome = null;
|
|
37
|
+
// The issue ids THIS review session filed (the gaps_found verdict's target set).
|
|
38
|
+
let reviewCreatedIssueIds = [];
|
|
39
|
+
try {
|
|
40
|
+
const report = await deps.getFocusReviewReportForSession(focusId, sessionId);
|
|
41
|
+
reportExists = report.exists;
|
|
42
|
+
reviewOutcome = report.outcome;
|
|
43
|
+
reviewCreatedIssueIds = report.createdIssueIds ?? [];
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
log.warn(`[focus-executor] getFocusReviewReportForSession failed for "${focusName}" session ${sessionId}: ${err.message}`);
|
|
47
|
+
// Treat read failure the same as missing.
|
|
48
|
+
}
|
|
49
|
+
let hasIssueEvidence = false;
|
|
50
|
+
// Whether any review-filed issue is BLOCKING (P0/P1 or unprioritized). A
|
|
51
|
+
// review that filed ONLY deferrable low-severity notes converges cleanly and
|
|
52
|
+
// must NOT raise the review_missing_report notice or be labeled issue-evidence
|
|
53
|
+
// routing. Computed from the same focus-issue read.
|
|
54
|
+
let hasBlockingIssueEvidence = false;
|
|
55
|
+
// Ids of open, review-filed, deferrable (P2/P3) notes. Used below to mark the
|
|
56
|
+
// matching reconciler issues so the verify-routing reconciler does not treat
|
|
57
|
+
// them as blocking open work. Empty on read failure => current behavior
|
|
58
|
+
// (every open issue blocking).
|
|
59
|
+
let deferrableIssueIds = new Set();
|
|
60
|
+
// The focus-wide, time-independent set of review-filed issue ids
|
|
61
|
+
// (focus_reviews.created_issue_ids union). Read best-effort BEFORE the focus
|
|
62
|
+
// issues so the classification below keys on the non-lossy set; on read failure
|
|
63
|
+
// (or a partial test deps object) it is empty and the classification falls back
|
|
64
|
+
// to the legacy review-window heuristic alone.
|
|
65
|
+
let reviewFiledIds = new Set();
|
|
66
|
+
if (deps.getFocusReviewFiledIssueIds) {
|
|
67
|
+
try {
|
|
68
|
+
reviewFiledIds = new Set(await deps.getFocusReviewFiledIssueIds(focusId));
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
log.warn(`[focus-executor] getFocusReviewFiledIssueIds failed for "${focusName}": ${err.message}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Delivery attribution for a gaps_found verdict: the deliveries that OWN this
|
|
75
|
+
// review's filed gap issues (the verdict's target set; see
|
|
76
|
+
// review-exit-attribution.ts). A delivery NOT in it converges on its own merits.
|
|
77
|
+
let attributedDeliveryIds = new Set();
|
|
78
|
+
// The focus-wide, non-lossy EVIDENCE target set: deliveries that own an OPEN,
|
|
79
|
+
// BLOCKING, REVIEW-FILED gap (the reviewFiledIds union, NOT the exiting
|
|
80
|
+
// session's own createdIssueIds) -- routable by WHICHEVER session next reaches
|
|
81
|
+
// this path, re-opening a done delivery on evidence rather than the verdict.
|
|
82
|
+
let reviewFiledTargetDeliveryIds = new Set();
|
|
83
|
+
// Open, blocking, review-filed findings on the focus -- enumerated in the
|
|
84
|
+
// hand-off-exhausted escalation, and the re-homing candidate set. Empty on read failure.
|
|
85
|
+
let openBlockingFindings = [];
|
|
86
|
+
const createdIssueIdSet = new Set(reviewCreatedIssueIds);
|
|
87
|
+
try {
|
|
88
|
+
const focusIssues = await deps.getFocusIssues(focusId);
|
|
89
|
+
hasIssueEvidence = reviewFiledIssueExistsComplete(focusIssues, reviewFiledIds, reviewRequestedAt);
|
|
90
|
+
hasBlockingIssueEvidence = blockingReviewFiledIssueExistsComplete(focusIssues, reviewFiledIds, reviewRequestedAt);
|
|
91
|
+
deferrableIssueIds = new Set(filterDeferrableReviewNotesComplete(focusIssues, reviewFiledIds, reviewRequestedAt).map(i => i.id));
|
|
92
|
+
attributedDeliveryIds = resolveAttributedDeliveryIds(focusIssues, createdIssueIdSet);
|
|
93
|
+
reviewFiledTargetDeliveryIds = resolveAttributedDeliveryIds(focusIssues, reviewFiledIds);
|
|
94
|
+
openBlockingFindings = filterBlockingReviewFiledComplete(focusIssues, reviewFiledIds, reviewRequestedAt)
|
|
95
|
+
.map(i => ({ id: i.id, key: i.key, title: i.title, deliveryId: i.deliveryId ?? null, description: i.description ?? null }));
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
log.warn(`[focus-executor] getFocusIssues failed for "${focusName}": ${err.message}`);
|
|
99
|
+
// Treat read failure as no evidence -- only affects the warn-and-leave
|
|
100
|
+
// message and the issue-evidence notice; routing runs regardless (with
|
|
101
|
+
// every open issue treated as blocking, i.e. the pre-deferrability default).
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
reportExists,
|
|
105
|
+
reviewOutcome,
|
|
106
|
+
reviewCreatedIssueIds,
|
|
107
|
+
hasIssueEvidence,
|
|
108
|
+
hasBlockingIssueEvidence,
|
|
109
|
+
deferrableIssueIds,
|
|
110
|
+
attributedDeliveryIds,
|
|
111
|
+
reviewFiledTargetDeliveryIds,
|
|
112
|
+
openBlockingFindings,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=review-exit-evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-evidence.js","sourceRoot":"","sources":["../../src/completion/review-exit-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,20 @@ export interface ReviewExitParams {
|
|
|
38
38
|
* inspection by definition).
|
|
39
39
|
*/
|
|
40
40
|
reviewInspected?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The focus's `reviewed_through_sha` captured AT SPAWN (FocusTeamState.
|
|
43
|
+
* reviewPriorWatermark) -- the coverage watermark the PREVIOUS review pass
|
|
44
|
+
* left. The hand-off delta rule measures the covered SHA against THIS value,
|
|
45
|
+
* not `current.reviewed_through_sha` read at handler entry: since migration
|
|
46
|
+
* 20260909203246, review_complete promotes the current spawn-tip into
|
|
47
|
+
* reviewed_through_sha in the same transaction as the verdict, so the focus-row
|
|
48
|
+
* read at exit always equals the covered SHA and the branch-advanced clause
|
|
49
|
+
* could never fire. `undefined` when the carry was lost (a daemon restart
|
|
50
|
+
* mid-review); the handler then falls back to the focus-row read -- a lost
|
|
51
|
+
* carry is treated as no proof of advance either way (the delta rule still
|
|
52
|
+
* catches convergence and freshly-filed issues).
|
|
53
|
+
*/
|
|
54
|
+
reviewPriorWatermark?: string | null;
|
|
41
55
|
}
|
|
42
56
|
export { __resetCoverageDriftStateForTests, resetCoverageDriftState, } from './coverage-drift-state.js';
|
|
43
57
|
/** Whether the focus's next review must be a full pass (drift-triggered). Consumes the flag. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AA0DA,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,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;IAC1B;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;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,CAkmBf"}
|
|
@@ -1,12 +1,16 @@
|
|
|
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/completion/review-coverage-gate.test.ts,
|
|
3
|
+
// packages/daemon/src/completion/review-exit-convergence-sweep.test.ts,
|
|
3
4
|
// packages/daemon/src/completion/review-exit-coverage-watermark.test.ts,
|
|
5
|
+
// packages/daemon/src/completion/review-exit-created-issue-ids-durability.test.ts,
|
|
4
6
|
// packages/daemon/src/completion/review-exit-evidence-durability.test.ts,
|
|
5
7
|
// packages/daemon/src/completion/review-exit-external-hold.test.ts,
|
|
6
8
|
// packages/daemon/src/completion/review-exit-gaps-verdict.test.ts,
|
|
7
9
|
// packages/daemon/src/completion/review-exit-inspection-gate.test.ts,
|
|
8
10
|
// packages/daemon/src/completion/review-exit-operator-hold.test.ts,
|
|
11
|
+
// packages/daemon/src/completion/review-exit-rehoming.test.ts,
|
|
9
12
|
// packages/daemon/src/completion/review-exit-shortfall-hold.test.ts,
|
|
13
|
+
// packages/daemon/src/completion/review-exit-watermark-delta.test.ts,
|
|
10
14
|
// packages/daemon/src/completion/review-window-debt-reviewed-through-sha.test.ts,
|
|
11
15
|
// packages/daemon/src/delivery/delivery-state-machine-characterization.test.ts
|
|
12
16
|
// PINNED-BY-END
|
|
@@ -31,8 +35,9 @@ import { resolveShortfallHold, writeShortfallGateState, describeShortfallHold, }
|
|
|
31
35
|
import { recordReviewCycleAndMaybeEscalate, fileCoverageIncompleteEscalation, fileGapsWithoutIssueEscalation, fileMissingReportNotice, recordHandoffAndMaybeTerminate, } from './review-exit-escalations.js';
|
|
32
36
|
import { forceFullPassReviewFocuses, recordBelowCoverageDrift, resetCoverageDriftState } from './coverage-drift-state.js';
|
|
33
37
|
import { resolveReviewCycleProgress } from './review-exit-progress.js';
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
38
|
+
import { resolveGapsAttribution } from './review-exit-attribution.js';
|
|
39
|
+
import { resolveOutsideWindowFindings, rehomeOutsideWindowFindings } from './review-exit-rehoming.js';
|
|
40
|
+
import { gatherReviewExitEvidence } from './review-exit-evidence.js';
|
|
36
41
|
import { createLogger } from '../shell/log.js';
|
|
37
42
|
import { defaultReviewExitDeps } from './review-exit-deps.js';
|
|
38
43
|
const log = createLogger({ module: 'focus-executor' });
|
|
@@ -87,7 +92,7 @@ export function consumeForceFullPassReview(focusId) {
|
|
|
87
92
|
* Exported with injectable deps for unit testing.
|
|
88
93
|
*/
|
|
89
94
|
export async function runReviewExitHandler(params, deps = defaultReviewExitDeps) {
|
|
90
|
-
const { focusId, focusName, organizationId, productId, sessionId, sessionType, succeeded, reviewSpawnTip, currentBranchTip, reviewInspected } = params;
|
|
95
|
+
const { focusId, focusName, organizationId, productId, sessionId, sessionType, succeeded, reviewSpawnTip, currentBranchTip, reviewInspected, reviewPriorWatermark } = params;
|
|
91
96
|
// Anchor shared by every escalation this exit can raise (review-exit-escalations.ts).
|
|
92
97
|
const escalationCtx = { organizationId, focusId, focusName, sessionId };
|
|
93
98
|
// The SHA to stamp as coverage = what the review actually saw (spawn-tip);
|
|
@@ -136,83 +141,10 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
136
141
|
// non-routed branch below, where leaving the flag set for an incoming team is
|
|
137
142
|
// the legitimate behavior.
|
|
138
143
|
// ── Gather evidence ──────────────────────────────────────────────
|
|
139
|
-
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
// safe direction -- no gaps_found routing, no inconsistency escalation).
|
|
144
|
-
let reviewOutcome = null;
|
|
145
|
-
// The issue ids THIS review session filed (the gaps_found verdict's target set).
|
|
146
|
-
let reviewCreatedIssueIds = [];
|
|
147
|
-
try {
|
|
148
|
-
const report = await deps.getFocusReviewReportForSession(focusId, sessionId);
|
|
149
|
-
reportExists = report.exists;
|
|
150
|
-
reviewOutcome = report.outcome;
|
|
151
|
-
reviewCreatedIssueIds = report.createdIssueIds ?? [];
|
|
152
|
-
}
|
|
153
|
-
catch (err) {
|
|
154
|
-
log.warn(`[focus-executor] getFocusReviewReportForSession failed for "${focusName}" session ${sessionId}: ${err.message}`);
|
|
155
|
-
// Treat read failure the same as missing.
|
|
156
|
-
}
|
|
157
|
-
let hasIssueEvidence = false;
|
|
158
|
-
// Whether any review-filed issue is BLOCKING (P0/P1 or unprioritized). A
|
|
159
|
-
// review that filed ONLY deferrable low-severity notes converges cleanly and
|
|
160
|
-
// must NOT raise the review_missing_report notice or be labeled issue-evidence
|
|
161
|
-
// routing. Computed from the same focus-issue read.
|
|
162
|
-
let hasBlockingIssueEvidence = false;
|
|
163
|
-
// Ids of open, review-filed, deferrable (P2/P3) notes. Used below to mark the
|
|
164
|
-
// matching reconciler issues so the verify-routing reconciler does not treat
|
|
165
|
-
// them as blocking open work. Empty on read failure => current behavior
|
|
166
|
-
// (every open issue blocking).
|
|
167
|
-
let deferrableIssueIds = new Set();
|
|
168
|
-
// The focus-wide, time-independent set of review-filed issue ids
|
|
169
|
-
// (focus_reviews.created_issue_ids union). Read best-effort BEFORE the focus
|
|
170
|
-
// issues so the classification below keys on the non-lossy set; on read failure
|
|
171
|
-
// (or a partial test deps object) it is empty and the classification falls back
|
|
172
|
-
// to the legacy review-window heuristic alone.
|
|
173
|
-
let reviewFiledIds = new Set();
|
|
174
|
-
if (deps.getFocusReviewFiledIssueIds) {
|
|
175
|
-
try {
|
|
176
|
-
reviewFiledIds = new Set(await deps.getFocusReviewFiledIssueIds(focusId));
|
|
177
|
-
}
|
|
178
|
-
catch (err) {
|
|
179
|
-
log.warn(`[focus-executor] getFocusReviewFiledIssueIds failed for "${focusName}": ${err.message}`);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
// Delivery attribution for a gaps_found verdict: the deliveries that OWN this
|
|
183
|
-
// review's filed gap issues (the verdict's target set; see
|
|
184
|
-
// review-exit-attribution.ts). A delivery NOT in it converges on its own merits.
|
|
185
|
-
let attributedDeliveryIds = new Set();
|
|
186
|
-
// The focus-wide, non-lossy EVIDENCE target set: deliveries that own an OPEN,
|
|
187
|
-
// BLOCKING, REVIEW-FILED gap (the reviewFiledIds union, NOT the exiting
|
|
188
|
-
// session's own createdIssueIds). This is what makes a finding routable by
|
|
189
|
-
// WHICHEVER session next reaches the review-exit path -- not only the session
|
|
190
|
-
// that filed it -- and what re-opens a done delivery on evidence rather than
|
|
191
|
-
// the exiting session's verdict. Closed gaps and deferrable low-severity notes
|
|
192
|
-
// are excluded by resolveAttributedDeliveryIds; human-filed issues are excluded
|
|
193
|
-
// because they are not in the review-filed set.
|
|
194
|
-
let reviewFiledTargetDeliveryIds = new Set();
|
|
195
|
-
// Open, blocking, review-filed findings on the focus -- enumerated in the
|
|
196
|
-
// hand-off-exhausted escalation so it STATES what it measured (rather than
|
|
197
|
-
// asserting "nothing left to route"). Empty on read failure.
|
|
198
|
-
let openBlockingFindings = [];
|
|
199
|
-
const createdIssueIdSet = new Set(reviewCreatedIssueIds);
|
|
200
|
-
try {
|
|
201
|
-
const focusIssues = await deps.getFocusIssues(focusId);
|
|
202
|
-
hasIssueEvidence = reviewFiledIssueExistsComplete(focusIssues, reviewFiledIds, reviewRequestedAt);
|
|
203
|
-
hasBlockingIssueEvidence = blockingReviewFiledIssueExistsComplete(focusIssues, reviewFiledIds, reviewRequestedAt);
|
|
204
|
-
deferrableIssueIds = new Set(filterDeferrableReviewNotesComplete(focusIssues, reviewFiledIds, reviewRequestedAt).map(i => i.id));
|
|
205
|
-
attributedDeliveryIds = resolveAttributedDeliveryIds(focusIssues, createdIssueIdSet);
|
|
206
|
-
reviewFiledTargetDeliveryIds = resolveAttributedDeliveryIds(focusIssues, reviewFiledIds);
|
|
207
|
-
openBlockingFindings = filterBlockingReviewFiledComplete(focusIssues, reviewFiledIds, reviewRequestedAt)
|
|
208
|
-
.map(i => ({ key: i.key, title: i.title, deliveryId: i.deliveryId ?? null }));
|
|
209
|
-
}
|
|
210
|
-
catch (err) {
|
|
211
|
-
log.warn(`[focus-executor] getFocusIssues failed for "${focusName}": ${err.message}`);
|
|
212
|
-
// Treat read failure as no evidence -- only affects the warn-and-leave
|
|
213
|
-
// message and the issue-evidence notice; routing runs regardless (with
|
|
214
|
-
// every open issue treated as blocking, i.e. the pre-deferrability default).
|
|
215
|
-
}
|
|
144
|
+
// Read the review report + focus issues and derive every review-filed signal
|
|
145
|
+
// the routing decision tree consumes (review-exit-evidence.ts). Best-effort:
|
|
146
|
+
// a read failure degrades to no-evidence defaults, routing runs regardless.
|
|
147
|
+
const { reportExists, reviewOutcome, reviewCreatedIssueIds, hasIssueEvidence, hasBlockingIssueEvidence, deferrableIssueIds, attributedDeliveryIds, reviewFiledTargetDeliveryIds, openBlockingFindings, } = await gatherReviewExitEvidence(deps, { focusId, focusName, sessionId, reviewRequestedAt });
|
|
216
148
|
// The gaps-without-issue inconsistency (below) keys on hasBlockingIssueEvidence
|
|
217
149
|
// -- whether the review filed a blocking issue ANYWHERE in the focus (read
|
|
218
150
|
// focus-wide from the complete review-filed id set above), NOT a verify-scoped
|
|
@@ -230,6 +162,15 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
230
162
|
// team that left pre-existing open work behind no longer needs the review
|
|
231
163
|
// agent to file fresh defects before the loop can correct itself.
|
|
232
164
|
const reviewDeliveries = await deps.getFocusDeliveries(focusId);
|
|
165
|
+
// Re-home a gaps_found review's blocking findings that were filed OUTSIDE the
|
|
166
|
+
// active verify window (on a done / sibling delivery) onto the delivery in
|
|
167
|
+
// verify, BEFORE per-delivery routing -- so that delivery re-enters coding
|
|
168
|
+
// CARRYING the finding instead of routing to verify_failed with "no blocking
|
|
169
|
+
// issue filed". Unambiguous single-in-verify case only (review-exit-rehoming.ts).
|
|
170
|
+
const verifyDeliveryIds = new Set(reviewDeliveries.filter(d => d.executionStatus === DELIVERY_STATUS.VERIFY).map(d => d.id));
|
|
171
|
+
if (deps.rehomeIssueToDelivery && windowOpen && reviewOutcome === 'gaps_found') {
|
|
172
|
+
await rehomeOutsideWindowFindings({ rehomeIssueToDelivery: deps.rehomeIssueToDelivery }, focusName, resolveOutsideWindowFindings(openBlockingFindings, verifyDeliveryIds), verifyDeliveryIds);
|
|
173
|
+
}
|
|
233
174
|
let routedAny = false;
|
|
234
175
|
// Whether any delivery CONVERGED to done this cycle -- feeds the review-cycle
|
|
235
176
|
// delta (a convergence is progress; a verify_failed re-route is not).
|
|
@@ -250,6 +191,11 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
250
191
|
// delivery is targeted and every delivery reads 'unresolvable' -- absence of
|
|
251
192
|
// attribution holds toward intent, it does not become a pass.
|
|
252
193
|
const attributionResolvable = attributedDeliveryIds.size > 0;
|
|
194
|
+
// Delivery ids that CONVERGED to a terminal (done) this cycle, and whether any
|
|
195
|
+
// delivery re-opened to verify_failed -- the two facts the post-loop
|
|
196
|
+
// convergence sweep reads to decide the focus actually converged.
|
|
197
|
+
const convergedDeliveryIds = new Set();
|
|
198
|
+
let anyReopenedToVerifyFailed = false;
|
|
253
199
|
for (const d of reviewDeliveries) {
|
|
254
200
|
const isVerify = d.executionStatus === DELIVERY_STATUS.VERIFY;
|
|
255
201
|
// A done delivery re-opens when EITHER the exiting session's gaps_found
|
|
@@ -368,6 +314,7 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
368
314
|
: 'clean review exit with no inspection evidence (blind gate -- bounded re-work)';
|
|
369
315
|
log.info(`Delivery "${d.name}" moved from ${fromStatus} to verify_failed: ${failReason}`);
|
|
370
316
|
routedAny = true;
|
|
317
|
+
anyReopenedToVerifyFailed = true;
|
|
371
318
|
}
|
|
372
319
|
else if (target === DELIVERY_STATUS.DONE && reportExists) {
|
|
373
320
|
// Review stamped a verdict. product-api already refuses an `approved`
|
|
@@ -388,6 +335,7 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
388
335
|
log.info(`Delivery "${d.name}" moved from verify to done (review passed)`);
|
|
389
336
|
routedAny = true;
|
|
390
337
|
convergedAny = true;
|
|
338
|
+
convergedDeliveryIds.add(d.id);
|
|
391
339
|
}
|
|
392
340
|
}
|
|
393
341
|
else if (target === DELIVERY_STATUS.DONE && !shortfallsClear) {
|
|
@@ -417,6 +365,7 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
417
365
|
`(clean review, full coverage @ ${(reviewSpawnTip ?? '').slice(0, 12)}, no defects filed)`);
|
|
418
366
|
routedAny = true;
|
|
419
367
|
convergedAny = true;
|
|
368
|
+
convergedDeliveryIds.add(d.id);
|
|
420
369
|
}
|
|
421
370
|
else {
|
|
422
371
|
belowCoverageHold = true;
|
|
@@ -498,7 +447,15 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
498
447
|
// rearms it. See review-exit-progress.ts.
|
|
499
448
|
await resolveReviewCycleProgress(deps, escalationCtx, {
|
|
500
449
|
coveredSha,
|
|
501
|
-
|
|
450
|
+
// Measure the delta against the watermark the PRIOR review pass left,
|
|
451
|
+
// carried from spawn (reviewPriorWatermark) so review_complete's same-txn
|
|
452
|
+
// promotion of the current spawn-tip into reviewed_through_sha (migration
|
|
453
|
+
// 20260909203246) cannot erase the value we compare against. Fall back to
|
|
454
|
+
// the focus-row read ONLY when the carry was lost (undefined -- a restart
|
|
455
|
+
// mid-review); a lost carry is no proof of advance either way.
|
|
456
|
+
priorReviewedSha: reviewPriorWatermark !== undefined
|
|
457
|
+
? reviewPriorWatermark
|
|
458
|
+
: (current.reviewed_through_sha ?? null),
|
|
502
459
|
deliveryConverged: convergedAny,
|
|
503
460
|
issuesFiled: reviewCreatedIssueIds.length > 0,
|
|
504
461
|
currentHandoffCount: current.review_handoff_count ?? 0,
|
|
@@ -653,5 +610,25 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
653
610
|
if (routedAny && !reportExists && hasBlockingIssueEvidence) {
|
|
654
611
|
await fileMissingReportNotice(deps, escalationCtx);
|
|
655
612
|
}
|
|
613
|
+
// Convergence sweep: when THIS cycle converged the focus -- a delivery reached
|
|
614
|
+
// done, nothing re-opened to verify_failed, no hold stands, and every delivery
|
|
615
|
+
// is now terminal -- the review-family / team_failure escalations describe a
|
|
616
|
+
// focus that could NOT converge, and it just did. Retire them auto_swept so a
|
|
617
|
+
// converged focus carries no pending operator rows (the 2026-09-10 stranded
|
|
618
|
+
// review-family rows and the 2026-09-09 team_failure-after-last-delivery row).
|
|
619
|
+
if (convergedAny && !anyReopenedToVerifyFailed && !operatorHeldAny &&
|
|
620
|
+
!externalHeldAny && !shortfallHold && !belowCoverageHold &&
|
|
621
|
+
deps.resolveConvergedFocusEscalations &&
|
|
622
|
+
reviewDeliveries.every(d => d.executionStatus === DELIVERY_STATUS.DONE ||
|
|
623
|
+
d.executionStatus === DELIVERY_STATUS.CANCELLED ||
|
|
624
|
+
convergedDeliveryIds.has(d.id))) {
|
|
625
|
+
try {
|
|
626
|
+
await deps.resolveConvergedFocusEscalations(focusId, `Focus "${focusName}" converged (verify deliveries reached done, review approved, ` +
|
|
627
|
+
`session ${sessionId}); convergence-terminated escalations auto-swept.`);
|
|
628
|
+
}
|
|
629
|
+
catch (err) {
|
|
630
|
+
log.warn(`[focus-executor] resolveConvergedFocusEscalations failed for "${focusName}": ${err.message}`);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
656
633
|
}
|
|
657
634
|
//# sourceMappingURL=review-exit-phase.js.map
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-progress.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-progress.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAC;AAKtC;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,2BAA2B,EAChC,KAAK,EAAE,gBAAgB,GAAG;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2FAA2F;IAC3F,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAClC,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,yBAAyB,EAAE,CAAC;CACpD,GACA,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"review-exit-progress.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-progress.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAC;AAKtC;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,2BAA2B,EAChC,KAAK,EAAE,gBAAgB,GAAG;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2FAA2F;IAC3F,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAClC,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,yBAAyB,EAAE,CAAC;CACpD,GACA,OAAO,CAAC,OAAO,CAAC,CAyClB"}
|
|
@@ -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: packages/daemon/src/completion/review-exit-breaker-hold.test.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
4
|
/**
|
|
5
5
|
* The review-exit hand-off counter's reset-or-bound decision.
|
|
@@ -41,6 +41,19 @@ export async function resolveReviewCycleProgress(deps, ctx, state) {
|
|
|
41
41
|
log.warn(`[focus-executor] setReviewHandoffCount(0) failed for "${ctx.focusName}": ${err.message}`);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
+
// A real delta also LIFTS a standing breaker hold: if the hand-off breaker had
|
|
45
|
+
// crossed and its review_handoff_exhausted escalation is still open, this
|
|
46
|
+
// cycle's progress is exactly the "real delta" that clears it, so the review
|
|
47
|
+
// window re-opens without an operator. Best-effort; the operator path clears
|
|
48
|
+
// it too.
|
|
49
|
+
if (deps.resolveHandoffExhaustedHold) {
|
|
50
|
+
try {
|
|
51
|
+
await deps.resolveHandoffExhaustedHold(ctx.focusId, 'Review hand-off breaker hold cleared: the focus recorded a real review-cycle delta (progress resumed).');
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
log.warn(`[focus-executor] resolveHandoffExhaustedHold failed for "${ctx.focusName}": ${err.message}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
44
57
|
return true;
|
|
45
58
|
}
|
|
46
59
|
// Routed a status but changed nothing (a no-delta round trip). Do NOT rearm the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-progress.js","sourceRoot":"","sources":["../../src/completion/review-exit-progress.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"review-exit-progress.js","sourceRoot":"","sources":["../../src/completion/review-exit-progress.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,6EAA6E;AAC7E,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,wBAAwB,EAAyB,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EACL,8BAA8B,GAI/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAsB,EACtB,GAAgC,EAChC,KAMC;IAED,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,KAAK,EAAE,CAAC;QACV,+EAA+E;QAC/E,IAAI,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CACN,yDAAyD,GAAG,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACrG,CAAC;YACJ,CAAC;QACH,CAAC;QACD,+EAA+E;QAC/E,0EAA0E;QAC1E,6EAA6E;QAC7E,6EAA6E;QAC7E,UAAU;QACV,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,2BAA2B,CACpC,GAAG,CAAC,OAAO,EACX,wGAAwG,CACzG,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CACN,4DAA4D,GAAG,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACxG,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,gFAAgF;IAChF,+EAA+E;IAC/E,+EAA+E;IAC/E,MAAM,8BAA8B,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,mBAAmB,EAAE;QACzE,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;KACjD,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-home a review finding filed outside the active verify window onto the
|
|
3
|
+
* delivery in verify.
|
|
4
|
+
*
|
|
5
|
+
* The failure this closes (2026-09-10, Tinker Tailor focus d800be18): a review
|
|
6
|
+
* stamped gaps_found and filed its real blocking findings on a delivery that was
|
|
7
|
+
* already DONE, while the sibling delivery in verify carried nothing. The
|
|
8
|
+
* per-delivery router then routed the in-verify delivery to verify_failed with
|
|
9
|
+
* "gaps_found with no blocking issue filed (routing inconsistency)" -- the finding
|
|
10
|
+
* sat open where nothing routed it, and the loop cycled review forever.
|
|
11
|
+
*
|
|
12
|
+
* The done-delivery re-open path (reviewFiledTargetDeliveryIds) did not fire
|
|
13
|
+
* because it keys on the LOSSY focus_reviews.created_issue_ids union -- which had
|
|
14
|
+
* not captured the findings. `openBlockingFindings`, by contrast, is built from
|
|
15
|
+
* the NON-LOSSY detector (id-set OR review-window heuristic; see
|
|
16
|
+
* review-defect-detector.ts) and DID enumerate them (it named the done-delivery
|
|
17
|
+
* id in the escalation metadata). So the finding was visible all along; nothing
|
|
18
|
+
* acted on it. This module acts: it re-homes each outside-window blocking finding
|
|
19
|
+
* onto the delivery in verify so that delivery routes back to coding CARRYING the
|
|
20
|
+
* finding, and the next review approves.
|
|
21
|
+
*
|
|
22
|
+
* Pure classifier + best-effort executor, split from review-exit-phase.ts so that
|
|
23
|
+
* file stays under the size limit -- sibling of review-exit-attribution.ts.
|
|
24
|
+
*
|
|
25
|
+
* @module completion/review-exit-rehoming
|
|
26
|
+
*/
|
|
27
|
+
import type { ReviewFiledFindingSummary } from './review-exit-escalations.js';
|
|
28
|
+
/** The issue-move dep this module needs (a thin slice of the query layer). */
|
|
29
|
+
export interface RehomeDeps {
|
|
30
|
+
/** Move an issue to a different delivery, replacing its description. */
|
|
31
|
+
rehomeIssueToDelivery: (issueId: string, deliveryId: string, description: string) => Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Pure: the open, blocking, review-filed findings whose delivery is NOT in the
|
|
35
|
+
* active verify window -- the findings that cannot route the in-verify delivery
|
|
36
|
+
* back to coding unless they are re-homed onto it. A finding already on a verify
|
|
37
|
+
* delivery, or with no delivery, is excluded.
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveOutsideWindowFindings(findings: ReviewFiledFindingSummary[], verifyDeliveryIds: ReadonlySet<string>): ReviewFiledFindingSummary[];
|
|
40
|
+
/**
|
|
41
|
+
* Re-home outside-window blocking findings onto the SINGLE delivery in verify.
|
|
42
|
+
*
|
|
43
|
+
* Acts only when there is exactly one delivery in verify (an unambiguous target);
|
|
44
|
+
* with zero or multiple verify deliveries it is a no-op and logs -- the two-in-
|
|
45
|
+
* verify ambiguity is the edge-refusal layer's scope, not something this daemon
|
|
46
|
+
* writer resolves by guessing. Records the original delivery id in the issue
|
|
47
|
+
* description for audit. Best-effort per issue: a move failure is logged, never
|
|
48
|
+
* thrown -- re-homing must not abort an exit handler that routes state after it.
|
|
49
|
+
*
|
|
50
|
+
* Returns the ids actually re-homed (for logging / test assertions).
|
|
51
|
+
*/
|
|
52
|
+
export declare function rehomeOutsideWindowFindings(deps: RehomeDeps, focusName: string, candidates: ReviewFiledFindingSummary[], verifyDeliveryIds: ReadonlySet<string>): Promise<string[]>;
|
|
53
|
+
//# sourceMappingURL=review-exit-rehoming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-rehoming.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-rehoming.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAK9E,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpG;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,yBAAyB,EAAE,EACrC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,yBAAyB,EAAE,CAE7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,yBAAyB,EAAE,EACvC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CAiCnB"}
|