@telora/daemon 0.15.67 → 0.16.1
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 +5 -3
- package/dist/focus-completion-event.d.ts.map +1 -1
- package/dist/focus-completion-event.js +89 -50
- package/dist/focus-completion-event.js.map +1 -1
- package/dist/queries/verification.d.ts +1 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/schema-version-gate.d.ts +88 -2
- package/dist/schema-version-gate.d.ts.map +1 -1
- package/dist/schema-version-gate.js +147 -7
- package/dist/schema-version-gate.js.map +1 -1
- package/dist/verification-engine.d.ts +5 -2
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +5 -8
- package/dist/verification-engine.js.map +1 -1
- package/package.json +1 -1
package/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"commitSha": "
|
|
3
|
-
"builtAt": "2026-05-
|
|
2
|
+
"commitSha": "60e8cbc9",
|
|
3
|
+
"builtAt": "2026-05-23T22:31:36.180Z",
|
|
4
4
|
"expectedMigrations": [
|
|
5
5
|
"20250829113330_create_org_nodes_table.sql",
|
|
6
6
|
"20250829113402_fix_function_security_search_path.sql",
|
|
@@ -576,6 +576,8 @@
|
|
|
576
576
|
"20260523020424_security_role_self_management_instructions.sql",
|
|
577
577
|
"20260523021605_security_workflow_entity_type_delivery.sql",
|
|
578
578
|
"20260523095104_backfill_resolved_ude_frt_desired_effect.sql",
|
|
579
|
-
"20260523112133_create_token_efficiency_views.sql"
|
|
579
|
+
"20260523112133_create_token_efficiency_views.sql",
|
|
580
|
+
"20260523202844_retire_human_verification_method.sql",
|
|
581
|
+
"20260523203000_token_efficiency_views_add_labels.sql"
|
|
580
582
|
]
|
|
581
583
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-completion-event.d.ts","sourceRoot":"","sources":["../src/focus-completion-event.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpH,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AASnF,yEAAyE;AACzE,eAAO,MAAM,6BAA6B,oCAAoC,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,6BAA6B,yDACc,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,EAAE,MAK3C,CAAC;AAIL,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,cAAc,CAAC;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,gBAAgB,EAAE,CAAC,MAAM,EAAE;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,uBAAuB,EAAE,CACvB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAUD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,EACD,IAAI,GAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAe,GAChE,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAID;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,sBAAsB,EAC3B,IAAI,GAAE,mBAAiC,GACtC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"focus-completion-event.d.ts","sourceRoot":"","sources":["../src/focus-completion-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -125,10 +125,81 @@ export async function handleCompletionEvent(ctx, deps = defaultDeps) {
|
|
|
125
125
|
deps.terminateTeam(focusId);
|
|
126
126
|
return;
|
|
127
127
|
}
|
|
128
|
-
//
|
|
128
|
+
// Determine the team's actionable workload up front: both the verify_failed
|
|
129
|
+
// self-heal and the no-progress guard below depend on whether any
|
|
130
|
+
// agent-actionable delivery (queued / coding / verify_failed) still carries
|
|
131
|
+
// an open issue the team can act on.
|
|
132
|
+
const actionableDeliveryIds = new Set(currentDeliveries
|
|
133
|
+
.filter(d => isStatusAgentActionable(d.executionStatus ?? ''))
|
|
134
|
+
.map(d => d.id));
|
|
135
|
+
const hasActionableWithOpenIssues = currentIssues.some(i => actionableDeliveryIds.has(i.deliveryId) && OPEN_ISSUE_STATUSES.has(i.status));
|
|
136
|
+
// Self-heal BEFORE the no-progress guard. When actionable deliveries exist
|
|
137
|
+
// but none carry open issues, the team has nothing left to code. The common
|
|
138
|
+
// cause is a review that bounced a delivery to verify_failed while all its
|
|
139
|
+
// issues are already Done. The daemon's transparent
|
|
140
|
+
// verify_failed -> coding -> verify stepping (advanceDeliveryStatuses) clears
|
|
141
|
+
// that. Running it here -- before snapshotting -- means a benign "no work to
|
|
142
|
+
// do" cycle either terminates the team cleanly (all deliveries now terminal)
|
|
143
|
+
// or shows up as real progress (the delivery status moved), instead of being
|
|
144
|
+
// counted as coder no-progress. Either way it can no longer accrue toward a
|
|
145
|
+
// spurious team_failure escalation. (Previously this advance ran only AFTER
|
|
146
|
+
// the guard, so the counter could reach the limit and escalate first.)
|
|
147
|
+
let effectiveDeliveries = currentDeliveries;
|
|
148
|
+
if (actionableDeliveryIds.size > 0 && !hasActionableWithOpenIssues) {
|
|
149
|
+
try {
|
|
150
|
+
await deps.advanceDeliveryStatuses(ctx.config, teamState, teamState.leadSessionId ?? '');
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
console.warn(`[focus-executor] Wake-cycle advanceDeliveryStatuses failed for "${focusName}": ${err.message}`);
|
|
154
|
+
}
|
|
155
|
+
// Re-fetch and re-check termination after the advance -- if every delivery
|
|
156
|
+
// is now terminal-for-the-team, exit cleanly and hand off to review
|
|
157
|
+
// routing / verification instead of sending a stale re-engagement.
|
|
158
|
+
try {
|
|
159
|
+
effectiveDeliveries = await deps.getFocusDeliveries(focusId);
|
|
160
|
+
const stillNonTerminal = effectiveDeliveries.filter(d => !isStatusCascadable(d.executionStatus ?? ''));
|
|
161
|
+
if (stillNonTerminal.length === 0) {
|
|
162
|
+
console.log(`[focus-executor] All deliveries terminal after wake-cycle advance for "${focusName}" -- terminating team`);
|
|
163
|
+
teamState.shutdownReason = 'work_complete';
|
|
164
|
+
deps.terminateTeam(focusId);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
console.warn(`[focus-executor] Failed to re-fetch deliveries after wake-cycle advance for "${focusName}": ${err.message}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Recompute the picture on the post-advance state. The team owns exactly two
|
|
173
|
+
// kinds of non-terminal work: planning deliveries (it scopes them) and
|
|
174
|
+
// agent-actionable deliveries that still carry open issues (it codes them).
|
|
175
|
+
const postNonTerminal = effectiveDeliveries.filter(d => !isStatusCascadable(d.executionStatus ?? ''));
|
|
176
|
+
const postActionableIds = new Set(effectiveDeliveries
|
|
177
|
+
.filter(d => isStatusAgentActionable(d.executionStatus ?? ''))
|
|
178
|
+
.map(d => d.id));
|
|
179
|
+
const postHasActionableOpen = currentIssues.some(i => postActionableIds.has(i.deliveryId) && OPEN_ISSUE_STATUSES.has(i.status));
|
|
180
|
+
const hasPlanning = effectiveDeliveries.some(d => (d.executionStatus ?? '') === 'planning');
|
|
181
|
+
const teamHasActionableWork = hasPlanning || postHasActionableOpen;
|
|
182
|
+
// No team-actionable work: every remaining non-terminal delivery is in a
|
|
183
|
+
// daemon/review-managed state the coding team cannot advance (in_review,
|
|
184
|
+
// paused, or a verify_failed the self-heal could not yet clear). The team is
|
|
185
|
+
// NOT stuck on work it can do -- it has nothing to do. Terminate cleanly and
|
|
186
|
+
// let the daemon (on-exit advance), the listener auto-advance, and the review
|
|
187
|
+
// routing move these deliveries. Escalating here is the verify-thrash misfire
|
|
188
|
+
// generalized to non-actionable states; re-engaging just burns cycles.
|
|
189
|
+
if (!teamHasActionableWork) {
|
|
190
|
+
console.log(`[focus-executor] No team-actionable work remains for "${focusName}" -- ` +
|
|
191
|
+
`${postNonTerminal.length} non-terminal delivery(ies) in daemon-managed states ` +
|
|
192
|
+
`(in_review / paused / verify-pending); terminating cleanly without escalation`);
|
|
193
|
+
teamState.shutdownReason = 'work_complete';
|
|
194
|
+
deps.terminateTeam(focusId);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// Capture the (post-advance) snapshot for progress detection. Treat both null
|
|
129
198
|
// and undefined as "no prior snapshot" -- legacy test fixtures may not set
|
|
130
|
-
// the field, and a fresh team has lastProgressSnapshot=null.
|
|
131
|
-
|
|
199
|
+
// the field, and a fresh team has lastProgressSnapshot=null. Snapshotting the
|
|
200
|
+
// effective (refreshed) deliveries ensures a self-heal that moved a delivery
|
|
201
|
+
// out of verify_failed registers as progress and resets the counter.
|
|
202
|
+
const snapshot = takeProgressSnapshot(effectiveDeliveries, currentIssues);
|
|
132
203
|
const priorSnapshot = teamState.lastProgressSnapshot ?? null;
|
|
133
204
|
const madeProgress = priorSnapshot === null
|
|
134
205
|
? true
|
|
@@ -140,12 +211,16 @@ export async function handleCompletionEvent(ctx, deps = defaultDeps) {
|
|
|
140
211
|
teamState.noProgressCycles = (teamState.noProgressCycles ?? 0) + 1;
|
|
141
212
|
}
|
|
142
213
|
teamState.lastProgressSnapshot = snapshot;
|
|
143
|
-
//
|
|
144
|
-
//
|
|
145
|
-
//
|
|
214
|
+
// Crossed the no-progress threshold: escalate and shut the team down so a
|
|
215
|
+
// human can intervene. Reached only when the team HAS actionable work it owns
|
|
216
|
+
// -- a planning delivery to scope, or a coding delivery whose issues stay
|
|
217
|
+
// open -- yet has not moved it for N consecutive cycles. The no-actionable-
|
|
218
|
+
// work cases (verify_failed-with-all-Done, in_review, paused) terminate
|
|
219
|
+
// cleanly above and never reach here, so this escalation now means a
|
|
220
|
+
// genuinely stuck team, not a daemon-managed transition.
|
|
146
221
|
if (teamState.noProgressCycles >= SCOPE_COVERAGE_NO_PROGRESS_LIMIT) {
|
|
147
222
|
console.warn(`[focus-executor] Scope-coverage guard tripped for "${focusName}" -- ` +
|
|
148
|
-
`${teamState.noProgressCycles} consecutive cycles with no progress on ${
|
|
223
|
+
`${teamState.noProgressCycles} consecutive cycles with no progress on ${postNonTerminal.length} ` +
|
|
149
224
|
`non-terminal delivery(ies); escalating and terminating`);
|
|
150
225
|
await escalateNoProgress({
|
|
151
226
|
organizationId: teamState.organizationId,
|
|
@@ -154,59 +229,23 @@ export async function handleCompletionEvent(ctx, deps = defaultDeps) {
|
|
|
154
229
|
focusName,
|
|
155
230
|
agentRoleId: teamState.roleId,
|
|
156
231
|
cycles: teamState.noProgressCycles,
|
|
157
|
-
remaining:
|
|
232
|
+
remaining: postNonTerminal,
|
|
158
233
|
}, deps);
|
|
159
234
|
teamState.shutdownReason = 'work_complete';
|
|
160
235
|
deps.terminateTeam(focusId);
|
|
161
236
|
return;
|
|
162
237
|
}
|
|
163
|
-
//
|
|
164
|
-
//
|
|
165
|
-
// for non-actionable but still non-terminal deliveries (planning,
|
|
166
|
-
// verify_failed).
|
|
167
|
-
const actionableDeliveryIds = new Set(currentDeliveries
|
|
168
|
-
.filter(d => isStatusAgentActionable(d.executionStatus ?? ''))
|
|
169
|
-
.map(d => d.id));
|
|
170
|
-
const hasActionableWithOpenIssues = currentIssues.some(i => actionableDeliveryIds.has(i.deliveryId) && OPEN_ISSUE_STATUSES.has(i.status));
|
|
238
|
+
// Actionable deliveries with open issues -> wake message with the new work.
|
|
239
|
+
// Otherwise (planning deliveries remain) -> re-engagement nudge to scope them.
|
|
171
240
|
let message;
|
|
172
|
-
if (
|
|
241
|
+
if (postHasActionableOpen) {
|
|
173
242
|
console.log(`[focus-executor] Mid-focus handoff for "${focusName}" -- sending new work`);
|
|
174
|
-
message = buildWakeMessage(
|
|
243
|
+
message = buildWakeMessage(effectiveDeliveries, currentIssues, teamState.knownDeliveryIds);
|
|
175
244
|
}
|
|
176
245
|
else {
|
|
177
|
-
|
|
178
|
-
// sitting in verify_failed with all issues already Done, the daemon's
|
|
179
|
-
// transparent verify_failed -> coding -> verify stepping in
|
|
180
|
-
// advanceDeliveryStatuses can clear it -- but that path is only invoked
|
|
181
|
-
// on team exit (focus-completion.ts line ~566). Without this call, the
|
|
182
|
-
// team is repeatedly re-engaged with no work, eventually tripping the
|
|
183
|
-
// scope-coverage guard and filing a spurious team_failure escalation.
|
|
184
|
-
if (actionableDeliveryIds.size > 0) {
|
|
185
|
-
try {
|
|
186
|
-
await deps.advanceDeliveryStatuses(ctx.config, teamState, teamState.leadSessionId ?? '');
|
|
187
|
-
}
|
|
188
|
-
catch (err) {
|
|
189
|
-
console.warn(`[focus-executor] Wake-cycle advanceDeliveryStatuses failed for "${focusName}": ${err.message}`);
|
|
190
|
-
}
|
|
191
|
-
// Re-check termination after the advance — if all deliveries are now
|
|
192
|
-
// terminal, exit cleanly instead of sending a stale re-engagement.
|
|
193
|
-
try {
|
|
194
|
-
const refreshed = await deps.getFocusDeliveries(focusId);
|
|
195
|
-
const stillNonTerminal = refreshed.filter(d => !isStatusCascadable(d.executionStatus ?? ''));
|
|
196
|
-
if (stillNonTerminal.length === 0) {
|
|
197
|
-
console.log(`[focus-executor] All deliveries terminal after wake-cycle advance for "${focusName}" -- terminating team`);
|
|
198
|
-
teamState.shutdownReason = 'work_complete';
|
|
199
|
-
deps.terminateTeam(focusId);
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
catch (err) {
|
|
204
|
-
console.warn(`[focus-executor] Failed to re-fetch deliveries after wake-cycle advance for "${focusName}": ${err.message}`);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
console.log(`[focus-executor] Re-engaging "${focusName}" -- ${nonTerminal.length} non-terminal ` +
|
|
246
|
+
console.log(`[focus-executor] Re-engaging "${focusName}" -- ${postNonTerminal.length} non-terminal ` +
|
|
208
247
|
`delivery(ies) remain (cycle ${teamState.noProgressCycles}/${SCOPE_COVERAGE_NO_PROGRESS_LIMIT})`);
|
|
209
|
-
message = buildReEngagementMessage(
|
|
248
|
+
message = buildReEngagementMessage(postNonTerminal, currentIssues);
|
|
210
249
|
}
|
|
211
250
|
// Update tracking state
|
|
212
251
|
for (const d of currentDeliveries) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-completion-event.js","sourceRoot":"","sources":["../src/focus-completion-event.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"focus-completion-event.js","sourceRoot":"","sources":["../src/focus-completion-event.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,uBAAuB,IAAI,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAElG,yEAAyE;AACzE,MAAM,CAAC,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AAE/E,gFAAgF;AAChF,MAAM,CAAC,MAAM,6BAA6B,GACxC,sDAAsD,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAW,CAAC,GAAG,EAAE;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC,EAAE,CAAC;AAwCL,MAAM,WAAW,GAAwB;IACvC,kBAAkB;IAClB,cAAc;IACd,gBAAgB,EAAE,uBAAuB;IACzC,aAAa,EAAE,oBAAoB;IACnC,uBAAuB,EAAE,8BAA8B;CACxD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAMC,EACD,OAAsD,WAAW;IAEjE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,SAAS,CACb,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC1B,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,SAAS;YACT,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kBAAkB,CAAC,mBAAmB;YAClD,WAAW,EACT,4BAA4B,SAAS,sCAAsC;gBAC3E,oCAAoC,6BAA6B,OAAO;gBACxE,cAAc,SAAS,IAAI;gBAC3B,iBAAiB,MAAM,CAAC,OAAO,IAAI;gBACnC,mBAAmB,WAAW,MAAM;gBACpC,oEAAoE;gBACpE,kDAAkD;YACpD,YAAY,EAAE,oDAAoD,SAAS,IAAI;YAC/E,UAAU,EAAE,wIAAwI;SACrJ,CAAC,EACF,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,qCAAqC,MAAM,CAAC,OAAO,EAAE,EAAE,CACjF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,6DAA6D,SAAS,IAAI;YAC1E,YAAY,6BAA6B,GAAG,CAC7C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,sEAAsE,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC9G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,2EAA2E;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAA2B,EAC3B,OAA4B,WAAW;IAEvC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IAExE,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3D,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;KAC7B,CAAC,CAAC;IAEH,4EAA4E;IAC5E,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IACxE,6EAA6E;IAC7E,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,uCAAuC,SAAS,2BAA2B;gBAC3E,+BAA+B,CAChC,CAAC;YACF,MAAM,uBAAuB,CAAC;gBAC5B,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;gBACxC,OAAO;gBACP,SAAS;gBACT,WAAW,EAAE,SAAS,CAAC,MAAM;aAC9B,EAAE,IAAI,CAAC,CAAC;YACT,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACjE,CAAC;QACD,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC;QAChC,OAAO,CAAC,GAAG,CACT,0CAA0C,SAAS,KAAK;YACxD,GAAG,iBAAiB,CAAC,MAAM,2BAA2B,CACvD,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,6DAA6D;IAC7D,0EAA0E;IAC1E,6EAA6E;IAC7E,uEAAuE;IACvE,mDAAmD;IACnD,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAClD,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,iDAAiD,SAAS,uBAAuB,CAClF,CAAC;QACF,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,4EAA4E;IAC5E,kEAAkE;IAClE,4EAA4E;IAC5E,qCAAqC;IACrC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CACnC,iBAAiB;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClB,CAAC;IACF,MAAM,2BAA2B,GAAG,aAAa,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAClF,CAAC;IAEF,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,oDAAoD;IACpD,8EAA8E;IAC9E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,uEAAuE;IACvE,IAAI,mBAAmB,GAAG,iBAAiB,CAAC;IAC5C,IAAI,qBAAqB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,uBAAuB,CAChC,GAAG,CAAC,MAAM,EACV,SAAS,EACT,SAAS,CAAC,aAAa,IAAI,EAAE,CAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,mEAAmE,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC3G,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,oEAAoE;QACpE,mEAAmE;QACnE,IAAI,CAAC;YACH,mBAAmB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAClD,CAAC;YACF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CACT,0EAA0E,SAAS,uBAAuB,CAC3G,CAAC;gBACF,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;gBAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,gFAAgF,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACxH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAChD,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAClD,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,mBAAmB;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClB,CAAC;IACF,MAAM,qBAAqB,GAAG,aAAa,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAC9E,CAAC;IACF,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK,UAAU,CAC9C,CAAC;IACF,MAAM,qBAAqB,GAAG,WAAW,IAAI,qBAAqB,CAAC;IAEnE,yEAAyE;IACzE,yEAAyE;IACzE,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,uEAAuE;IACvE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CACT,yDAAyD,SAAS,OAAO;YACzE,GAAG,eAAe,CAAC,MAAM,uDAAuD;YAChF,+EAA+E,CAChF,CAAC;QACF,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,SAAS,CAAC,oBAAoB,IAAI,IAAI,CAAC;IAC7D,MAAM,YAAY,GAAG,aAAa,KAAK,IAAI;QACzC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAE7C,IAAI,YAAY,EAAE,CAAC;QACjB,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,gBAAgB,GAAG,CAAC,SAAS,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;IAE1C,0EAA0E;IAC1E,8EAA8E;IAC9E,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,qEAAqE;IACrE,yDAAyD;IACzD,IAAI,SAAS,CAAC,gBAAgB,IAAI,gCAAgC,EAAE,CAAC;QACnE,OAAO,CAAC,IAAI,CACV,sDAAsD,SAAS,OAAO;YACtE,GAAG,SAAS,CAAC,gBAAgB,2CAA2C,eAAe,CAAC,MAAM,GAAG;YACjG,wDAAwD,CACzD,CAAC;QACF,MAAM,kBAAkB,CAAC;YACvB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;YACxC,OAAO;YACP,SAAS;YACT,WAAW,EAAE,SAAS,CAAC,MAAM;YAC7B,MAAM,EAAE,SAAS,CAAC,gBAAgB;YAClC,SAAS,EAAE,eAAe;SAC3B,EAAE,IAAI,CAAC,CAAC;QACT,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,4EAA4E;IAC5E,+EAA+E;IAC/E,IAAI,OAAe,CAAC;IACpB,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CACT,2CAA2C,SAAS,uBAAuB,CAC5E,CAAC;QACF,OAAO,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,aAAa,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,iCAAiC,SAAS,QAAQ,eAAe,CAAC,MAAM,gBAAgB;YACxF,+BAA+B,SAAS,CAAC,gBAAgB,IAAI,gCAAgC,GAAG,CACjG,CAAC;QACF,OAAO,GAAG,wBAAwB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,wBAAwB;IACxB,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC;IACjE,CAAC;IAED,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC3B,WAAW,CAAC,IAAI,CAAC,KAAM,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,2EAA2E;AAE3E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAA+D,EAC/D,MAAwB;IAExB,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;IACnD,CAAC;IACD,OAAO;QACL,gBAAgB;QAChB,eAAe,EAAE,MAAM,CAAC,MAAM;KAC/B,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,CAAmB,EAAE,CAAmB;IACrE,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2EAA2E;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAQC,EACD,OAAsD,WAAW;IAEjE,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS;SACnC,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;SAC/C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,eAAe,IAAI,OAAO,WAAW,CAAC,CAAC,YAAY,GAAG,CAAC;SACpF,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,oEAAoE;IACpE,0EAA0E;IAC1E,0EAA0E;IAC1E,uEAAuE;IACvE,0CAA0C;IAC1C,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GACtB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;IAExF,MAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC;IAEjF,MAAM,QAAQ,GAA4B;QACxC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,cAAc;KACtB,CAAC;IACF,IAAI,kBAAkB,EAAE,CAAC;QACvB,QAAQ,CAAC,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClD,UAAU,EAAE,CAAC,CAAC,EAAE;YAChB,YAAY,EAAE,CAAC,CAAC,IAAI;YACpB,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB;QACpC,CAAC,CAAC,mBAAmB,MAAM,CAAC,SAAS,gDAAgD;YACnF,+BAA+B,MAAM,CAAC,SAAS,CAAC,MAAM,2BAA2B;YACjF,UAAU,MAAM,CAAC,MAAM,2EAA2E;YAClG,cAAc,MAAM,CAAC,SAAS,IAAI;YAClC,iBAAiB,MAAM,CAAC,OAAO,IAAI;YACnC,mBAAmB,MAAM,CAAC,WAAW,IAAI;YACzC,oCAAoC,aAAa,MAAM;YACvD,mFAAmF;YACnF,kCAAkC;QACpC,CAAC,CAAC,mBAAmB,MAAM,CAAC,SAAS,yBAAyB,MAAM,CAAC,MAAM,GAAG;YAC5E,2DAA2D,6BAA6B,OAAO;YAC/F,cAAc,MAAM,CAAC,SAAS,IAAI;YAClC,iBAAiB,MAAM,CAAC,OAAO,IAAI;YACnC,mBAAmB,MAAM,CAAC,WAAW,IAAI;YACzC,2CAA2C,aAAa,MAAM;YAC9D,4EAA4E,CAAC;IAEjF,IAAI,CAAC;QACH,MAAM,SAAS,CACb,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC1B,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kBAAkB,CAAC,mBAAmB;YAClD,cAAc;YACd,QAAQ;YACR,WAAW;YACX,YAAY,EACV,oDAAoD,MAAM,CAAC,MAAM,YAAY;gBAC7E,gFAAgF;YAClF,UAAU,EAAE,kBAAkB;gBAC5B,CAAC,CAAC,4EAA4E;oBAC5E,wEAAwE;gBAC1E,CAAC,CAAC,8EAA8E;oBAC9E,4EAA4E;oBAC5E,kCAAkC;SACvC,CAAC,EACF,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,0BAA0B,MAAM,CAAC,OAAO,EAAE,EAAE,CACtE,CAAC;QACF,OAAO,CAAC,GAAG,CACT,4BAA4B,cAAc,oBAAoB,MAAM,CAAC,SAAS,IAAI;YAClF,YAAY,6BAA6B,GAAG,CAC7C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,iEAAiE,MAAM,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAChH,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - Record the outcome of a verification attempt.
|
|
6
6
|
* - Trigger the existing reality_tree_verify_injection compound op on pass.
|
|
7
7
|
*/
|
|
8
|
-
export type VerificationMethod = 'deterministic' | 'behavioral' | 'ai_inspection'
|
|
8
|
+
export type VerificationMethod = 'deterministic' | 'behavioral' | 'ai_inspection';
|
|
9
9
|
export type VerificationOutcome = 'pending' | 'passed' | 'failed' | 'escalated';
|
|
10
10
|
export interface PendingVerification {
|
|
11
11
|
deliveryId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/queries/verification.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/queries/verification.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe,CAAC;AAClF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEhF,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACnD,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMhC;AAED,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,8EAA8E;AAC9E,wBAAsB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAC/C,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -11,19 +11,45 @@
|
|
|
11
11
|
* Runs at startup immediately after validateTrackerAuth so the daemon
|
|
12
12
|
* never reaches its write path with a deploy-order schema drift.
|
|
13
13
|
*
|
|
14
|
+
* Deploy-race tolerance: infra's apply-migrations.sh applies a migration
|
|
15
|
+
* and writes its public._migrations ledger row in SEPARATE (non-atomic)
|
|
16
|
+
* psql invocations. Across a multi-migration deploy this leaves an
|
|
17
|
+
* inter-migration window where the schema is live but the newest ledger
|
|
18
|
+
* rows are not written yet -- a daemon (re)starting in that window reads
|
|
19
|
+
* recently-applied migrations as "missing". To avoid false-tripping into
|
|
20
|
+
* read-only mode, the gate classifies the missing set: a small number of
|
|
21
|
+
* only-very-recent missing migrations is a transient eventual-consistency
|
|
22
|
+
* gap, so the gate re-polls the ledger with bounded backoff (early-exit
|
|
23
|
+
* the moment the gap closes) before deciding. A large gap, or any missing
|
|
24
|
+
* migration older than the recency margin, is genuine drift and trips
|
|
25
|
+
* immediately with no added latency.
|
|
26
|
+
*
|
|
14
27
|
* Operator runbook: docs/runbook-schema-version-gate.md
|
|
15
28
|
* Incident: 2026-05-21 escalation 4bffb633.
|
|
16
29
|
*/
|
|
17
30
|
export type SchemaGateMode = 'fail-fast' | 'warn' | 'off';
|
|
31
|
+
/** How the initial missing set was classified before any decision. */
|
|
32
|
+
export type GapClassification = 'ok' | 'transient' | 'drift';
|
|
18
33
|
export interface SchemaGateResult {
|
|
19
34
|
mode: SchemaGateMode;
|
|
20
35
|
/** Expected migration versions (timestamp prefixes, e.g. '20260521233716'). */
|
|
21
36
|
expected: string[];
|
|
22
|
-
/** Applied migration versions returned by the live DB. */
|
|
37
|
+
/** Applied migration versions returned by the live DB (final read). */
|
|
23
38
|
applied: string[];
|
|
24
|
-
/** Expected ∖ applied. Empty when ok. */
|
|
39
|
+
/** Expected ∖ applied after the final ledger read. Empty when ok. */
|
|
25
40
|
missing: string[];
|
|
26
41
|
ok: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Classification of the initial missing set:
|
|
44
|
+
* 'ok' -- nothing missing on the first read.
|
|
45
|
+
* 'transient' -- small gap of only very-recent migrations; the gate
|
|
46
|
+
* re-polled before deciding (ok may be true or false).
|
|
47
|
+
* 'drift' -- large gap or an older missing migration; tripped
|
|
48
|
+
* immediately with no re-poll.
|
|
49
|
+
*/
|
|
50
|
+
classification: GapClassification;
|
|
51
|
+
/** Total ledger reads performed (1 = no re-poll; >1 = transient re-poll). */
|
|
52
|
+
attempts: number;
|
|
27
53
|
}
|
|
28
54
|
/**
|
|
29
55
|
* Resolve the operating mode from environment.
|
|
@@ -41,10 +67,70 @@ export declare function resolveSchemaGateMode(env?: NodeJS.ProcessEnv): SchemaGa
|
|
|
41
67
|
* -> '20260521233716'. Returns the input unchanged if no underscore.
|
|
42
68
|
*/
|
|
43
69
|
export declare function versionPrefix(filename: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* Tunables governing when a missing set is treated as a transient
|
|
72
|
+
* deploy-race tail vs genuine drift, and how the bounded re-poll behaves.
|
|
73
|
+
*/
|
|
74
|
+
export interface TransientToleranceConfig {
|
|
75
|
+
/** Max missing count that can still qualify as transient. Above -> drift. */
|
|
76
|
+
maxMissing: number;
|
|
77
|
+
/**
|
|
78
|
+
* Recency margin (ms). A missing migration qualifies as "very recent"
|
|
79
|
+
* only if its timestamp is newer than (newest-applied minus this margin).
|
|
80
|
+
* Any older missing migration -> drift. The margin absorbs the small
|
|
81
|
+
* out-of-order interleaving that concurrent migration authoring can
|
|
82
|
+
* produce around the newest-applied boundary.
|
|
83
|
+
*/
|
|
84
|
+
recencyMarginMs: number;
|
|
85
|
+
/** Max additional ledger reads after the first (the re-poll budget). */
|
|
86
|
+
repollAttempts: number;
|
|
87
|
+
/** Total wall-clock budget (ms) for all re-polls combined. */
|
|
88
|
+
repollWindowMs: number;
|
|
89
|
+
}
|
|
90
|
+
export declare const DEFAULT_TRANSIENT_TOLERANCE: TransientToleranceConfig;
|
|
91
|
+
/**
|
|
92
|
+
* Resolve transient-tolerance tunables from environment. Recency margin and
|
|
93
|
+
* the re-poll window are configured in SECONDS for operator friendliness;
|
|
94
|
+
* everything is stored internally in ms.
|
|
95
|
+
*
|
|
96
|
+
* TELORA_SCHEMA_GATE_TRANSIENT_MAX -> maxMissing (count)
|
|
97
|
+
* TELORA_SCHEMA_GATE_RECENCY_MARGIN_SEC -> recencyMarginMs
|
|
98
|
+
* TELORA_SCHEMA_GATE_REPOLL_ATTEMPTS -> repollAttempts (count)
|
|
99
|
+
* TELORA_SCHEMA_GATE_REPOLL_WINDOW_SEC -> repollWindowMs
|
|
100
|
+
*/
|
|
101
|
+
export declare function resolveTransientToleranceConfig(env?: NodeJS.ProcessEnv): TransientToleranceConfig;
|
|
102
|
+
/**
|
|
103
|
+
* Parse a 14-digit migration version (YYYYMMDDHHMMSS, UTC) into epoch ms.
|
|
104
|
+
* Returns NaN for anything that is not exactly 14 digits -- callers treat
|
|
105
|
+
* an unparseable timestamp as non-recent (i.e. genuine drift), which is the
|
|
106
|
+
* conservative choice.
|
|
107
|
+
*/
|
|
108
|
+
export declare function parseMigrationTimestamp(version: string): number;
|
|
109
|
+
/**
|
|
110
|
+
* Classify a non-empty missing set as a transient deploy-race tail or
|
|
111
|
+
* genuine drift, given the currently-applied versions.
|
|
112
|
+
*
|
|
113
|
+
* Transient requires BOTH:
|
|
114
|
+
* - count <= maxMissing, AND
|
|
115
|
+
* - every missing timestamp is "very recent": newer than the newest
|
|
116
|
+
* applied timestamp minus the recency margin.
|
|
117
|
+
*
|
|
118
|
+
* Drift otherwise -- including the degenerate cases (no applied baseline,
|
|
119
|
+
* or an unparseable timestamp), which cannot be a recoverable deploy tail.
|
|
120
|
+
*/
|
|
121
|
+
export declare function classifyMissing(missing: string[], applied: string[], cfg: TransientToleranceConfig): Exclude<GapClassification, 'ok'>;
|
|
44
122
|
export interface CheckSchemaVersionDeps {
|
|
45
123
|
mode?: SchemaGateMode;
|
|
46
124
|
getExpected?: () => string[];
|
|
47
125
|
getApplied?: () => Promise<string[]>;
|
|
126
|
+
/** Transient-tolerance tunables (defaults resolved from env). */
|
|
127
|
+
transientTolerance?: TransientToleranceConfig;
|
|
128
|
+
/** Injectable sleep for deterministic re-poll tests. */
|
|
129
|
+
sleep?: (ms: number) => Promise<void>;
|
|
130
|
+
/** Injectable clock for deterministic re-poll-window tests. */
|
|
131
|
+
now?: () => number;
|
|
132
|
+
/** Injectable logger (defaults to console.log) for re-poll progress. */
|
|
133
|
+
log?: (msg: string) => void;
|
|
48
134
|
}
|
|
49
135
|
export declare function checkSchemaVersion(deps?: CheckSchemaVersionDeps): Promise<SchemaGateResult>;
|
|
50
136
|
export declare function reportSchemaGateResult(result: SchemaGateResult): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-version-gate.d.ts","sourceRoot":"","sources":["../src/schema-version-gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema-version-gate.d.ts","sourceRoot":"","sources":["../src/schema-version-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC;AAE1D,sEAAsE;AACtE,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,uEAAuE;IACvE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qEAAqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ;;;;;;;OAOG;IACH,cAAc,EAAE,iBAAiB,CAAC;IAClC,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CAO1F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAItD;AAMD;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,2BAA2B,EAAE,wBAKzC,CAAC;AAYF;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,wBAAwB,CAqB1B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAclC;AASD,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,wDAAwD;IACxD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,wEAAwE;IACxE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgErG;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA8BrE"}
|
|
@@ -11,6 +11,19 @@
|
|
|
11
11
|
* Runs at startup immediately after validateTrackerAuth so the daemon
|
|
12
12
|
* never reaches its write path with a deploy-order schema drift.
|
|
13
13
|
*
|
|
14
|
+
* Deploy-race tolerance: infra's apply-migrations.sh applies a migration
|
|
15
|
+
* and writes its public._migrations ledger row in SEPARATE (non-atomic)
|
|
16
|
+
* psql invocations. Across a multi-migration deploy this leaves an
|
|
17
|
+
* inter-migration window where the schema is live but the newest ledger
|
|
18
|
+
* rows are not written yet -- a daemon (re)starting in that window reads
|
|
19
|
+
* recently-applied migrations as "missing". To avoid false-tripping into
|
|
20
|
+
* read-only mode, the gate classifies the missing set: a small number of
|
|
21
|
+
* only-very-recent missing migrations is a transient eventual-consistency
|
|
22
|
+
* gap, so the gate re-polls the ledger with bounded backoff (early-exit
|
|
23
|
+
* the moment the gap closes) before deciding. A large gap, or any missing
|
|
24
|
+
* migration older than the recency margin, is genuine drift and trips
|
|
25
|
+
* immediately with no added latency.
|
|
26
|
+
*
|
|
14
27
|
* Operator runbook: docs/runbook-schema-version-gate.md
|
|
15
28
|
* Incident: 2026-05-21 escalation 4bffb633.
|
|
16
29
|
*/
|
|
@@ -47,28 +60,155 @@ export function versionPrefix(filename) {
|
|
|
47
60
|
return filename;
|
|
48
61
|
return filename.slice(0, underscore);
|
|
49
62
|
}
|
|
63
|
+
export const DEFAULT_TRANSIENT_TOLERANCE = {
|
|
64
|
+
maxMissing: 3,
|
|
65
|
+
recencyMarginMs: 10 * 60 * 1000, // 10 minutes
|
|
66
|
+
repollAttempts: 6,
|
|
67
|
+
repollWindowMs: 45_000, // 45 seconds
|
|
68
|
+
};
|
|
69
|
+
/** Initial re-poll delay; doubles each attempt up to MAX_REPOLL_DELAY_MS. */
|
|
70
|
+
const INITIAL_REPOLL_DELAY_MS = 1_000;
|
|
71
|
+
const MAX_REPOLL_DELAY_MS = 8_000;
|
|
72
|
+
function parseNonNegInt(raw, fallback) {
|
|
73
|
+
if (raw == null || raw.trim() === '')
|
|
74
|
+
return fallback;
|
|
75
|
+
const n = Number(raw);
|
|
76
|
+
return Number.isFinite(n) && n >= 0 ? Math.floor(n) : fallback;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Resolve transient-tolerance tunables from environment. Recency margin and
|
|
80
|
+
* the re-poll window are configured in SECONDS for operator friendliness;
|
|
81
|
+
* everything is stored internally in ms.
|
|
82
|
+
*
|
|
83
|
+
* TELORA_SCHEMA_GATE_TRANSIENT_MAX -> maxMissing (count)
|
|
84
|
+
* TELORA_SCHEMA_GATE_RECENCY_MARGIN_SEC -> recencyMarginMs
|
|
85
|
+
* TELORA_SCHEMA_GATE_REPOLL_ATTEMPTS -> repollAttempts (count)
|
|
86
|
+
* TELORA_SCHEMA_GATE_REPOLL_WINDOW_SEC -> repollWindowMs
|
|
87
|
+
*/
|
|
88
|
+
export function resolveTransientToleranceConfig(env = process.env) {
|
|
89
|
+
return {
|
|
90
|
+
maxMissing: parseNonNegInt(env.TELORA_SCHEMA_GATE_TRANSIENT_MAX, DEFAULT_TRANSIENT_TOLERANCE.maxMissing),
|
|
91
|
+
recencyMarginMs: parseNonNegInt(env.TELORA_SCHEMA_GATE_RECENCY_MARGIN_SEC, DEFAULT_TRANSIENT_TOLERANCE.recencyMarginMs / 1000) * 1000,
|
|
92
|
+
repollAttempts: parseNonNegInt(env.TELORA_SCHEMA_GATE_REPOLL_ATTEMPTS, DEFAULT_TRANSIENT_TOLERANCE.repollAttempts),
|
|
93
|
+
repollWindowMs: parseNonNegInt(env.TELORA_SCHEMA_GATE_REPOLL_WINDOW_SEC, DEFAULT_TRANSIENT_TOLERANCE.repollWindowMs / 1000) * 1000,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Parse a 14-digit migration version (YYYYMMDDHHMMSS, UTC) into epoch ms.
|
|
98
|
+
* Returns NaN for anything that is not exactly 14 digits -- callers treat
|
|
99
|
+
* an unparseable timestamp as non-recent (i.e. genuine drift), which is the
|
|
100
|
+
* conservative choice.
|
|
101
|
+
*/
|
|
102
|
+
export function parseMigrationTimestamp(version) {
|
|
103
|
+
const m = /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/.exec(version);
|
|
104
|
+
if (!m)
|
|
105
|
+
return NaN;
|
|
106
|
+
const [, y, mo, d, h, mi, s] = m;
|
|
107
|
+
return Date.UTC(Number(y), Number(mo) - 1, Number(d), Number(h), Number(mi), Number(s));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Classify a non-empty missing set as a transient deploy-race tail or
|
|
111
|
+
* genuine drift, given the currently-applied versions.
|
|
112
|
+
*
|
|
113
|
+
* Transient requires BOTH:
|
|
114
|
+
* - count <= maxMissing, AND
|
|
115
|
+
* - every missing timestamp is "very recent": newer than the newest
|
|
116
|
+
* applied timestamp minus the recency margin.
|
|
117
|
+
*
|
|
118
|
+
* Drift otherwise -- including the degenerate cases (no applied baseline,
|
|
119
|
+
* or an unparseable timestamp), which cannot be a recoverable deploy tail.
|
|
120
|
+
*/
|
|
121
|
+
export function classifyMissing(missing, applied, cfg) {
|
|
122
|
+
if (missing.length > cfg.maxMissing)
|
|
123
|
+
return 'drift';
|
|
124
|
+
const appliedTs = applied.map(parseMigrationTimestamp).filter((n) => !Number.isNaN(n));
|
|
125
|
+
if (appliedTs.length === 0)
|
|
126
|
+
return 'drift'; // no baseline to call anything "recent"
|
|
127
|
+
const newestApplied = Math.max(...appliedTs);
|
|
128
|
+
const recencyThreshold = newestApplied - cfg.recencyMarginMs;
|
|
129
|
+
for (const v of missing) {
|
|
130
|
+
const ts = parseMigrationTimestamp(v);
|
|
131
|
+
if (Number.isNaN(ts))
|
|
132
|
+
return 'drift';
|
|
133
|
+
if (ts <= recencyThreshold)
|
|
134
|
+
return 'drift'; // older than the margin -> not a deploy tail
|
|
135
|
+
}
|
|
136
|
+
return 'transient';
|
|
137
|
+
}
|
|
138
|
+
function computeMissing(expected, applied) {
|
|
139
|
+
const appliedSet = new Set(applied);
|
|
140
|
+
return expected.filter((v) => !appliedSet.has(v));
|
|
141
|
+
}
|
|
142
|
+
const defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
50
143
|
export async function checkSchemaVersion(deps = {}) {
|
|
51
144
|
const mode = deps.mode ?? resolveSchemaGateMode();
|
|
145
|
+
const cfg = deps.transientTolerance ?? resolveTransientToleranceConfig();
|
|
146
|
+
const getApplied = deps.getApplied ?? defaultGetApplied;
|
|
147
|
+
const sleep = deps.sleep ?? defaultSleep;
|
|
148
|
+
const now = deps.now ?? Date.now;
|
|
149
|
+
const log = deps.log ?? ((msg) => console.log(msg));
|
|
52
150
|
const expectedFilenames = (deps.getExpected ?? defaultGetExpected)();
|
|
53
151
|
const expected = expectedFilenames.map(versionPrefix);
|
|
54
152
|
// Dev mode -- build-info missing or empty. Skip the gate.
|
|
55
153
|
if (expected.length === 0) {
|
|
56
|
-
return { mode, expected: [], applied: [], missing: [], ok: true };
|
|
154
|
+
return { mode, expected: [], applied: [], missing: [], ok: true, classification: 'ok', attempts: 0 };
|
|
57
155
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
156
|
+
let applied = await getApplied();
|
|
157
|
+
let attempts = 1;
|
|
158
|
+
let missing = computeMissing(expected, applied);
|
|
159
|
+
if (missing.length === 0) {
|
|
160
|
+
return { mode, expected, applied, missing, ok: true, classification: 'ok', attempts };
|
|
161
|
+
}
|
|
162
|
+
// Something is missing -- transient deploy tail, or genuine drift?
|
|
163
|
+
const classification = classifyMissing(missing, applied, cfg);
|
|
164
|
+
if (classification === 'drift') {
|
|
165
|
+
// Genuine drift: trip immediately, no re-poll, no added latency.
|
|
166
|
+
return { mode, expected, applied, missing, ok: false, classification: 'drift', attempts };
|
|
167
|
+
}
|
|
168
|
+
// Transient: re-poll the ledger with bounded backoff, exiting early the
|
|
169
|
+
// moment the gap closes. Bounded by BOTH the attempt count and the total
|
|
170
|
+
// wall-clock window so a never-resolving gap still trips read-only.
|
|
171
|
+
log(`[schema-gate] Transient gap: ${missing.length} very-recent migration(s) missing ` +
|
|
172
|
+
`(<= ${cfg.maxMissing}); re-polling up to ${cfg.repollAttempts}x over ${Math.round(cfg.repollWindowMs / 1000)}s ` +
|
|
173
|
+
'before deciding (deploy-race tolerance).');
|
|
174
|
+
const start = now();
|
|
175
|
+
let delay = INITIAL_REPOLL_DELAY_MS;
|
|
176
|
+
let repolls = 0;
|
|
177
|
+
while (repolls < cfg.repollAttempts) {
|
|
178
|
+
const elapsed = now() - start;
|
|
179
|
+
if (elapsed >= cfg.repollWindowMs)
|
|
180
|
+
break;
|
|
181
|
+
const remaining = cfg.repollWindowMs - elapsed;
|
|
182
|
+
await sleep(Math.min(delay, remaining));
|
|
183
|
+
applied = await getApplied();
|
|
184
|
+
attempts += 1;
|
|
185
|
+
repolls += 1;
|
|
186
|
+
missing = computeMissing(expected, applied);
|
|
187
|
+
if (missing.length === 0) {
|
|
188
|
+
log(`[schema-gate] Transient gap closed after ${repolls} re-poll(s) -- proceeding in write mode.`);
|
|
189
|
+
return { mode, expected, applied, missing, ok: true, classification: 'transient', attempts };
|
|
190
|
+
}
|
|
191
|
+
delay = Math.min(delay * 2, MAX_REPOLL_DELAY_MS);
|
|
192
|
+
}
|
|
193
|
+
// Window exhausted and the gap remains -- treat as drift for the decision.
|
|
194
|
+
log(`[schema-gate] Transient gap did not close after ${repolls} re-poll(s) -- ${missing.length} migration(s) still missing.`);
|
|
195
|
+
return { mode, expected, applied, missing, ok: false, classification: 'transient', attempts };
|
|
62
196
|
}
|
|
63
197
|
export function reportSchemaGateResult(result) {
|
|
64
198
|
if (result.mode === 'off')
|
|
65
199
|
return;
|
|
66
200
|
if (result.ok) {
|
|
67
|
-
|
|
201
|
+
const repolled = result.classification === 'transient'
|
|
202
|
+
? ` (transient deploy-race gap closed after ${result.attempts} ledger read(s))`
|
|
203
|
+
: '';
|
|
204
|
+
console.log(`[schema-gate] OK -- all ${result.expected.length} expected migrations applied${repolled}`);
|
|
68
205
|
return;
|
|
69
206
|
}
|
|
207
|
+
const cause = result.classification === 'transient'
|
|
208
|
+
? ' (transient gap did not close within the re-poll window)'
|
|
209
|
+
: ' (genuine drift -- large gap or non-recent missing migration)';
|
|
70
210
|
const lines = result.missing.map((m) => ` - ${m}`).join('\n');
|
|
71
|
-
const body = `[schema-gate] Missing ${result.missing.length} migration(s) in live DB:\n${lines}`;
|
|
211
|
+
const body = `[schema-gate] Missing ${result.missing.length} migration(s) in live DB${cause}:\n${lines}`;
|
|
72
212
|
if (result.mode === 'fail-fast') {
|
|
73
213
|
console.error(body);
|
|
74
214
|
console.error('[schema-gate] Refusing to start. Apply missing migrations or set TELORA_SCHEMA_GATE=warn to override. ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-version-gate.js","sourceRoot":"","sources":["../src/schema-version-gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema-version-gate.js","sourceRoot":"","sources":["../src/schema-version-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,qBAAqB,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA6B1E;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACxE,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChE,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,GAAG,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC5C,6CAA6C;IAC7C,OAAO,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AA2BD,MAAM,CAAC,MAAM,2BAA2B,GAA6B;IACnE,UAAU,EAAE,CAAC;IACb,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IAC9C,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,aAAa;CACtC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC,SAAS,cAAc,CAAC,GAAuB,EAAE,QAAgB;IAC/D,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,+BAA+B,CAC7C,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO;QACL,UAAU,EAAE,cAAc,CACxB,GAAG,CAAC,gCAAgC,EACpC,2BAA2B,CAAC,UAAU,CACvC;QACD,eAAe,EACb,cAAc,CACZ,GAAG,CAAC,qCAAqC,EACzC,2BAA2B,CAAC,eAAe,GAAG,IAAI,CACnD,GAAG,IAAI;QACV,cAAc,EAAE,cAAc,CAC5B,GAAG,CAAC,kCAAkC,EACtC,2BAA2B,CAAC,cAAc,CAC3C;QACD,cAAc,EACZ,cAAc,CACZ,GAAG,CAAC,oCAAoC,EACxC,2BAA2B,CAAC,cAAc,GAAG,IAAI,CAClD,GAAG,IAAI;KACX,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,CAAC,GAAG,8CAA8C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAiB,EACjB,OAAiB,EACjB,GAA6B;IAE7B,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IAEpD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,wCAAwC;IACpF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,aAAa,GAAG,GAAG,CAAC,eAAe,CAAC;IAE7D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,OAAO,CAAC;QACrC,IAAI,EAAE,IAAI,gBAAgB;YAAE,OAAO,OAAO,CAAC,CAAC,6CAA6C;IAC3F,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,cAAc,CAAC,QAAkB,EAAE,OAAiB;IAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAgBtG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA+B,EAAE;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,qBAAqB,EAAE,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,IAAI,+BAA+B,EAAE,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5D,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEtD,0DAA0D;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACvG,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACxF,CAAC;IAED,mEAAmE;IACnE,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9D,IAAI,cAAc,KAAK,OAAO,EAAE,CAAC;QAC/B,iEAAiE;QACjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC5F,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,oEAAoE;IACpE,GAAG,CACD,gCAAgC,OAAO,CAAC,MAAM,oCAAoC;QAChF,OAAO,GAAG,CAAC,UAAU,uBAAuB,GAAG,CAAC,cAAc,UAAU,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI;QACjH,0CAA0C,CAC7C,CAAC;IACF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;IACpB,IAAI,KAAK,GAAG,uBAAuB,CAAC;IACpC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,OAAO,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;QAC9B,IAAI,OAAO,IAAI,GAAG,CAAC,cAAc;YAAE,MAAM;QACzC,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC;QAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QAExC,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;QAC7B,QAAQ,IAAI,CAAC,CAAC;QACd,OAAO,IAAI,CAAC,CAAC;QACb,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,4CAA4C,OAAO,0CAA0C,CAAC,CAAC;YACnG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC/F,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACnD,CAAC;IAED,2EAA2E;IAC3E,GAAG,CACD,mDAAmD,OAAO,kBAAkB,OAAO,CAAC,MAAM,8BAA8B,CACzH,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO;IAClC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,QAAQ,GACZ,MAAM,CAAC,cAAc,KAAK,WAAW;YACnC,CAAC,CAAC,4CAA4C,MAAM,CAAC,QAAQ,kBAAkB;YAC/E,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CACT,2BAA2B,MAAM,CAAC,QAAQ,CAAC,MAAM,+BAA+B,QAAQ,EAAE,CAC3F,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GACT,MAAM,CAAC,cAAc,KAAK,WAAW;QACnC,CAAC,CAAC,0DAA0D;QAC5D,CAAC,CAAC,+DAA+D,CAAC;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,yBAAyB,MAAM,CAAC,OAAO,CAAC,MAAM,2BAA2B,KAAK,MAAM,KAAK,EAAE,CAAC;IACzG,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,CAAC,KAAK,CACX,wGAAwG;YACxG,0CAA0C,CAC3C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CACV,4GAA4G,CAC7G,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
* outcome the injection is retired (its FRT statement promotes to CRT)
|
|
8
8
|
* via the existing reality_tree_verify_injection compound op.
|
|
9
9
|
*
|
|
10
|
+
* Per-delivery verification is opt-in: it runs only when a delivery carries
|
|
11
|
+
* an explicit method. A delivery with no method does not block -- focus-level
|
|
12
|
+
* AI review is the sole verify->done authority. Humans observe via the focus
|
|
13
|
+
* debug tab, never via a gate.
|
|
14
|
+
*
|
|
10
15
|
* Methods:
|
|
11
16
|
* deterministic -- run a shell command (tests, lint, types). Pass = exit 0.
|
|
12
17
|
* behavioral -- runtime telemetry observation (scaffold; needs drift
|
|
@@ -14,7 +19,6 @@
|
|
|
14
19
|
* ai_inspection -- AI reads code/state and decides (scaffold; needs an
|
|
15
20
|
* AI inspection driver that walks the reality tree in
|
|
16
21
|
* conversation via `telora_reality_tree_*` MCP calls).
|
|
17
|
-
* human -- pure no-op: human flips verification_outcome via UI.
|
|
18
22
|
*
|
|
19
23
|
* @module verification-engine
|
|
20
24
|
*/
|
|
@@ -35,7 +39,6 @@ interface StrategyResult {
|
|
|
35
39
|
* repo path as fallback). Pass = exit 0.
|
|
36
40
|
*/
|
|
37
41
|
export declare function runDeterministicStrategy(config: Record<string, unknown> | null, cwd: string): Promise<StrategyResult>;
|
|
38
|
-
export declare function runHumanStrategy(): Promise<StrategyResult>;
|
|
39
42
|
export declare function runBehavioralStrategy(): Promise<StrategyResult>;
|
|
40
43
|
/**
|
|
41
44
|
* Spawn a tool-augmented Claude runner against the focus worktree to judge
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-engine.d.ts","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"verification-engine.d.ts","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
* outcome the injection is retired (its FRT statement promotes to CRT)
|
|
8
8
|
* via the existing reality_tree_verify_injection compound op.
|
|
9
9
|
*
|
|
10
|
+
* Per-delivery verification is opt-in: it runs only when a delivery carries
|
|
11
|
+
* an explicit method. A delivery with no method does not block -- focus-level
|
|
12
|
+
* AI review is the sole verify->done authority. Humans observe via the focus
|
|
13
|
+
* debug tab, never via a gate.
|
|
14
|
+
*
|
|
10
15
|
* Methods:
|
|
11
16
|
* deterministic -- run a shell command (tests, lint, types). Pass = exit 0.
|
|
12
17
|
* behavioral -- runtime telemetry observation (scaffold; needs drift
|
|
@@ -14,7 +19,6 @@
|
|
|
14
19
|
* ai_inspection -- AI reads code/state and decides (scaffold; needs an
|
|
15
20
|
* AI inspection driver that walks the reality tree in
|
|
16
21
|
* conversation via `telora_reality_tree_*` MCP calls).
|
|
17
|
-
* human -- pure no-op: human flips verification_outcome via UI.
|
|
18
22
|
*
|
|
19
23
|
* @module verification-engine
|
|
20
24
|
*/
|
|
@@ -87,12 +91,6 @@ export async function runDeterministicStrategy(config, cwd) {
|
|
|
87
91
|
});
|
|
88
92
|
});
|
|
89
93
|
}
|
|
90
|
-
export async function runHumanStrategy() {
|
|
91
|
-
return {
|
|
92
|
-
outcome: 'pending',
|
|
93
|
-
rationale: 'human strategy -- awaiting "done done" sign-off via UI',
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
94
|
export async function runBehavioralStrategy() {
|
|
97
95
|
return {
|
|
98
96
|
outcome: 'pending',
|
|
@@ -172,7 +170,6 @@ const STRATEGIES = {
|
|
|
172
170
|
deterministic: (deps, v) => deps.runDeterministic(v.verificationConfig, deps.resolveCwd(v.productId)),
|
|
173
171
|
behavioral: () => runBehavioralStrategy(),
|
|
174
172
|
ai_inspection: (deps, v) => runAiInspectionStrategy(deps, v),
|
|
175
|
-
human: () => runHumanStrategy(),
|
|
176
173
|
};
|
|
177
174
|
/**
|
|
178
175
|
* Run verification for a single delivery.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-engine.js","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"verification-engine.js","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|