@telora/daemon 0.20.9 → 0.20.19
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 +9 -3
- package/dist/completion/review-exit-phase.d.ts +2 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +59 -5
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-shortfall.d.ts +62 -0
- package/dist/completion/review-exit-shortfall.d.ts.map +1 -0
- package/dist/completion/review-exit-shortfall.js +84 -0
- package/dist/completion/review-exit-shortfall.js.map +1 -0
- package/dist/drift-ratify-loop.d.ts +68 -0
- package/dist/drift-ratify-loop.d.ts.map +1 -0
- package/dist/drift-ratify-loop.js +161 -0
- package/dist/drift-ratify-loop.js.map +1 -0
- package/dist/drift-ratify-policy.d.ts +101 -0
- package/dist/drift-ratify-policy.d.ts.map +1 -0
- package/dist/drift-ratify-policy.js +178 -0
- package/dist/drift-ratify-policy.js.map +1 -0
- package/dist/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus-loop-registry.js +49 -0
- package/dist/focus-loop-registry.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +41 -4
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/queries/deliveries.d.ts +22 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +6 -0
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts +9 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +14 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/reality-tree.d.ts +22 -0
- package/dist/queries/reality-tree.d.ts.map +1 -1
- package/dist/queries/reality-tree.js +32 -0
- package/dist/queries/reality-tree.js.map +1 -1
- package/dist/queries/schemas.d.ts +2 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +5 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/resolvers/drift-shortfall-proposals.d.ts +27 -0
- package/dist/resolvers/drift-shortfall-proposals.d.ts.map +1 -0
- package/dist/resolvers/drift-shortfall-proposals.js +90 -0
- package/dist/resolvers/drift-shortfall-proposals.js.map +1 -0
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +2 -0
- package/dist/resolvers/index.js.map +1 -1
- package/dist/shortfall-disposition-config.d.ts +34 -0
- package/dist/shortfall-disposition-config.d.ts.map +1 -0
- package/dist/shortfall-disposition-config.js +46 -0
- package/dist/shortfall-disposition-config.js.map +1 -0
- package/dist/shortfall-disposition-loop.d.ts +86 -0
- package/dist/shortfall-disposition-loop.d.ts.map +1 -0
- package/dist/shortfall-disposition-loop.js +309 -0
- package/dist/shortfall-disposition-loop.js.map +1 -0
- package/package.json +2 -2
package/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"commitSha": "
|
|
3
|
-
"builtAt": "2026-07-
|
|
2
|
+
"commitSha": "89beb337f",
|
|
3
|
+
"builtAt": "2026-07-16T02:33:54.134Z",
|
|
4
4
|
"expectedMigrations": [
|
|
5
5
|
"20250829113330_create_org_nodes_table.sql",
|
|
6
6
|
"20250829113402_fix_function_security_search_path.sql",
|
|
@@ -725,6 +725,12 @@
|
|
|
725
725
|
"20260713154944_retrofit_definer_search_path.sql",
|
|
726
726
|
"20260713155357_drop_permissive_rls_residuals.sql",
|
|
727
727
|
"20260713161704_org_nodes_org_type_index.sql",
|
|
728
|
-
"20260713211408_drop_authuid_only_permissive_policies.sql"
|
|
728
|
+
"20260713211408_drop_authuid_only_permissive_policies.sql",
|
|
729
|
+
"20260715100524_transactional_playbook_instantiation.sql",
|
|
730
|
+
"20260715103606_playbook_execution_posture.sql",
|
|
731
|
+
"20260715212408_drift_proposal_ratification_actor_kind.sql",
|
|
732
|
+
"20260715220718_drift_proposal_ratification_rationale.sql",
|
|
733
|
+
"20260715225403_drift_proposal_dismissal_provenance.sql",
|
|
734
|
+
"20260715231941_agent_escalations_kind_shortfall_undisposed.sql"
|
|
729
735
|
]
|
|
730
736
|
}
|
|
@@ -15,6 +15,7 @@ import { emitLoopTrigger } from '../loops/index.js';
|
|
|
15
15
|
import { getFocusDeliveries, getFocusIssues, clearReviewRequestedAt, setReviewedThroughSha, setReviewCycleCount, getFocusReviewReportForSession } from '../queries/focuses.js';
|
|
16
16
|
import { resolveReviewCycleCap } from '../stall-detector-config.js';
|
|
17
17
|
import { createEscalation, hasOpenFocusEscalation } from '../queries/issues.js';
|
|
18
|
+
import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
18
19
|
/**
|
|
19
20
|
* Dependencies for runReviewExitHandler. Defaults to real implementations;
|
|
20
21
|
* overridable in tests via the optional `deps` argument.
|
|
@@ -32,6 +33,7 @@ export interface ReviewExitDeps {
|
|
|
32
33
|
setReviewCycleCount?: typeof setReviewCycleCount;
|
|
33
34
|
resolveReviewCycleCap?: typeof resolveReviewCycleCap;
|
|
34
35
|
hasOpenFocusEscalation?: typeof hasOpenFocusEscalation;
|
|
36
|
+
listOpenShortfallProposalIds?: typeof listOpenShortfallProposalIds;
|
|
35
37
|
hasPendingSpawnDirective: typeof hasPendingSpawnDirective;
|
|
36
38
|
emitLoopTrigger: typeof emitLoopTrigger;
|
|
37
39
|
getFocusReviewReportForSession: typeof getFocusReviewReportForSession;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAgB1E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;IAGpD,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAGrD,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IAKvD,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;IACnE,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,8BAA8B,EAAE,OAAO,8BAA8B,CAAC;IACtE,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;CAC3C;AAsBD,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;CAClC;AAmBD,4DAA4D;AAC5D,wBAAgB,iCAAiC,IAAI,IAAI,CAGxD;AAED,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,CA2hBf"}
|
|
@@ -18,6 +18,8 @@ import { emitLoopTrigger } from '../loops/index.js';
|
|
|
18
18
|
import { getFocusDeliveries, getFocusIssues, clearReviewRequestedAt, setReviewedThroughSha, setReviewCycleCount, getFocusReviewReportForSession, } from '../queries/focuses.js';
|
|
19
19
|
import { resolveReviewCycleCap } from '../stall-detector-config.js';
|
|
20
20
|
import { createEscalation, hasOpenFocusEscalation } from '../queries/issues.js';
|
|
21
|
+
import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
22
|
+
import { resolveShortfallHold, writeShortfallGateState, describeShortfallHold, } from './review-exit-shortfall.js';
|
|
21
23
|
import { reviewFiledIssueExists, blockingReviewFiledIssueExists, filterDeferrableReviewNotes, } from '../review-defect-detector.js';
|
|
22
24
|
import { createLogger } from '../log.js';
|
|
23
25
|
const log = createLogger({ module: 'focus-executor' });
|
|
@@ -34,6 +36,7 @@ const defaultReviewExitDeps = {
|
|
|
34
36
|
setReviewCycleCount,
|
|
35
37
|
resolveReviewCycleCap,
|
|
36
38
|
hasOpenFocusEscalation,
|
|
39
|
+
listOpenShortfallProposalIds,
|
|
37
40
|
hasPendingSpawnDirective,
|
|
38
41
|
emitLoopTrigger,
|
|
39
42
|
getFocusReviewReportForSession,
|
|
@@ -114,6 +117,18 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
114
117
|
// commits landed on the focus branch during the review pass). A lost carry
|
|
115
118
|
// (reviewSpawnTip null) can never be coverage-complete -- withhold auto-approve.
|
|
116
119
|
const coverageComplete = reviewSpawnTip != null && currentBranchTip != null && reviewSpawnTip === currentBranchTip;
|
|
120
|
+
// Open shortfall drift proposals for the focus. A shortfall means the tree
|
|
121
|
+
// claimed X and the work delivered less than X; until one is disposed, NO
|
|
122
|
+
// delivery on this focus may converge to done.
|
|
123
|
+
//
|
|
124
|
+
// Read ONCE per focus, before the delivery loop, exactly like coverageComplete
|
|
125
|
+
// -- the question is focus-scoped, not per-delivery. And deliberately OUTSIDE
|
|
126
|
+
// the reconciler: it is not an input resolveReconciledWrite models, so feeding
|
|
127
|
+
// it one would emit spurious [reconciler-divergence] logs. It gates the write
|
|
128
|
+
// DOWNSTREAM of `target`, where coverageComplete also sits.
|
|
129
|
+
const shortfall = await resolveShortfallHold(deps, focusId, focusName);
|
|
130
|
+
const shortfallsClear = shortfall.clear;
|
|
131
|
+
let shortfallHold = false;
|
|
117
132
|
const focuses = await deps.getActiveFocuses(organizationId, productId);
|
|
118
133
|
const current = focuses.find(s => s.focus_id === focusId);
|
|
119
134
|
if (!current?.review_requested_at) {
|
|
@@ -243,7 +258,10 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
243
258
|
const target = decision.target;
|
|
244
259
|
if (target === DELIVERY_STATUS.VERIFY_FAILED) {
|
|
245
260
|
const awaitingVerifyStage = dWorkflow.stages.find(s => s.name === 'verify_failed');
|
|
246
|
-
|
|
261
|
+
// gateState null: the delivery is routing, so any prior shortfall hold
|
|
262
|
+
// banner must not survive into verify_failed. If the shortfall is still
|
|
263
|
+
// open, the next hold re-writes it.
|
|
264
|
+
await deps.updateDeliveryStatus(d.id, 'verify_failed', awaitingVerifyStage?.id ?? null, null, undefined, { organizationId, fromStatus: 'verify' });
|
|
247
265
|
const failReason = blockingOpenWork.length > 0
|
|
248
266
|
? `${blockingOpenWork.length} blocking open issue(s) (of ${openWork.length} open)`
|
|
249
267
|
: 'review verdict gaps_found with no blocking issue filed (routing inconsistency)';
|
|
@@ -251,10 +269,34 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
251
269
|
routedAny = true;
|
|
252
270
|
}
|
|
253
271
|
else if (target === DELIVERY_STATUS.DONE && reportExists) {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
272
|
+
// Review stamped a verdict. product-api already refuses an `approved`
|
|
273
|
+
// stamp over an undisposed shortfall -- but a shortfall can be emitted
|
|
274
|
+
// by verify writeback AFTER the stamp and before this handler runs, and
|
|
275
|
+
// that race is invisible to the edge gate. Re-check here, at the single
|
|
276
|
+
// point where the delivery actually moves to done.
|
|
277
|
+
if (!shortfallsClear) {
|
|
278
|
+
shortfallHold = true;
|
|
279
|
+
await writeShortfallGateState(deps, d.id, shortfall.ids);
|
|
280
|
+
log.info(`[focus-executor] Delivery "${d.name}" NOT moved to done despite a passing review -- ` +
|
|
281
|
+
`${describeShortfallHold(shortfall)}. Left in verify.`);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
const doneStage = dWorkflow.stages.find(s => s.name === 'done');
|
|
285
|
+
// gateState null: clear any prior hold banner on the way to done.
|
|
286
|
+
await deps.updateDeliveryStatus(d.id, 'done', doneStage?.id ?? null, null, undefined, { organizationId, fromStatus: 'verify' });
|
|
287
|
+
log.info(`Delivery "${d.name}" moved from verify to done (review passed)`);
|
|
288
|
+
routedAny = true;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else if (target === DELIVERY_STATUS.DONE && !shortfallsClear) {
|
|
292
|
+
// Silent clean-exit auto-approve, but the focus carries an undisposed
|
|
293
|
+
// shortfall. Silence cannot approve over a contradiction nobody
|
|
294
|
+
// adjudicated: that is precisely the bar-lowering this gate exists to
|
|
295
|
+
// stop. Left in verify; the disposition pass is armed after the loop.
|
|
296
|
+
shortfallHold = true;
|
|
297
|
+
await writeShortfallGateState(deps, d.id, shortfall.ids);
|
|
298
|
+
log.info(`[focus-executor] Delivery "${d.name}" NOT auto-approved -- ` +
|
|
299
|
+
`${describeShortfallHold(shortfall)}. Left in verify pending disposition.`);
|
|
258
300
|
}
|
|
259
301
|
else if (target === DELIVERY_STATUS.DONE) {
|
|
260
302
|
// Clean review session (no defects filed, no focus_reviews row). Silence
|
|
@@ -406,6 +448,18 @@ export async function runReviewExitHandler(params, deps = defaultReviewExitDeps)
|
|
|
406
448
|
log.info(`[focus-executor] "${focusName}" review exit routed nothing and a spawn directive ` +
|
|
407
449
|
`is pending -- leaving review_requested_at set for the incoming team.`);
|
|
408
450
|
}
|
|
451
|
+
else if (shortfallHold) {
|
|
452
|
+
// Nothing routed because the focus carries undisposed shortfalls. This is a
|
|
453
|
+
// DEMAND for disposition, not a wait: review_requested_at is left SET so the
|
|
454
|
+
// focus stays in the review window where the disposition pass and the stall
|
|
455
|
+
// detector can both see it.
|
|
456
|
+
//
|
|
457
|
+
// The bounded-attempt tail (a scoped disposition pass, then a
|
|
458
|
+
// shortfall_undisposed escalation) is the sibling issues' scope; this branch
|
|
459
|
+
// records the hold and leaves the window open for them.
|
|
460
|
+
log.info(`[focus-executor] "${focusName}" review exit held: ` +
|
|
461
|
+
`${describeShortfallHold(shortfall)}. review_requested_at left set; awaiting disposition.`);
|
|
462
|
+
}
|
|
409
463
|
else if (belowCoverageHold) {
|
|
410
464
|
// Pure drift: a clean review under-covered (spawn-tip != exit-tip) and no
|
|
411
465
|
// delivery routed. Record the coverage that DID happen (the review saw
|
|
@@ -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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAmCvD,MAAM,qBAAqB,GAAmB;IAC5C,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,iBAAiB;IACjB,sBAAsB;IACtB,oBAAoB;IACpB,wBAAwB;IACxB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,4BAA4B;IAC5B,wBAAwB;IACxB,eAAe;IACf,8BAA8B;IAC9B,gBAAgB;CACjB,CAAC;AA8BF;;;;;;GAMG;AACH,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAU,CAAC;AAErD,4DAA4D;AAC5D,MAAM,UAAU,iCAAiC;IAC/C,wBAAwB,CAAC,KAAK,EAAE,CAAC;IACjC,0BAA0B,CAAC,KAAK,EAAE,CAAC;AACrC,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,IAAI,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAwB,EACxB,OAAuB,qBAAqB;IAE5C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IAEtI,2EAA2E;IAC3E,+EAA+E;IAC/E,MAAM,UAAU,GAAG,cAAc,IAAI,gBAAgB,IAAI,IAAI,CAAC;IAC9D,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,iFAAiF;IACjF,MAAM,gBAAgB,GACpB,cAAc,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,IAAI,cAAc,KAAK,gBAAgB,CAAC;IAE5F,2EAA2E;IAC3E,0EAA0E;IAC1E,+CAA+C;IAC/C,EAAE;IACF,+EAA+E;IAC/E,8EAA8E;IAC9E,+EAA+E;IAC/E,8EAA8E;IAC9E,4DAA4D;IAC5D,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;IACxC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC;QAClC,gCAAgC;QAChC,OAAO;IACT,CAAC;IACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAEtD,wEAAwE;IACxE,yEAAyE;IACzE,6EAA6E;IAC7E,6EAA6E;IAC7E,sEAAsE;IACtE,2EAA2E;IAC3E,8EAA8E;IAC9E,2BAA2B;IAE3B,oEAAoE;IACpE,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,+EAA+E;IAC/E,+EAA+E;IAC/E,8EAA8E;IAC9E,yEAAyE;IACzE,IAAI,aAAa,GAAqC,IAAI,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7E,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,+DAA+D,SAAS,aAAa,SAAS,KAAM,GAAa,CAAC,OAAO,EAAE,CAC5H,CAAC;QACF,0CAA0C;IAC5C,CAAC;IAED,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,yEAAyE;IACzE,6EAA6E;IAC7E,+EAA+E;IAC/E,oDAAoD;IACpD,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,8EAA8E;IAC9E,6EAA6E;IAC7E,wEAAwE;IACxE,+BAA+B;IAC/B,IAAI,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvD,gBAAgB,GAAG,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC1E,wBAAwB,GAAG,8BAA8B,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC1F,kBAAkB,GAAG,IAAI,GAAG,CAC1B,2BAA2B,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3E,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,+CAA+C,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACvF,CAAC;QACF,uEAAuE;QACvE,uEAAuE;QACvE,6EAA6E;IAC/E,CAAC;IAED,wEAAwE;IACxE,8EAA8E;IAC9E,0EAA0E;IAC1E,6EAA6E;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,sCAAsC;IACtC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAEhC,oEAAoE;IACpE,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,kEAAkE;IAClE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,8EAA8E;IAC9E,8EAA8E;IAC9E,yEAAyE;IACzE,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,MAAM;YAAE,SAAS;QAC3D,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC5C,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;aAClC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3E,sEAAsE;YACtE,wEAAwE;YACxE,0EAA0E;YAC1E,6DAA6D;YAC7D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7E,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;gBAAE,mBAAmB,GAAG,IAAI,CAAC;YAE5D,qEAAqE;YACrE,0EAA0E;YAC1E,wEAAwE;YACxE,uEAAuE;YACvE,0EAA0E;YAC1E,qEAAqE;YACrE,kCAAkC;YAClC,MAAM,YAAY,GAChB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa;gBACzD,oEAAoE;gBACpE,8DAA8D;gBAC9D,oEAAoE;gBACpE,sEAAsE;gBACtE,CAAC,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa;oBAC9D,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI;wBACnC,CAAC,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI;4BAC9D,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC;YACnC,MAAM,QAAQ,GAAG,sBAAsB,CAAC;gBACtC,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,CAAC,CAAC,EAAE;gBAChB,YAAY,EAAE,CAAC,CAAC,IAAI;gBACpB,YAAY;gBACZ,KAAK,EAAE;oBACL,aAAa,EAAE,eAAe,CAAC,MAAM;oBACrC,uEAAuE;oBACvE,kEAAkE;oBAClE,gCAAgC;oBAChC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACvB,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;wBACtB,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;qBACzC,CAAC,CAAC;oBACH,QAAQ,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;oBACrC,YAAY,EAAE,IAAI;oBAClB,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE;iBACrG;aACF,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE/B,IAAI,MAAM,KAAK,eAAe,CAAC,aAAa,EAAE,CAAC;gBAC7C,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;gBACnF,uEAAuE;gBACvE,wEAAwE;gBACxE,oCAAoC;gBACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,mBAAmB,EAAE,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACnJ,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC;oBAC5C,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,+BAA+B,QAAQ,CAAC,MAAM,QAAQ;oBAClF,CAAC,CAAC,gFAAgF,CAAC;gBACrF,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,yCAAyC,UAAU,EAAE,CAAC,CAAC;gBACnF,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,IAAI,MAAM,KAAK,eAAe,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;gBAC3D,sEAAsE;gBACtE,uEAAuE;gBACvE,wEAAwE;gBACxE,wEAAwE;gBACxE,mDAAmD;gBACnD,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,aAAa,GAAG,IAAI,CAAC;oBACrB,MAAM,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;oBACzD,GAAG,CAAC,IAAI,CACN,8BAA8B,CAAC,CAAC,IAAI,kDAAkD;wBACtF,GAAG,qBAAqB,CAAC,SAAS,CAAC,mBAAmB,CACvD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;oBAChE,kEAAkE;oBAClE,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAChI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,6CAA6C,CAAC,CAAC;oBAC3E,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,KAAK,eAAe,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC/D,sEAAsE;gBACtE,gEAAgE;gBAChE,sEAAsE;gBACtE,sEAAsE;gBACtE,aAAa,GAAG,IAAI,CAAC;gBACrB,MAAM,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;gBACzD,GAAG,CAAC,IAAI,CACN,8BAA8B,CAAC,CAAC,IAAI,yBAAyB;oBACvE,GAAG,qBAAqB,CAAC,SAAS,CAAC,uCAAuC,CACjE,CAAC;YACJ,CAAC;iBAAM,IAAI,MAAM,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;gBAC3C,yEAAyE;gBACzE,uEAAuE;gBACvE,qEAAqE;gBACrE,0EAA0E;gBAC1E,yEAAyE;gBACzE,yEAAyE;gBACzE,wEAAwE;gBACxE,oEAAoE;gBACpE,+DAA+D;gBAC/D,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;oBAChE,MAAM,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;oBACpI,GAAG,CAAC,IAAI,CACN,8BAA8B,CAAC,CAAC,IAAI,iCAAiC;wBACrE,kCAAkC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAC3F,CAAC;oBACF,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,iBAAiB,GAAG,IAAI,CAAC;oBACzB,GAAG,CAAC,IAAI,CACN,8BAA8B,CAAC,CAAC,IAAI,wDAAwD;wBAC5F,GAAG,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,gBAAgB,IAAI,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;wBACtH,+EAA+E,CAChF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,qEAAqE;gBACrE,wDAAwD;gBACxD,MAAM,MAAM,GAAG,WAAW,KAAK,QAAQ;oBACrC,CAAC,CAAC,GAAG,WAAW,iDAAiD;oBACjE,CAAC,CAAC,gCAAgC,CAAC;gBACrC,GAAG,CAAC,IAAI,CACN,8BAA8B,CAAC,CAAC,IAAI,qBAAqB,MAAM,GAAG;oBAClE,0DAA0D,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,IAAI,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,yEAAyE;IACzE,+DAA+D;IAC/D,mEAAmE;IACnE,4EAA4E;IAC5E,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,aAAa,KAAK,YAAY,IAAI,CAAC,mBAAmB,CAAC;IAEhF,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CACN,yCAAyC,SAAS,mCAAmC;YACrF,iBAAiB,YAAY,mBAAmB,gBAAgB,GAAG,CACpE,CAAC;QACF,4EAA4E;QAC5E,yEAAyE;QACzE,uEAAuE;QACvE,4EAA4E;QAC5E,0EAA0E;QAC1E,sEAAsE;QACtE,8EAA8E;QAC9E,gDAAgD;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACtD,GAAG,CAAC,IAAI,CACN,mDAAmD,SAAS,gBAAgB;oBAC5E,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,iCAAiC,CAC5D,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CACN,sDAAsD,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC9F,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CACN,uCAAuC,SAAS,2BAA2B;gBAC3E,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QACD,wEAAwE;QACxE,6EAA6E;QAC7E,uEAAuE;QACvE,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE3C,4EAA4E;QAC5E,uEAAuE;QACvE,+EAA+E;QAC/E,6EAA6E;QAC7E,0EAA0E;QAC1E,8EAA8E;QAC9E,yEAAyE;QACzE,6EAA6E;QAC7E,sEAAsE;QACtE,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7D,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,eAAe,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CACN,oDAAoD,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC5F,CAAC;YACJ,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACpD,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,IAAI,eAAe,GAAG,cAAc,IAAI,aAAa,IAAI,cAAc,EAAE,CAAC;gBACxE,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;wBAC1B,cAAc;wBACd,SAAS;wBACT,OAAO,EAAE,IAAI;wBACb,UAAU,EAAE,kBAAkB,CAAC,eAAe;wBAC9C,WAAW,EAAE,uBAAuB,CAAC,cAAc;wBACnD,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;wBAC9B,WAAW,EACT,UAAU,SAAS,mBAAmB,aAAa,mBAAmB;4BACtE,SAAS,cAAc,iDAAiD;4BACxE,wEAAwE;4BACxE,uEAAuE;4BACvE,8CAA8C;wBAChD,cAAc,EAAE,2BAA2B;wBAC3C,QAAQ,EAAE,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE;qBACrE,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,CACN,kEAAkE;wBAClE,IAAI,SAAS,aAAa,aAAa,SAAS,cAAc,IAAI,CACnE,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CACN,oEAAoE,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC5G,CAAC;gBACJ,CAAC;YACH,CAAC;QACD,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB;YAC/B,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,YAAY;gBACZ,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,wBAAwB;oBACxB,CAAC,CAAC,gBAAgB;oBAClB,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,SAAS;wBACrC,CAAC,CAAC,cAAc;wBAChB,CAAC,CAAC,WAAW,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC;YACnB,IAAI,EAAE,kBAAkB;YACxB,OAAO;YACP,MAAM,EAAE,uBAAuB,SAAS,gBAAgB,QAAQ,EAAE;SACnE,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,0EAA0E;QAC1E,2EAA2E;QAC3E,4EAA4E;QAC5E,uEAAuE;QACvE,mDAAmD;QACnD,GAAG,CAAC,IAAI,CACN,qBAAqB,SAAS,qDAAqD;YACnF,sEAAsE,CACvE,CAAC;IACJ,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,4EAA4E;QAC5E,6EAA6E;QAC7E,4EAA4E;QAC5E,4BAA4B;QAC5B,EAAE;QACF,8DAA8D;QAC9D,6EAA6E;QAC7E,wDAAwD;QACxD,GAAG,CAAC,IAAI,CACN,qBAAqB,SAAS,sBAAsB;YAC1D,GAAG,qBAAqB,CAAC,SAAS,CAAC,uDAAuD,CACrF,CAAC;IACJ,CAAC;SAAM,IAAI,iBAAiB,EAAE,CAAC;QAC7B,0EAA0E;QAC1E,uEAAuE;QACvE,6EAA6E;QAC7E,+EAA+E;QAC/E,qEAAqE;QACrE,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,6CAA6C,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAChE,wBAAwB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,wEAAwE;YACxE,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;gBACzF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,iDAAiD,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrG,CAAC;YACH,CAAC;YACD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;wBAC1B,cAAc;wBACd,SAAS;wBACT,OAAO,EAAE,IAAI;wBACb,UAAU,EAAE,kBAAkB,CAAC,eAAe;wBAC9C,WAAW,EAAE,uBAAuB,CAAC,cAAc;wBACnD,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;wBAC9B,WAAW,EACT,UAAU,SAAS,yDAAyD;4BAC5E,qDAAqD,MAAM,kBAAkB;4BAC7E,8EAA8E;4BAC9E,iFAAiF;4BACjF,0DAA0D;wBAC5D,cAAc,EAAE,4BAA4B;wBAC5C,QAAQ,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,IAAI,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE;qBACnG,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,CACN,qEAAqE,SAAS,mBAAmB,MAAM,IAAI,CAC5G,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,2CAA2C,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,+DAA+D;YAC/D,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxC,GAAG,CAAC,IAAI,CACN,qBAAqB,SAAS,mEAAmE,CAClG,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,sEAAsE;QACtE,kEAAkE;QAClE,uEAAuE;QACvE,uEAAuE;QACvE,gEAAgE;QAChE,MAAM,MAAM,GAAG,WAAW,KAAK,QAAQ;YACrC,CAAC,CAAC,GAAG,WAAW,kCAAkC;YAClD,CAAC,CAAC,CAAC,SAAS;gBACV,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,2GAA2G,CAAC;QAClH,GAAG,CAAC,IAAI,CACN,qBAAqB,SAAS,qCAAqC,MAAM,IAAI;YAC7E,sEAAsE;YACtE,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,0EAA0E;IAC1E,0EAA0E;IAC1E,mEAAmE;IACnE,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,SAAS,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;YACxF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,2DAA2D,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/G,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;oBAC1B,cAAc;oBACd,SAAS;oBACT,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,kBAAkB,CAAC,eAAe;oBAC9C,WAAW,EAAE,uBAAuB,CAAC,cAAc;oBACnD,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;oBAC9B,WAAW,EACT,cAAc,SAAS,4CAA4C;wBACnE,qEAAqE;wBACrE,wEAAwE;wBACxE,qEAAqE;wBACrE,uEAAuE;wBACvE,sEAAsE;wBACtE,qBAAqB;oBACvB,cAAc,EAAE,2BAA2B;oBAC3C,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE;iBAC7F,CAAC,CAAC;gBACH,GAAG,CAAC,IAAI,CACN,oEAAoE,SAAS,IAAI;oBACjF,0CAA0C,CAC3C,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CACN,sEAAsE,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC9G,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,oDAAoD;IACpD,IAAI,SAAS,IAAI,CAAC,YAAY,IAAI,wBAAwB,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;gBAC1B,cAAc;gBACd,SAAS;gBACT,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,kBAAkB,CAAC,mBAAmB;gBAClD,2EAA2E;gBAC3E,WAAW,EAAE,uBAAuB,CAAC,cAAc;gBACnD,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;gBAC9B,WAAW,EACT,sEAAsE;oBACtE,qEAAqE;oBACrE,qEAAqE;gBACvE,cAAc,EAAE,uBAAuB;gBACvC,sEAAsE;gBACtE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE;aAClE,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,yEAAyE,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACjH,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shortfall half of the review-exit gate.
|
|
3
|
+
*
|
|
4
|
+
* A shortfall drift proposal says the reality tree claimed X and the work
|
|
5
|
+
* delivered less than X. Until one is disposed -- ratified (the claim was wrong)
|
|
6
|
+
* or dismissed (the claim stands, defects filed) -- the focus carries an
|
|
7
|
+
* unadjudicated contradiction between declared intent and what it built, and no
|
|
8
|
+
* delivery on it may converge to done.
|
|
9
|
+
*
|
|
10
|
+
* Extracted from review-exit-phase.ts to keep that file under the daemon
|
|
11
|
+
* file-size limit. The two functions here are the whole shortfall surface of the
|
|
12
|
+
* review exit: read the hold, and render it.
|
|
13
|
+
*
|
|
14
|
+
* @module completion/review-exit-shortfall
|
|
15
|
+
*/
|
|
16
|
+
import type { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
17
|
+
import type { updateDeliveryStatus } from '../supabase.js';
|
|
18
|
+
/** The slice of ReviewExitDeps this module needs (structural, so no import cycle). */
|
|
19
|
+
export interface ShortfallGateDeps {
|
|
20
|
+
listOpenShortfallProposalIds?: typeof listOpenShortfallProposalIds;
|
|
21
|
+
updateDeliveryStatus: typeof updateDeliveryStatus;
|
|
22
|
+
}
|
|
23
|
+
export interface ShortfallHold {
|
|
24
|
+
/** Ids of the focus's OPEN (undisposed) shortfall proposals. */
|
|
25
|
+
ids: string[];
|
|
26
|
+
/** The read failed, so we cannot know. Treated as NOT clear (fail-closed). */
|
|
27
|
+
readFailed: boolean;
|
|
28
|
+
/** True only when we KNOW there are zero open shortfalls. */
|
|
29
|
+
clear: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Read the focus's shortfall hold.
|
|
33
|
+
*
|
|
34
|
+
* FAILS CLOSED: if we cannot tell whether a shortfall is undisposed, the caller
|
|
35
|
+
* must withhold rather than converge over a possible contradiction. The cost of
|
|
36
|
+
* a false hold is a cycle; the cost of a false approve is a silently lowered
|
|
37
|
+
* bar.
|
|
38
|
+
*
|
|
39
|
+
* Returns `clear: true` when the dep is absent -- that is reachable only from a
|
|
40
|
+
* hand-built test deps object (production always supplies it), and every
|
|
41
|
+
* pre-existing review-exit fixture predates shortfalls.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveShortfallHold(deps: ShortfallGateDeps, focusId: string, focusName: string): Promise<ShortfallHold>;
|
|
44
|
+
/**
|
|
45
|
+
* Surface a shortfall hold on the delivery row so the dashboard can answer
|
|
46
|
+
* "why is this stuck" without an escalation.
|
|
47
|
+
*
|
|
48
|
+
* Re-asserts `verify` rather than changing status: gate_state can only be
|
|
49
|
+
* written through daemon_update_delivery_status, which requires an
|
|
50
|
+
* executionStatus, and this is exactly the shape advanceDeliveryStage uses when
|
|
51
|
+
* guards block (write the gate, leave the status where it is). No transition
|
|
52
|
+
* record is passed -- a hold is not a transition and must not appear in the
|
|
53
|
+
* stage-transition log.
|
|
54
|
+
*
|
|
55
|
+
* Best-effort: the hold is already decided by the caller, and failing to render
|
|
56
|
+
* its reason must not turn into a failed exit. A silent hold is bad; a crashed
|
|
57
|
+
* exit handler is worse.
|
|
58
|
+
*/
|
|
59
|
+
export declare function writeShortfallGateState(deps: ShortfallGateDeps, deliveryId: string, shortfallProposalIds: string[]): Promise<void>;
|
|
60
|
+
/** Human-readable hold reason for the exit log. */
|
|
61
|
+
export declare function describeShortfallHold(hold: ShortfallHold): string;
|
|
62
|
+
//# sourceMappingURL=review-exit-shortfall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-shortfall.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-shortfall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAK3D,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;IACnE,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;CACnD;AAED,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,8EAA8E;IAC9E,UAAU,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAcxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,MAAM,EAClB,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,mDAAmD;AACnD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAIjE"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shortfall half of the review-exit gate.
|
|
3
|
+
*
|
|
4
|
+
* A shortfall drift proposal says the reality tree claimed X and the work
|
|
5
|
+
* delivered less than X. Until one is disposed -- ratified (the claim was wrong)
|
|
6
|
+
* or dismissed (the claim stands, defects filed) -- the focus carries an
|
|
7
|
+
* unadjudicated contradiction between declared intent and what it built, and no
|
|
8
|
+
* delivery on it may converge to done.
|
|
9
|
+
*
|
|
10
|
+
* Extracted from review-exit-phase.ts to keep that file under the daemon
|
|
11
|
+
* file-size limit. The two functions here are the whole shortfall surface of the
|
|
12
|
+
* review exit: read the hold, and render it.
|
|
13
|
+
*
|
|
14
|
+
* @module completion/review-exit-shortfall
|
|
15
|
+
*/
|
|
16
|
+
import { DELIVERY_STATUS } from '@telora/daemon-core';
|
|
17
|
+
import { createLogger } from '../log.js';
|
|
18
|
+
const log = createLogger({ module: 'focus-executor' });
|
|
19
|
+
/**
|
|
20
|
+
* Read the focus's shortfall hold.
|
|
21
|
+
*
|
|
22
|
+
* FAILS CLOSED: if we cannot tell whether a shortfall is undisposed, the caller
|
|
23
|
+
* must withhold rather than converge over a possible contradiction. The cost of
|
|
24
|
+
* a false hold is a cycle; the cost of a false approve is a silently lowered
|
|
25
|
+
* bar.
|
|
26
|
+
*
|
|
27
|
+
* Returns `clear: true` when the dep is absent -- that is reachable only from a
|
|
28
|
+
* hand-built test deps object (production always supplies it), and every
|
|
29
|
+
* pre-existing review-exit fixture predates shortfalls.
|
|
30
|
+
*/
|
|
31
|
+
export async function resolveShortfallHold(deps, focusId, focusName) {
|
|
32
|
+
if (!deps.listOpenShortfallProposalIds) {
|
|
33
|
+
return { ids: [], readFailed: false, clear: true };
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const ids = await deps.listOpenShortfallProposalIds(focusId);
|
|
37
|
+
return { ids, readFailed: false, clear: ids.length === 0 };
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
log.warn(`[focus-executor] listOpenShortfallProposalIds failed for "${focusName}" -- ` +
|
|
41
|
+
`withholding auto-approve (fail-closed): ${err.message}`);
|
|
42
|
+
return { ids: [], readFailed: true, clear: false };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Surface a shortfall hold on the delivery row so the dashboard can answer
|
|
47
|
+
* "why is this stuck" without an escalation.
|
|
48
|
+
*
|
|
49
|
+
* Re-asserts `verify` rather than changing status: gate_state can only be
|
|
50
|
+
* written through daemon_update_delivery_status, which requires an
|
|
51
|
+
* executionStatus, and this is exactly the shape advanceDeliveryStage uses when
|
|
52
|
+
* guards block (write the gate, leave the status where it is). No transition
|
|
53
|
+
* record is passed -- a hold is not a transition and must not appear in the
|
|
54
|
+
* stage-transition log.
|
|
55
|
+
*
|
|
56
|
+
* Best-effort: the hold is already decided by the caller, and failing to render
|
|
57
|
+
* its reason must not turn into a failed exit. A silent hold is bad; a crashed
|
|
58
|
+
* exit handler is worse.
|
|
59
|
+
*/
|
|
60
|
+
export async function writeShortfallGateState(deps, deliveryId, shortfallProposalIds) {
|
|
61
|
+
const gateState = {
|
|
62
|
+
// No guard blocked -- `blocking` is guard-verdict data and must not be
|
|
63
|
+
// fabricated. The shortfall lives in its own field; formatGateBlockers
|
|
64
|
+
// merges the two for the Waiting-on line.
|
|
65
|
+
blocking: [],
|
|
66
|
+
warnings: [],
|
|
67
|
+
evaluatedAt: new Date().toISOString(),
|
|
68
|
+
shortfallProposalIds,
|
|
69
|
+
};
|
|
70
|
+
try {
|
|
71
|
+
await deps.updateDeliveryStatus(deliveryId, DELIVERY_STATUS.VERIFY, undefined, gateState, undefined, undefined);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
log.warn(`[focus-executor] failed to write shortfall gate_state for delivery ${deliveryId} ` +
|
|
75
|
+
`(hold still applies, just unexplained on the card): ${err.message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** Human-readable hold reason for the exit log. */
|
|
79
|
+
export function describeShortfallHold(hold) {
|
|
80
|
+
return hold.readFailed
|
|
81
|
+
? 'shortfall read failed (fail-closed)'
|
|
82
|
+
: `${hold.ids.length} undisposed shortfall proposal(s): ${hold.ids.join(', ')}`;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=review-exit-shortfall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-shortfall.js","sourceRoot":"","sources":["../../src/completion/review-exit-shortfall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAiBvD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAuB,EACvB,OAAe,EACf,SAAiB;IAEjB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACvC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,6DAA6D,SAAS,OAAO;YAC7E,2CAA4C,GAAa,CAAC,OAAO,EAAE,CACpE,CAAC;QACF,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAuB,EACvB,UAAkB,EAClB,oBAA8B;IAE9B,MAAM,SAAS,GAAsB;QACnC,uEAAuE;QACvE,uEAAuE;QACvE,0CAA0C;QAC1C,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,oBAAoB;KACrB,CAAC;IACF,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,oBAAoB,CAC7B,UAAU,EACV,eAAe,CAAC,MAAM,EACtB,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,sEAAsE,UAAU,GAAG;YACnF,uDAAwD,GAAa,CAAC,OAAO,EAAE,CAChF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,qBAAqB,CAAC,IAAmB;IACvD,OAAO,IAAI,CAAC,UAAU;QACpB,CAAC,CAAC,qCAAqC;QACvC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,sCAAsC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Periodic drift auto-ratification tick.
|
|
3
|
+
*
|
|
4
|
+
* Lists `proposed` drift proposals per product, runs each through the
|
|
5
|
+
* fail-closed policy in `drift-ratify-policy.ts`, and ratifies the ones the
|
|
6
|
+
* daemon is sanctioned to ratify unattended. Proposals the policy routes to a
|
|
7
|
+
* review session (`review_dispose`) or refuses to classify (`hold`) are left
|
|
8
|
+
* in `proposed`, untouched.
|
|
9
|
+
*
|
|
10
|
+
* WHAT THIS CLOSES. Drift proposals pooled in `proposed` faster than a human
|
|
11
|
+
* could ratify them, so the reality tree lagged observed reality and every
|
|
12
|
+
* consumer of the graph (audit assembly, propose_injections, focus.context)
|
|
13
|
+
* computed against a stale intent model. The ledger is unchanged -- this only
|
|
14
|
+
* changes WHO ratifies. Ratified proposals still reach the graph exclusively
|
|
15
|
+
* via the existing realign_crt phase (`applyRatifiedProposals`), which this
|
|
16
|
+
* module does not touch.
|
|
17
|
+
*
|
|
18
|
+
* WHAT THIS MUST NEVER DO. Ratify an inward shortfall. That is the machine
|
|
19
|
+
* rewriting a claim its own work failed to meet. The policy module owns that
|
|
20
|
+
* decision; this tick owns only list -> classify -> ratify-the-safe-ones, and
|
|
21
|
+
* deliberately contains no safe-kind rules of its own. If you find yourself
|
|
22
|
+
* adding kind logic here, it belongs in drift-ratify-policy.ts.
|
|
23
|
+
*
|
|
24
|
+
* ACTOR STAMP. The tick calls `crt_drift_proposal_ratify` with no session id.
|
|
25
|
+
* The edge handler resolves the actor from the caller's credential kind, so a
|
|
26
|
+
* tracker-authenticated daemon call is recorded as `ratified_by_kind='system'`
|
|
27
|
+
* with `ratified_by=NULL` automatically. Passing a session id would instead
|
|
28
|
+
* stamp `review_session` -- that is the review-disposition path, not this one.
|
|
29
|
+
*
|
|
30
|
+
* Activation: opt-out via TELORA_DRIFT_RATIFY_LOOP=0. See `shouldRunLoop()` in
|
|
31
|
+
* focus-engine.ts.
|
|
32
|
+
*
|
|
33
|
+
* @module drift-ratify-loop
|
|
34
|
+
*/
|
|
35
|
+
import type { DaemonConfig } from './types.js';
|
|
36
|
+
export interface DriftRatifyTickResult {
|
|
37
|
+
productsScanned: number;
|
|
38
|
+
/** Products skipped this tick because they are within a list-failure backoff window. */
|
|
39
|
+
productsSkipped: number;
|
|
40
|
+
proposalsExamined: number;
|
|
41
|
+
/** Ratified by the daemon with the system actor stamp. */
|
|
42
|
+
ratified: number;
|
|
43
|
+
/** Left proposed: the shortfall channel, owed to an independent review session. */
|
|
44
|
+
leftForReview: number;
|
|
45
|
+
/** Left proposed: fail-closed (unknown kind, malformed metadata, inconsistent row). */
|
|
46
|
+
held: number;
|
|
47
|
+
errors: number;
|
|
48
|
+
}
|
|
49
|
+
export interface DriftRatifyLoopDeps {
|
|
50
|
+
callApi: <T>(action: string, params?: Record<string, unknown>) => Promise<T>;
|
|
51
|
+
/** Clock seam (epoch ms) for the per-product list-failure backoff. */
|
|
52
|
+
now: () => number;
|
|
53
|
+
/** Backoff window applied to a product after a list failure. */
|
|
54
|
+
listBackoffMs: number;
|
|
55
|
+
}
|
|
56
|
+
/** Test-only: clear the per-product list-failure backoff state. */
|
|
57
|
+
export declare function __resetDriftRatifyBackoffForTesting(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Run one auto-ratification tick across every product in the daemon config.
|
|
60
|
+
*
|
|
61
|
+
* Per-proposal failures are counted and skipped, never aborting the batch --
|
|
62
|
+
* one unratifiable proposal must not strand the rest of the stream (mirrors
|
|
63
|
+
* `applyRatifiedProposals`, realign-apply.ts:403-416).
|
|
64
|
+
*
|
|
65
|
+
* Returns counters useful for log lines and tests.
|
|
66
|
+
*/
|
|
67
|
+
export declare function runDriftRatifyTick(config: DaemonConfig, depOverrides?: Partial<DriftRatifyLoopDeps>): Promise<DriftRatifyTickResult>;
|
|
68
|
+
//# sourceMappingURL=drift-ratify-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift-ratify-loop.d.ts","sourceRoot":"","sources":["../src/drift-ratify-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0B/C,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7E,sEAAsE;IACtE,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;CACvB;AA4BD,mEAAmE;AACnE,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAUD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CA6FhC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Periodic drift auto-ratification tick.
|
|
3
|
+
*
|
|
4
|
+
* Lists `proposed` drift proposals per product, runs each through the
|
|
5
|
+
* fail-closed policy in `drift-ratify-policy.ts`, and ratifies the ones the
|
|
6
|
+
* daemon is sanctioned to ratify unattended. Proposals the policy routes to a
|
|
7
|
+
* review session (`review_dispose`) or refuses to classify (`hold`) are left
|
|
8
|
+
* in `proposed`, untouched.
|
|
9
|
+
*
|
|
10
|
+
* WHAT THIS CLOSES. Drift proposals pooled in `proposed` faster than a human
|
|
11
|
+
* could ratify them, so the reality tree lagged observed reality and every
|
|
12
|
+
* consumer of the graph (audit assembly, propose_injections, focus.context)
|
|
13
|
+
* computed against a stale intent model. The ledger is unchanged -- this only
|
|
14
|
+
* changes WHO ratifies. Ratified proposals still reach the graph exclusively
|
|
15
|
+
* via the existing realign_crt phase (`applyRatifiedProposals`), which this
|
|
16
|
+
* module does not touch.
|
|
17
|
+
*
|
|
18
|
+
* WHAT THIS MUST NEVER DO. Ratify an inward shortfall. That is the machine
|
|
19
|
+
* rewriting a claim its own work failed to meet. The policy module owns that
|
|
20
|
+
* decision; this tick owns only list -> classify -> ratify-the-safe-ones, and
|
|
21
|
+
* deliberately contains no safe-kind rules of its own. If you find yourself
|
|
22
|
+
* adding kind logic here, it belongs in drift-ratify-policy.ts.
|
|
23
|
+
*
|
|
24
|
+
* ACTOR STAMP. The tick calls `crt_drift_proposal_ratify` with no session id.
|
|
25
|
+
* The edge handler resolves the actor from the caller's credential kind, so a
|
|
26
|
+
* tracker-authenticated daemon call is recorded as `ratified_by_kind='system'`
|
|
27
|
+
* with `ratified_by=NULL` automatically. Passing a session id would instead
|
|
28
|
+
* stamp `review_session` -- that is the review-disposition path, not this one.
|
|
29
|
+
*
|
|
30
|
+
* Activation: opt-out via TELORA_DRIFT_RATIFY_LOOP=0. See `shouldRunLoop()` in
|
|
31
|
+
* focus-engine.ts.
|
|
32
|
+
*
|
|
33
|
+
* @module drift-ratify-loop
|
|
34
|
+
*/
|
|
35
|
+
import { loadEnvConfig } from '@telora/daemon-core';
|
|
36
|
+
import { callApi as defaultCallApi } from './queries/shared.js';
|
|
37
|
+
import { classifyDriftProposal } from './drift-ratify-policy.js';
|
|
38
|
+
import { createLogger } from './log.js';
|
|
39
|
+
const log = createLogger({ module: 'drift-ratify-loop' });
|
|
40
|
+
/**
|
|
41
|
+
* Per-product backoff for list failures, so a persistent server-side failure
|
|
42
|
+
* does not retry-storm every tick. Module-level so the window survives across
|
|
43
|
+
* `runDriftRatifyTick` calls within the daemon process. Keyed productId ->
|
|
44
|
+
* earliest next-attempt epoch ms. Mirrors the drift-eval loop's window
|
|
45
|
+
* (drift-eval-loop.ts:74) and complements the isolated 'drift' circuit breaker
|
|
46
|
+
* in queries/shared.ts, which fails fast once the breaker opens.
|
|
47
|
+
*/
|
|
48
|
+
const listBackoffUntil = new Map();
|
|
49
|
+
/**
|
|
50
|
+
* Resolve the per-product list-failure backoff window (ms).
|
|
51
|
+
*
|
|
52
|
+
* Deliberately REUSES TELORA_DRIFT_LIST_BACKOFF_MS rather than introducing a
|
|
53
|
+
* knob of its own. The knob's meaning -- how long to back off a product after a
|
|
54
|
+
* drift-list failure -- is exactly this loop's need, and both loops fail the
|
|
55
|
+
* same way for the same reasons, so one operator dial covering both is coherent
|
|
56
|
+
* rather than a conflation. It also keeps this loop free of any dependency on a
|
|
57
|
+
* @telora/daemon-core republish: daemon-core is registry-installed, so a new
|
|
58
|
+
* knob added to its source would be invisible to this package until it is
|
|
59
|
+
* published and reinstalled. Injectable via deps for tests.
|
|
60
|
+
*/
|
|
61
|
+
function defaultListBackoffMs() {
|
|
62
|
+
return loadEnvConfig().TELORA_DRIFT_LIST_BACKOFF_MS;
|
|
63
|
+
}
|
|
64
|
+
/** Test-only: clear the per-product list-failure backoff state. */
|
|
65
|
+
export function __resetDriftRatifyBackoffForTesting() {
|
|
66
|
+
listBackoffUntil.clear();
|
|
67
|
+
}
|
|
68
|
+
function defaultDeps() {
|
|
69
|
+
return {
|
|
70
|
+
callApi: defaultCallApi,
|
|
71
|
+
now: () => Date.now(),
|
|
72
|
+
listBackoffMs: defaultListBackoffMs(),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Run one auto-ratification tick across every product in the daemon config.
|
|
77
|
+
*
|
|
78
|
+
* Per-proposal failures are counted and skipped, never aborting the batch --
|
|
79
|
+
* one unratifiable proposal must not strand the rest of the stream (mirrors
|
|
80
|
+
* `applyRatifiedProposals`, realign-apply.ts:403-416).
|
|
81
|
+
*
|
|
82
|
+
* Returns counters useful for log lines and tests.
|
|
83
|
+
*/
|
|
84
|
+
export async function runDriftRatifyTick(config, depOverrides = {}) {
|
|
85
|
+
const deps = { ...defaultDeps(), ...depOverrides };
|
|
86
|
+
const counts = {
|
|
87
|
+
productsScanned: 0,
|
|
88
|
+
productsSkipped: 0,
|
|
89
|
+
proposalsExamined: 0,
|
|
90
|
+
ratified: 0,
|
|
91
|
+
leftForReview: 0,
|
|
92
|
+
held: 0,
|
|
93
|
+
errors: 0,
|
|
94
|
+
};
|
|
95
|
+
for (const product of config.products) {
|
|
96
|
+
counts.productsScanned += 1;
|
|
97
|
+
// Skip a product still inside its list-failure backoff window.
|
|
98
|
+
const nowMs = deps.now();
|
|
99
|
+
const backoffUntil = listBackoffUntil.get(product.id) ?? 0;
|
|
100
|
+
if (nowMs < backoffUntil) {
|
|
101
|
+
counts.productsSkipped += 1;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
let proposals;
|
|
105
|
+
try {
|
|
106
|
+
// NOTE: crt_drift_proposal_list cannot filter on proposed_metadata
|
|
107
|
+
// (drift-proposals.ts:78-119 supports focusId/productId/realityTreeId/
|
|
108
|
+
// status only), so the shortfall split is decided client-side by the
|
|
109
|
+
// policy below -- not by the query.
|
|
110
|
+
const list = await deps.callApi('crt_drift_proposal_list', {
|
|
111
|
+
productId: product.id,
|
|
112
|
+
status: 'proposed',
|
|
113
|
+
});
|
|
114
|
+
proposals = list.items ?? [];
|
|
115
|
+
// Success clears any prior backoff for this product.
|
|
116
|
+
listBackoffUntil.delete(product.id);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
counts.errors += 1;
|
|
120
|
+
listBackoffUntil.set(product.id, nowMs + deps.listBackoffMs);
|
|
121
|
+
log.warn(`[drift-ratify-loop] list failed for product ${product.id} (backing off ${deps.listBackoffMs}ms):`, err.message);
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
for (const proposal of proposals) {
|
|
125
|
+
counts.proposalsExamined += 1;
|
|
126
|
+
const { disposition, reason } = classifyDriftProposal({
|
|
127
|
+
proposalKind: proposal.proposalKind,
|
|
128
|
+
proposedMetadata: proposal.proposedMetadata,
|
|
129
|
+
});
|
|
130
|
+
if (disposition === 'review_dispose') {
|
|
131
|
+
// The bar-lowering channel. Left in `proposed` for an independent
|
|
132
|
+
// review session; this tick must not touch it.
|
|
133
|
+
counts.leftForReview += 1;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (disposition === 'hold') {
|
|
137
|
+
// Fail-closed: unknown kind, malformed metadata, or an internally
|
|
138
|
+
// inconsistent row. Stays `proposed` so a human sees it.
|
|
139
|
+
counts.held += 1;
|
|
140
|
+
log.info(`[drift-ratify-loop] holding proposal ${proposal.id} (kind=${proposal.proposalKind}, reason=${reason})`);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
// No session id: the edge handler stamps ratified_by_kind='system' from
|
|
145
|
+
// the tracker credential. Ratified proposals reach the graph via the
|
|
146
|
+
// existing realign_crt phase; nothing here applies them.
|
|
147
|
+
await deps.callApi('crt_drift_proposal_ratify', { proposalId: proposal.id });
|
|
148
|
+
counts.ratified += 1;
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
counts.errors += 1;
|
|
152
|
+
log.warn(`[drift-ratify-loop] ratify failed for proposal ${proposal.id} (${reason}):`, err.message);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (counts.proposalsExamined > 0 || counts.errors > 0 || counts.productsSkipped > 0) {
|
|
157
|
+
log.info(`[drift-ratify-loop] tick: products=${counts.productsScanned} skipped=${counts.productsSkipped} examined=${counts.proposalsExamined} ratified=${counts.ratified} forReview=${counts.leftForReview} held=${counts.held} errors=${counts.errors}`);
|
|
158
|
+
}
|
|
159
|
+
return counts;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=drift-ratify-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift-ratify-loop.js","sourceRoot":"","sources":["../src/drift-ratify-loop.ts"],"names":[],"mappings":"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"}
|