@telora/daemon 0.22.208 → 0.22.227
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +4 -3
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +3 -1
- package/dist/backends/index.js.map +1 -1
- package/dist/completion/advancement-stall-watchdog.d.ts.map +1 -1
- package/dist/completion/advancement-stall-watchdog.js +6 -2
- package/dist/completion/advancement-stall-watchdog.js.map +1 -1
- package/dist/completion/completion-decision.d.ts +10 -1
- package/dist/completion/completion-decision.d.ts.map +1 -1
- package/dist/completion/completion-decision.js +1 -1
- package/dist/completion/completion-decision.js.map +1 -1
- package/dist/completion/delivery-advancement-guard.d.ts +31 -16
- package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
- package/dist/completion/delivery-advancement-guard.js +22 -37
- package/dist/completion/delivery-advancement-guard.js.map +1 -1
- package/dist/completion/detector.d.ts.map +1 -1
- package/dist/completion/detector.js +3 -1
- package/dist/completion/detector.js.map +1 -1
- package/dist/completion/event-phases.d.ts +19 -8
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +67 -88
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +12 -9
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +6 -3
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/index.js +1 -1
- package/dist/completion/progress-snapshot.d.ts +13 -9
- package/dist/completion/progress-snapshot.d.ts.map +1 -1
- package/dist/completion/progress-snapshot.js +16 -13
- package/dist/completion/progress-snapshot.js.map +1 -1
- package/dist/completion/reengagement-redrive.d.ts +8 -1
- package/dist/completion/reengagement-redrive.d.ts.map +1 -1
- package/dist/completion/reengagement-redrive.js +16 -2
- package/dist/completion/reengagement-redrive.js.map +1 -1
- package/dist/completion/review-defect-detector.d.ts +58 -18
- package/dist/completion/review-defect-detector.d.ts.map +1 -1
- package/dist/completion/review-defect-detector.js +62 -27
- package/dist/completion/review-defect-detector.js.map +1 -1
- package/dist/completion/review-exit-attribution.d.ts +6 -3
- package/dist/completion/review-exit-attribution.d.ts.map +1 -1
- package/dist/completion/review-exit-attribution.js +9 -7
- package/dist/completion/review-exit-attribution.js.map +1 -1
- package/dist/completion/review-exit-deps.d.ts +2 -0
- package/dist/completion/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit-deps.js +3 -0
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-evidence.d.ts +8 -0
- package/dist/completion/review-exit-evidence.d.ts.map +1 -1
- package/dist/completion/review-exit-evidence.js +39 -27
- package/dist/completion/review-exit-evidence.js.map +1 -1
- package/dist/completion/review-exit-foreign-findings.d.ts +5 -1
- package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -1
- package/dist/completion/review-exit-foreign-findings.js +4 -4
- package/dist/completion/review-exit-foreign-findings.js.map +1 -1
- package/dist/completion/review-exit-phase.js +4 -4
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +11 -19
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/completion/team-progress-measure.d.ts +70 -0
- package/dist/completion/team-progress-measure.d.ts.map +1 -0
- package/dist/completion/team-progress-measure.js +285 -0
- package/dist/completion/team-progress-measure.js.map +1 -0
- package/dist/completion/team-stillness.d.ts +76 -0
- package/dist/completion/team-stillness.d.ts.map +1 -0
- package/dist/completion/team-stillness.js +96 -0
- package/dist/completion/team-stillness.js.map +1 -0
- package/dist/completion/worker-wait.d.ts +84 -0
- package/dist/completion/worker-wait.d.ts.map +1 -0
- package/dist/completion/worker-wait.js +89 -0
- package/dist/completion/worker-wait.js.map +1 -0
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +1 -2
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/delivery/delivery-reconciler.d.ts +3 -3
- package/dist/focus/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus/focus-lifecycle.js +7 -1
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-team-state.js +1 -1
- package/dist/focus/focus-worktree-state.d.ts.map +1 -1
- package/dist/focus/focus-worktree-state.js +2 -1
- package/dist/focus/focus-worktree-state.js.map +1 -1
- package/dist/git/focus-integration-sync.d.ts +42 -4
- package/dist/git/focus-integration-sync.d.ts.map +1 -1
- package/dist/git/focus-integration-sync.js +53 -9
- package/dist/git/focus-integration-sync.js.map +1 -1
- package/dist/git/types.d.ts.map +1 -1
- package/dist/git/types.js +4 -2
- package/dist/git/types.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +0 -1
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts +14 -0
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +50 -19
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/prompt-sections/testing-standard.d.ts +4 -1
- package/dist/prompt-sections/testing-standard.d.ts.map +1 -1
- package/dist/prompt-sections/testing-standard.js +14 -4
- package/dist/prompt-sections/testing-standard.js.map +1 -1
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +3 -1
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.js +1 -1
- package/dist/queries/escalation-suppression.js +1 -1
- package/dist/queries/escalations.js +1 -1
- package/dist/queries/focus-integration-conflict.d.ts +7 -4
- package/dist/queries/focus-integration-conflict.d.ts.map +1 -1
- package/dist/queries/focus-integration-conflict.js +6 -3
- package/dist/queries/focus-integration-conflict.js.map +1 -1
- package/dist/queries/review-finding-facts.d.ts +38 -0
- package/dist/queries/review-finding-facts.d.ts.map +1 -0
- package/dist/queries/review-finding-facts.js +43 -0
- package/dist/queries/review-finding-facts.js.map +1 -0
- package/dist/queries/schemas.d.ts +15 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +12 -1
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shortfall-park-record.d.ts +6 -1
- package/dist/queries/shortfall-park-record.d.ts.map +1 -1
- package/dist/queries/shortfall-park-record.js.map +1 -1
- package/dist/queries/shortfall-rulings.d.ts +14 -2
- package/dist/queries/shortfall-rulings.d.ts.map +1 -1
- package/dist/queries/shortfall-rulings.js +17 -3
- package/dist/queries/shortfall-rulings.js.map +1 -1
- package/dist/queries/verification.js +1 -1
- package/dist/queries/verify-own-holds.d.ts.map +1 -1
- package/dist/queries/verify-own-holds.js +1 -0
- package/dist/queries/verify-own-holds.js.map +1 -1
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +9 -1
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/lead-continuation.d.ts +10 -2
- package/dist/spawn/lead-continuation.d.ts.map +1 -1
- package/dist/spawn/lead-continuation.js +39 -22
- package/dist/spawn/lead-continuation.js.map +1 -1
- package/dist/spawn/one-shot-model.d.ts.map +1 -1
- package/dist/spawn/one-shot-model.js +1 -0
- package/dist/spawn/one-shot-model.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +11 -1
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/conflicting-repo.d.ts +17 -0
- package/dist/testing/fixtures/conflicting-repo.d.ts.map +1 -1
- package/dist/testing/fixtures/conflicting-repo.js +31 -0
- package/dist/testing/fixtures/conflicting-repo.js.map +1 -1
- package/dist/testing/fixtures/index.d.ts.map +1 -1
- package/dist/testing/fixtures/index.js +1 -2
- package/dist/testing/fixtures/index.js.map +1 -1
- package/dist/types/focus.d.ts +59 -26
- package/dist/types/focus.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/commit-verdict-pull.d.ts +28 -3
- package/dist/verify/commit-verdict-pull.d.ts.map +1 -1
- package/dist/verify/commit-verdict-pull.js +160 -23
- package/dist/verify/commit-verdict-pull.js.map +1 -1
- package/dist/verify/credit-rearm.d.ts.map +1 -1
- package/dist/verify/credit-rearm.js +72 -17
- package/dist/verify/credit-rearm.js.map +1 -1
- package/dist/verify/default-on-guards.d.ts +54 -8
- package/dist/verify/default-on-guards.d.ts.map +1 -1
- package/dist/verify/default-on-guards.js +132 -17
- package/dist/verify/default-on-guards.js.map +1 -1
- package/dist/verify/explicit-rearm.d.ts.map +1 -1
- package/dist/verify/explicit-rearm.js +1 -0
- package/dist/verify/explicit-rearm.js.map +1 -1
- package/dist/verify/explicit-row-selection.d.ts +47 -0
- package/dist/verify/explicit-row-selection.d.ts.map +1 -0
- package/dist/verify/explicit-row-selection.js +37 -0
- package/dist/verify/explicit-row-selection.js.map +1 -0
- package/dist/verify/gate-run-registry.d.ts.map +1 -1
- package/dist/verify/gate-run-registry.js +2 -0
- package/dist/verify/gate-run-registry.js.map +1 -1
- package/dist/verify/parked-shortfall-reuse.d.ts +194 -0
- package/dist/verify/parked-shortfall-reuse.d.ts.map +1 -0
- package/dist/verify/parked-shortfall-reuse.js +310 -0
- package/dist/verify/parked-shortfall-reuse.js.map +1 -0
- package/dist/verify/reselection-log.d.ts +22 -0
- package/dist/verify/reselection-log.d.ts.map +1 -0
- package/dist/verify/reselection-log.js +87 -0
- package/dist/verify/reselection-log.js.map +1 -0
- package/dist/verify/shortfall-park.d.ts +8 -1
- package/dist/verify/shortfall-park.d.ts.map +1 -1
- package/dist/verify/shortfall-park.js +17 -3
- package/dist/verify/shortfall-park.js.map +1 -1
- package/dist/verify/shortfall-repeat.d.ts.map +1 -1
- package/dist/verify/shortfall-repeat.js +7 -2
- package/dist/verify/shortfall-repeat.js.map +1 -1
- package/dist/verify/shortfall-rulings.d.ts +93 -6
- package/dist/verify/shortfall-rulings.d.ts.map +1 -1
- package/dist/verify/shortfall-rulings.js +69 -12
- package/dist/verify/shortfall-rulings.js.map +1 -1
- package/dist/verify/stall-detector-config.d.ts.map +1 -1
- package/dist/verify/stall-detector-config.js +2 -1
- package/dist/verify/stall-detector-config.js.map +1 -1
- package/dist/verify/stall-detectors.d.ts +6 -4
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +9 -6
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/stalled-team-backstop.d.ts +8 -2
- package/dist/verify/stalled-team-backstop.d.ts.map +1 -1
- package/dist/verify/stalled-team-backstop.js +15 -11
- package/dist/verify/stalled-team-backstop.js.map +1 -1
- package/dist/verify/team-stall-reapers.d.ts +28 -0
- package/dist/verify/team-stall-reapers.d.ts.map +1 -0
- package/dist/verify/team-stall-reapers.js +23 -0
- package/dist/verify/team-stall-reapers.js.map +1 -0
- package/dist/verify/verification-attribution-deps.d.ts +1 -1
- package/dist/verify/verification-attribution-deps.d.ts.map +1 -1
- package/dist/verify/verification-attribution-deps.js +20 -1
- package/dist/verify/verification-attribution-deps.js.map +1 -1
- package/dist/verify/verification-boundary-env.d.ts.map +1 -1
- package/dist/verify/verification-boundary-env.js +23 -9
- package/dist/verify/verification-boundary-env.js.map +1 -1
- package/dist/verify/verification-checkout.d.ts +1 -1
- package/dist/verify/verification-checkout.d.ts.map +1 -1
- package/dist/verify/verification-checkout.js.map +1 -1
- package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
- package/dist/verify/verification-commit-sharing.js +14 -3
- package/dist/verify/verification-commit-sharing.js.map +1 -1
- package/dist/verify/verification-config.d.ts.map +1 -1
- package/dist/verify/verification-config.js +1 -20
- package/dist/verify/verification-config.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +4 -1
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +29 -2
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +13 -0
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +38 -0
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deps.js +2 -1
- package/dist/verify/verification-deps.js.map +1 -1
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +44 -15
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +1 -19
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verify-restatement.d.ts.map +1 -1
- package/dist/verify/verify-restatement.js +5 -1
- package/dist/verify/verify-restatement.js.map +1 -1
- package/dist/worktree/provision.d.ts.map +1 -1
- package/dist/worktree/provision.js +3 -1
- package/dist/worktree/provision.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
2
|
// Pinned by: packages/daemon/src/verify/commit-verdict-pull.test.ts,
|
|
3
|
-
// packages/daemon/src/verify/credit-rearm.test.ts, packages/daemon/src/verify/
|
|
3
|
+
// packages/daemon/src/verify/credit-rearm.test.ts, packages/daemon/src/verify/reselection-log.test.ts,
|
|
4
|
+
// packages/daemon/src/verify/shortfall-rulings.test.ts,
|
|
4
5
|
// packages/daemon/src/verify/verification-default-on.test.ts,
|
|
5
6
|
// packages/daemon/src/verify/verification-model-unavailable-hold.test.ts,
|
|
6
7
|
// packages/daemon/src/verify/verification-run-config-source.test.ts,
|
|
@@ -29,9 +30,27 @@
|
|
|
29
30
|
* The guards are the rule; the scan is the loop that asks them. A leaf: it reads
|
|
30
31
|
* gate_state and logs, and imports nothing from the scan.
|
|
31
32
|
*
|
|
33
|
+
* THE GUARDS ARE PRODUCT-SCOPED AT THE PRUNE. The maps below are module-level and
|
|
34
|
+
* keyed by delivery id alone, but the scan that prunes them runs once PER PRODUCT
|
|
35
|
+
* (verification-engine.ts runVerificationTick), and a scan of product B observes
|
|
36
|
+
* only B's deliveries. So an unscoped prune let B's scan conclude "no longer in
|
|
37
|
+
* verify" about A's deliveries -- which it cannot see and knows nothing about --
|
|
38
|
+
* wiping A's run marks and recorded passes on every tick. On mars (Telora beside
|
|
39
|
+
* other products) that re-selected a delivery parked in verify at an unchanged
|
|
40
|
+
* HEAD every ~60s for ~30 ticks, silently, because the prune logged nothing
|
|
41
|
+
* (incident 2026-09-24, delivery 8ae80225). The fix scopes the prune rather than
|
|
42
|
+
* accumulating one tick-wide observation, because scoping is what keeps the
|
|
43
|
+
* prune's MEANING true: each scan may only conclude something about the product
|
|
44
|
+
* it actually looked at. Each delivery's guards are therefore CLAIMED by the
|
|
45
|
+
* product whose scan observed it in verify, and only that product's scan may
|
|
46
|
+
* prune them; a scan naming no product claims the whole view, as a single-scope
|
|
47
|
+
* caller does. Every drop now names its path in the log
|
|
48
|
+
* (verify/reselection-log.ts), so the next silent re-selection is one grep away.
|
|
49
|
+
*
|
|
32
50
|
* @module verify/default-on-guards
|
|
33
51
|
*/
|
|
34
52
|
import { judgedFailedSha, readVerificationHistory } from '../queries/delivery-gate-state.js';
|
|
53
|
+
import { logReselection } from './reselection-log.js';
|
|
35
54
|
import { createLogger } from '../shell/log.js';
|
|
36
55
|
const log = createLogger({ module: 'verification' });
|
|
37
56
|
/**
|
|
@@ -150,6 +169,21 @@ function forgetFailedSha(deliveryId, durableSha) {
|
|
|
150
169
|
* proves wrong.
|
|
151
170
|
*/
|
|
152
171
|
const passedAtSha = new Map();
|
|
172
|
+
/**
|
|
173
|
+
* delivery id -> the product whose scan owns its guards (the module header's
|
|
174
|
+
* scoping rule). Claimed by the scan that OBSERVES the delivery in verify, not by
|
|
175
|
+
* the dispatch that marks it: the claim and the prune are then two halves of the
|
|
176
|
+
* same read, so a prune can never be a conclusion about a delivery its own scan
|
|
177
|
+
* never looked for. An unclaimed entry is prunable by any scan -- it was recorded
|
|
178
|
+
* with no product claim (a direct caller, or a test), which is the single-view
|
|
179
|
+
* semantics this replaced.
|
|
180
|
+
*/
|
|
181
|
+
const guardProduct = new Map();
|
|
182
|
+
/** Drop the product claim once neither guard holds the delivery. */
|
|
183
|
+
function forgetGuardProduct(deliveryId) {
|
|
184
|
+
if (!defaultOnRan.has(deliveryId) && !passedAtSha.has(deliveryId))
|
|
185
|
+
guardProduct.delete(deliveryId);
|
|
186
|
+
}
|
|
153
187
|
const passSkipKey = (deliveryId, sha) => `${deliveryId}@${sha}#passed`;
|
|
154
188
|
function forgetPassedSha(deliveryId) {
|
|
155
189
|
const sha = passedAtSha.get(deliveryId);
|
|
@@ -163,6 +197,7 @@ export function __resetDefaultOnGuardForTests() {
|
|
|
163
197
|
failedAtSha.clear();
|
|
164
198
|
passedAtSha.clear();
|
|
165
199
|
loggedShaSkips.clear();
|
|
200
|
+
guardProduct.clear();
|
|
166
201
|
}
|
|
167
202
|
/** Test-only: snapshot of the default-on re-run guard (delivery id -> the commit its dispatch judged). */
|
|
168
203
|
export function __getDefaultOnGuardForTests() {
|
|
@@ -172,13 +207,41 @@ export function __getDefaultOnGuardForTests() {
|
|
|
172
207
|
export function markDefaultOnRan(deliveryId) {
|
|
173
208
|
defaultOnRan.set(deliveryId, null);
|
|
174
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* The commit the delivery's run mark says its dispatch judged; null when there is
|
|
212
|
+
* no mark, the dispatch is in flight, or it named no commit -- all "unknown".
|
|
213
|
+
*/
|
|
214
|
+
export function judgedShaOfRunMark(deliveryId) {
|
|
215
|
+
return defaultOnRan.get(deliveryId) ?? null;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Whether the delivery carries a run mark at all -- a dispatch was attempted
|
|
219
|
+
* since the mark was last dropped -- whatever commit (if any) it names.
|
|
220
|
+
*/
|
|
221
|
+
export function hasDefaultOnRunMark(deliveryId) {
|
|
222
|
+
return defaultOnRan.has(deliveryId);
|
|
223
|
+
}
|
|
175
224
|
/** Test-only alias for markDefaultOnRan. */
|
|
176
225
|
export function __markDefaultOnRanForTests(deliveryId) {
|
|
177
226
|
markDefaultOnRan(deliveryId);
|
|
178
227
|
}
|
|
179
|
-
/**
|
|
180
|
-
|
|
181
|
-
|
|
228
|
+
/**
|
|
229
|
+
* Drop a delivery's run mark so the next tick selects it again (its dispatch
|
|
230
|
+
* rendered nothing it may keep).
|
|
231
|
+
*
|
|
232
|
+
* `releasedBy` names the re-selection path for the log. A caller that passes one
|
|
233
|
+
* logs its OWN line at its own call site (where the reason is known), so this
|
|
234
|
+
* stays silent for it; a caller that names none gets the fallback
|
|
235
|
+
* 'run-mark-release' line. Either way nothing is logged when there was no mark to
|
|
236
|
+
* drop: a release that suppressed nothing re-selected nothing.
|
|
237
|
+
*/
|
|
238
|
+
export function releaseDefaultOnMark(deliveryId, releasedBy) {
|
|
239
|
+
if (!defaultOnRan.delete(deliveryId))
|
|
240
|
+
return;
|
|
241
|
+
forgetGuardProduct(deliveryId);
|
|
242
|
+
if (releasedBy === undefined) {
|
|
243
|
+
logReselection('run-mark-release', deliveryId, 'its run mark was dropped, so the next default-on scan selects it again');
|
|
244
|
+
}
|
|
182
245
|
}
|
|
183
246
|
/**
|
|
184
247
|
* Drop a delivery's recorded pass, so the pass guard no longer suppresses it.
|
|
@@ -202,10 +265,41 @@ export function forgetRecordedPass(deliveryId) {
|
|
|
202
265
|
* forget any recorded pass;
|
|
203
266
|
* - a pass -> forget any recorded failure and, at a known judged sha, remember
|
|
204
267
|
* the pass so that commit is not re-verified either.
|
|
268
|
+
*
|
|
269
|
+
* A PASS DEMOTED TO 'failed' BY THE RECONCILIATION records neither: judgedFailedSha
|
|
270
|
+
* requires a non-zero gate exit and the gate exited 0, and the outcome is no longer
|
|
271
|
+
* 'passed'. That is deliberate and it is NOT a hole -- the run mark still carries
|
|
272
|
+
* the commit the run judged (the line above keeps it), so the delivery is not
|
|
273
|
+
* re-selected while a readable focus HEAD equals it, and a new commit re-arms it
|
|
274
|
+
* exactly once. Recording it as a failed sha instead would be wrong twice over: the
|
|
275
|
+
* gate did not fail, and failedAtSha is DURABLE (gate_state), so it would suppress
|
|
276
|
+
* the commit across a restart while the shortfall park -- which owns this state and
|
|
277
|
+
* is released by an operator ruling -- would have nothing to release. Pinned by
|
|
278
|
+
* verification-default-on.test.ts ("a pass demoted by a shortfall ...").
|
|
205
279
|
*/
|
|
206
280
|
export function noteDefaultOnResult(deliveryId, result) {
|
|
207
281
|
if (result.checkoutUnavailable || result.modelUnavailable) {
|
|
208
|
-
|
|
282
|
+
// A parked delivery whose every fact is unchanged is re-selected by no path
|
|
283
|
+
// except a new ruling or a new commit, so the retry is DECLINED -- for BOTH
|
|
284
|
+
// un-marks: the next dispatch would re-derive exactly what the park already
|
|
285
|
+
// records. No wedge follows, and that is decided by STATE, not by path: a
|
|
286
|
+
// model-unavailable hold that LANDED on gate_state refuses the park
|
|
287
|
+
// (parked-shortfall-reuse.ts 'awaiting-model'), so parkHolds is false and the
|
|
288
|
+
// retry proceeds; parkHolds is true only where a real judgement on these same
|
|
289
|
+
// facts still stands and answers for the delivery.
|
|
290
|
+
if (result.parkHolds) {
|
|
291
|
+
const path = result.modelUnavailable ? 'model-unavailable-unmark' : 'checkout-unavailable-unmark';
|
|
292
|
+
logReselection(path, deliveryId, `DECLINED: ${result.modelUnavailable ? 'the reconciliation could not reach the model' : 'no checkout could be made'}, `
|
|
293
|
+
+ 'but its shortfall park stands on an unchanged commit set and unchanged rulings, so a retry would re-derive '
|
|
294
|
+
+ 'the same park; only a new ruling or a new commit re-selects it', 'park-declined');
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
if (defaultOnRan.delete(deliveryId)) {
|
|
298
|
+
forgetGuardProduct(deliveryId);
|
|
299
|
+
logReselection(result.modelUnavailable ? 'model-unavailable-unmark' : 'checkout-unavailable-unmark', deliveryId, result.modelUnavailable
|
|
300
|
+
? 'its reconciliation could not reach the model, so no verdict exists to guard; the next tick re-judges the same commit'
|
|
301
|
+
: 'no checkout could be made, or the verdict was discarded because dependencies moved mid-run; the next tick retries');
|
|
302
|
+
}
|
|
209
303
|
return;
|
|
210
304
|
}
|
|
211
305
|
if (result.verifiedSha && defaultOnRan.has(deliveryId))
|
|
@@ -285,23 +379,44 @@ export function ranOnCurrentHead(deliveryId, readHead) {
|
|
|
285
379
|
return false;
|
|
286
380
|
}
|
|
287
381
|
/**
|
|
288
|
-
* Prune the guards of every delivery no longer observed in
|
|
289
|
-
* and the recorded PASS both go: a genuine verify_failed ->
|
|
290
|
-
* re-entry is the ONLY thing that re-arms a passed delivery, so
|
|
291
|
-
* that rule -- without it a delivery would keep a pass earned on the
|
|
292
|
-
* its fix commits, which is the one way the narrowed rule could lower
|
|
382
|
+
* Prune the guards of every delivery THIS PRODUCT'S scan no longer observed in
|
|
383
|
+
* verify. The run mark and the recorded PASS both go: a genuine verify_failed ->
|
|
384
|
+
* coding -> verify re-entry is the ONLY thing that re-arms a passed delivery, so
|
|
385
|
+
* this sweep IS that rule -- without it a delivery would keep a pass earned on the
|
|
386
|
+
* code before its fix commits, which is the one way the narrowed rule could lower
|
|
387
|
+
* the bar.
|
|
388
|
+
*
|
|
389
|
+
* `productId` is the product the observation was taken over (config.productId of
|
|
390
|
+
* the scan's product-scoped config), and it BOUNDS the conclusion: an entry
|
|
391
|
+
* claimed by another product is left alone, because this scan never looked for it
|
|
392
|
+
* (module header, incident 2026-09-24). Pass `undefined` only from a caller whose
|
|
393
|
+
* single observation IS the whole view. Every observed id is claimed for
|
|
394
|
+
* `productId` here, so the claim and the prune come from one read.
|
|
293
395
|
*
|
|
294
396
|
* failedAtSha is deliberately NOT pruned: a recorded failure is durable in
|
|
295
397
|
* gate_state and survives the round trip on purpose, unchanged.
|
|
296
398
|
*/
|
|
297
|
-
export function pruneGuardsOutsideVerify(observedInVerify) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
399
|
+
export function pruneGuardsOutsideVerify(observedInVerify, productId) {
|
|
400
|
+
if (productId !== undefined) {
|
|
401
|
+
for (const id of observedInVerify)
|
|
402
|
+
guardProduct.set(id, productId);
|
|
301
403
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
404
|
+
// An entry another product's scan claimed is none of this scan's business.
|
|
405
|
+
const outOfScope = (id) => productId !== undefined && (guardProduct.get(id) ?? productId) !== productId;
|
|
406
|
+
for (const id of new Set([...defaultOnRan.keys(), ...passedAtSha.keys(), ...guardProduct.keys()])) {
|
|
407
|
+
if (observedInVerify.has(id) || outOfScope(id))
|
|
408
|
+
continue;
|
|
409
|
+
const dropped = [
|
|
410
|
+
...(defaultOnRan.delete(id) ? ['its run mark'] : []),
|
|
411
|
+
...(passedAtSha.has(id) ? ['its recorded pass'] : []),
|
|
412
|
+
];
|
|
413
|
+
forgetPassedSha(id);
|
|
414
|
+
guardProduct.delete(id);
|
|
415
|
+
// A claim with no guard behind it suppressed nothing: forgetting it is bookkeeping, not a re-selection.
|
|
416
|
+
if (dropped.length === 0)
|
|
417
|
+
continue;
|
|
418
|
+
logReselection('run-mark-prune', id, `${dropped.join(' and ')} dropped -- the default-on scan of product `
|
|
419
|
+
+ `${productId ?? 'the whole view'} no longer observed it in verify`);
|
|
305
420
|
}
|
|
306
421
|
}
|
|
307
422
|
//# sourceMappingURL=default-on-guards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-on-guards.js","sourceRoot":"","sources":["../../src/verify/default-on-guards.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,qEAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"default-on-guards.js","sourceRoot":"","sources":["../../src/verify/default-on-guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explicit-rearm.d.ts","sourceRoot":"","sources":["../../src/verify/explicit-rearm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"explicit-rearm.d.ts","sourceRoot":"","sources":["../../src/verify/explicit-rearm.ts"],"names":[],"mappings":"AAyDA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAShE,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC1D;AAwBD;;;;;GAKG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAoDhC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAGzE;AAED,wDAAwD;AACxD,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// packages/daemon/src/integration/explicit-verdict-invalidation-restart.test.ts,
|
|
4
4
|
// packages/daemon/src/integration/explicit-verdict-reuse.test.ts,
|
|
5
5
|
// packages/daemon/src/integration/held-route-pull-dispatch.test.ts,
|
|
6
|
+
// packages/daemon/src/integration/review-verdict-ruling-release.test.ts,
|
|
6
7
|
// packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
|
|
7
8
|
// packages/daemon/src/integration/shortfall-ruling-release.test.ts,
|
|
8
9
|
// packages/daemon/src/verify/verification-commit-sharing.test.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explicit-rearm.js","sourceRoot":"","sources":["../../src/verify/explicit-rearm.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"explicit-rearm.js","sourceRoot":"","sources":["../../src/verify/explicit-rearm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which explicit-method rows a verification tick may dispatch.
|
|
3
|
+
*
|
|
4
|
+
* THE EDGE RE-LISTS a pending or failed explicit row EVERY TICK, and nothing on
|
|
5
|
+
* that path consults a run mark -- the default-on scan's guards do not cover it.
|
|
6
|
+
* So a parked explicit row was dispatched every ~60s at an unchanged HEAD
|
|
7
|
+
* forever, which is exactly the shape of the 2026-09-24 incident this focus
|
|
8
|
+
* exists to close (verify/shortfall-rulings.ts carries the full account and the
|
|
9
|
+
* closed list of paths that may re-select a parked delivery).
|
|
10
|
+
*
|
|
11
|
+
* A re-listing is neither a new ruling nor a new commit, so it is not one of the
|
|
12
|
+
* two things the declared rule lets re-select a parked delivery. A row whose
|
|
13
|
+
* shortfall park stands on an unchanged commit set and unchanged rulings is
|
|
14
|
+
* therefore DROPPED here, and says so in its own re-selection line -- a declined
|
|
15
|
+
* re-selection is as diagnosable from the log as a taken one.
|
|
16
|
+
*
|
|
17
|
+
* WHAT IS STILL DISPATCHED, unchanged: a row whose facts MOVED (a new commit, a
|
|
18
|
+
* new ruling) and a row any of whose facts is UNKNOWN. This only ever removes a
|
|
19
|
+
* dispatch it can PROVE is pointless; an unreadable gate_state, commit set or
|
|
20
|
+
* rulings read dispatches exactly as before. The park read costs one gate_state
|
|
21
|
+
* read per listed row and stops at "no park" for the ordinary case
|
|
22
|
+
* (verify/parked-shortfall-reuse.ts).
|
|
23
|
+
*
|
|
24
|
+
* ONE LINE PER RE-SELECTION, not per listing. A listing is not a re-selection:
|
|
25
|
+
* the edge lists the row every tick whether or not anything happens to it, and
|
|
26
|
+
* its dispatch starts nothing for a delivery that left verify meanwhile. What
|
|
27
|
+
* re-selects a delivery IN VERIFY is a dispatch that ROUTES a verdict for it, so
|
|
28
|
+
* that is where the line is written (noteRelistedDispatch, called by the tick
|
|
29
|
+
* after each dispatch) -- once per routed dispatch, never de-duplicated, so a row
|
|
30
|
+
* re-dispatched every tick writes a line every tick. A declined listing still
|
|
31
|
+
* writes its own line, de-duplicated per (outcome, last run): it re-selects
|
|
32
|
+
* nothing, and repeating it would say nothing new.
|
|
33
|
+
*
|
|
34
|
+
* @module verify/explicit-row-selection
|
|
35
|
+
*/
|
|
36
|
+
import type { PendingVerification } from '../queries/verification.js';
|
|
37
|
+
import type { StrategyResult } from './verification-deterministic.js';
|
|
38
|
+
import { type ParkedShortfallReuseDeps } from './parked-shortfall-reuse.js';
|
|
39
|
+
export declare function selectDispatchableExplicitRows(pending: readonly PendingVerification[], deps: ParkedShortfallReuseDeps): Promise<PendingVerification[]>;
|
|
40
|
+
/**
|
|
41
|
+
* The re-selection line for a row the listing passed on: written when its
|
|
42
|
+
* dispatch ROUTED a verdict (the delivery was in verify and was judged again),
|
|
43
|
+
* once per dispatch. A dispatch that routed nothing re-selected nothing and
|
|
44
|
+
* writes nothing; a row that did not come from the listing is not this path's.
|
|
45
|
+
*/
|
|
46
|
+
export declare function noteRelistedDispatch(row: PendingVerification, routed: StrategyResult | null): void;
|
|
47
|
+
//# sourceMappingURL=explicit-row-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explicit-row-selection.d.ts","sourceRoot":"","sources":["../../src/verify/explicit-row-selection.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAA6B,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGvG,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmBhC;AAKD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAQlG"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/verify/explicit-row-selection.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
import { parkHoldsOnUnchangedFacts } from './parked-shortfall-reuse.js';
|
|
5
|
+
import { logReselection } from './reselection-log.js';
|
|
6
|
+
export async function selectDispatchableExplicitRows(pending, deps) {
|
|
7
|
+
const out = [];
|
|
8
|
+
for (const row of pending) {
|
|
9
|
+
const outcome = row.verificationOutcome ?? 'none';
|
|
10
|
+
const lastRun = row.verificationLastRunAt ?? 'never';
|
|
11
|
+
if (await parkHoldsOnUnchangedFacts(row, null, deps)) {
|
|
12
|
+
logReselection('pending-relisting', row.deliveryId, `DECLINED: the pending-verifications queue lists its explicit ${row.verificationMethod} row `
|
|
13
|
+
+ `(outcome ${outcome}, last run ${lastRun}), but its shortfall park stands on an unchanged commit `
|
|
14
|
+
+ 'set and unchanged rulings -- a re-listing is neither a new ruling nor a new commit, so it is not dispatched', `park-declined@${outcome}@${lastRun}`);
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
relisted.add(row);
|
|
18
|
+
out.push(row);
|
|
19
|
+
}
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
/** The rows this tick's listing passed on to dispatch (identity, so a re-armed copy of a row is not one). */
|
|
23
|
+
const relisted = new WeakSet();
|
|
24
|
+
/**
|
|
25
|
+
* The re-selection line for a row the listing passed on: written when its
|
|
26
|
+
* dispatch ROUTED a verdict (the delivery was in verify and was judged again),
|
|
27
|
+
* once per dispatch. A dispatch that routed nothing re-selected nothing and
|
|
28
|
+
* writes nothing; a row that did not come from the listing is not this path's.
|
|
29
|
+
*/
|
|
30
|
+
export function noteRelistedDispatch(row, routed) {
|
|
31
|
+
if (!routed || !relisted.has(row))
|
|
32
|
+
return;
|
|
33
|
+
logReselection('pending-relisting', row.deliveryId, `the pending-verifications queue re-listed its explicit ${row.verificationMethod} row `
|
|
34
|
+
+ `(outcome ${row.verificationOutcome ?? 'none'}, last run ${row.verificationLastRunAt ?? 'never'}) `
|
|
35
|
+
+ `and its dispatch routed '${routed.outcome}'`);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=explicit-row-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explicit-row-selection.js","sourceRoot":"","sources":["../../src/verify/explicit-row-selection.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,gBAAgB;AAwChB,OAAO,EAAE,yBAAyB,EAAiC,MAAM,6BAA6B,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAAuC,EACvC,IAA8B;IAE9B,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC;QAClD,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC;QACrD,IAAI,MAAM,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACrD,cAAc,CACZ,mBAAmB,EAAE,GAAG,CAAC,UAAU,EACnC,gEAAgE,GAAG,CAAC,kBAAkB,OAAO;kBAC3F,YAAY,OAAO,cAAc,OAAO,0DAA0D;kBAClG,6GAA6G,EAC/G,iBAAiB,OAAO,IAAI,OAAO,EAAE,CACtC,CAAC;YACF,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6GAA6G;AAC7G,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAuB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAwB,EAAE,MAA6B;IAC1F,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO;IAC1C,cAAc,CACZ,mBAAmB,EAAE,GAAG,CAAC,UAAU,EACnC,0DAA0D,GAAG,CAAC,kBAAkB,OAAO;UACrF,YAAY,GAAG,CAAC,mBAAmB,IAAI,MAAM,cAAc,GAAG,CAAC,qBAAqB,IAAI,OAAO,IAAI;UACnG,4BAA4B,MAAM,CAAC,OAAO,GAAG,CAChD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-run-registry.d.ts","sourceRoot":"","sources":["../../src/verify/gate-run-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gate-run-registry.d.ts","sourceRoot":"","sources":["../../src/verify/gate-run-registry.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mGAAmG;IACnG,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAStD,sIAAsI;AACtI,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,uHAAuH;IACvH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,mBAAmB,CAShF;AAED,0HAA0H;AAC1H,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAK9E;AAED,6HAA6H;AAC7H,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAKzI;AAKD,iHAAiH;AACjH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAExE;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED,6HAA6H;AAC7H,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAEvI;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,GAAG,SAAS,CAE1G;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,mBAAmB,GAAG,IAAI,CAI1G;AAED,iEAAiE;AACjE,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD"}
|
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
// packages/daemon/src/integration/focus-commit-verdict-scenario.test.ts,
|
|
12
12
|
// packages/daemon/src/integration/held-route-pull-dispatch.test.ts,
|
|
13
13
|
// packages/daemon/src/integration/review-rework-resume-verdict.test.ts,
|
|
14
|
+
// packages/daemon/src/integration/review-verdict-ruling-release.test.ts,
|
|
14
15
|
// packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
|
|
15
16
|
// packages/daemon/src/integration/shortfall-ruling-release.test.ts,
|
|
17
|
+
// packages/daemon/src/verify/commit-verdict-pull.test.ts,
|
|
16
18
|
// packages/daemon/src/verify/explicit-run-ledger.test.ts,
|
|
17
19
|
// packages/daemon/src/verify/shortfall-rulings.test.ts,
|
|
18
20
|
// packages/daemon/src/verify/verification-commit-sharing.test.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-run-registry.js","sourceRoot":"","sources":["../../src/verify/gate-run-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gate-run-registry.js","sourceRoot":"","sources":["../../src/verify/gate-run-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A PARKED shortfall is REUSED, not re-judged, while its commit set and its
|
|
3
|
+
* rulings are unchanged.
|
|
4
|
+
*
|
|
5
|
+
* WHY. The verify gate already works this way about the SUITE: a commit whose
|
|
6
|
+
* verdict is recorded is not run again (verify/verification-commit-sharing.ts
|
|
7
|
+
* readReusableVerdict). The RECONCILIATION did not: the engine called
|
|
8
|
+
* `authorTargetRestatements` -- a ~28s `claude --print` one-shot -- on every
|
|
9
|
+
* dispatch whose gate verdict was passed, and consulted the delivery's shortfall
|
|
10
|
+
* park only afterwards, in routing. So however a parked delivery reached dispatch
|
|
11
|
+
* it paid a model call to re-derive a shortfall the park already records by commit
|
|
12
|
+
* set and signature. Measured 2026-09-24: delivery 8ae80225, parked at 06:25Z on
|
|
13
|
+
* commit set `15:2b25de49`, made ~30 reconciliation calls (median 28s) between
|
|
14
|
+
* 06:08Z and 06:54Z at an unchanged HEAD; the one at 06:50Z failed with
|
|
15
|
+
* "verify-reconciliation: model unavailable (auth)", proving each dispatch really
|
|
16
|
+
* was calling the model. A sibling delivery closed the re-dispatch path that fed
|
|
17
|
+
* that loop; this module bounds the COST of any re-dispatch path, including ones
|
|
18
|
+
* not yet found.
|
|
19
|
+
*
|
|
20
|
+
* WHAT IS REUSED. Not a cached verdict -- the park's OWN record. The gaps are
|
|
21
|
+
* rebuilt VERBATIM from the shortfall detail standing on the same gate_state
|
|
22
|
+
* (`shortfallReconciliation.shortfalls`: declared / achieved / reason /
|
|
23
|
+
* diffCitation as the judging pass wrote them), and the rebuild is accepted only
|
|
24
|
+
* when it reproduces the park's own signature (`sameShortfallSignature`). So the
|
|
25
|
+
* routing that follows is the routing a fresh IDENTICAL judgement would produce:
|
|
26
|
+
* the same demotion to 'failed', the same park re-hold with its original
|
|
27
|
+
* `parkedAt`, the same cause-keyed escalation (already deduped in
|
|
28
|
+
* verify/shortfall-park-escalation.ts, so nothing is re-filed) and the same
|
|
29
|
+
* gate_state detail. What it does NOT do is call the model.
|
|
30
|
+
*
|
|
31
|
+
* WHEN IT IS REFUSED -- every one of these judges instead, so the reuse can only
|
|
32
|
+
* ever remove a model call, never a judgement:
|
|
33
|
+
* - no standing park refusing re-work (verify/shortfall-park.ts
|
|
34
|
+
* shortfallParkRefusingRework: a park on a delivery in verify);
|
|
35
|
+
* - the CURRENT commit set could not be read, or differs from the park's, or
|
|
36
|
+
* the park itself recorded none. A null fingerprint means the read FAILED and
|
|
37
|
+
* must never match;
|
|
38
|
+
* - the CURRENT rulings fingerprint could not be read, or differs from the
|
|
39
|
+
* park's, or the PARK carries none. A park's fingerprint is PRESENT exactly
|
|
40
|
+
* when the judgement that recorded it could READ the rulings: '' is a
|
|
41
|
+
* succeeded read of an empty set ("no ruling was in force"), and the field is
|
|
42
|
+
* absent only where the read FAILED (shortfall-park.ts classifyShortfallPark).
|
|
43
|
+
* So an absent one is a park whose ruling history is UNKNOWN and is refused
|
|
44
|
+
* ('park-rulings-unknown') rather than coerced to '' -- coercing it would let
|
|
45
|
+
* a park recorded while the rulings were unreadable be answered from after a
|
|
46
|
+
* later successful EMPTY read, as though the unknown had been known-empty.
|
|
47
|
+
* The recorder is why this can be strict: the previous cycle read an absent
|
|
48
|
+
* fingerprint as '' because requiring presence would otherwise have made the
|
|
49
|
+
* reuse inert for the measured incident (an ordinary no-rulings park wrote no
|
|
50
|
+
* field at all). With the recorder fixed there is no such dilemma -- a
|
|
51
|
+
* known-empty park records '' and reuses, an unknown one judges. A park
|
|
52
|
+
* WRITTEN BY THE OLD RECORDER carries no field even where the rulings were
|
|
53
|
+
* readable and empty: it refuses ONCE, that judgement re-holds it carrying
|
|
54
|
+
* '', and reuse resumes -- the one reconciliation after recovery, no more.
|
|
55
|
+
* Any ruling landing since (an operator row, or an approving review's node
|
|
56
|
+
* verdict arriving through the same reader as `ruledByKind: 'review'`)
|
|
57
|
+
* changes the fingerprint and re-judges exactly once, after which the park
|
|
58
|
+
* carries the new fingerprint and matches again;
|
|
59
|
+
* - the gate_state carries an AWAITED-MODEL hold (`modelUnavailable`,
|
|
60
|
+
* verify/verification-model-unavailable-hold.ts). A park is never WRITTEN by
|
|
61
|
+
* that path -- the engine routes no shortfall when the model was not reached
|
|
62
|
+
* -- but a later tick can leave the hold standing beside a park, and then the
|
|
63
|
+
* last thing that happened to this delivery was a non-judgement. The hold
|
|
64
|
+
* exists precisely so the next tick re-judges the same commit, so this
|
|
65
|
+
* refuses rather than answering from a record the hold sits on top of. It is
|
|
66
|
+
* self-clearing: the first reconciliation that renders rebuilds gate_state
|
|
67
|
+
* without it, and reuse resumes on the tick after;
|
|
68
|
+
* - the gaps cannot be rebuilt from the standing detail, or the rebuild does
|
|
69
|
+
* not reproduce the park's signature (a legacy park, or a writer that
|
|
70
|
+
* replaced the live detail). One judgement re-establishes the detail;
|
|
71
|
+
* - the rebuilt gaps look like a FAILED reconciliation rather than a judgement:
|
|
72
|
+
* a non-ModelUnavailable throw is signed as a whole-injection shortfall
|
|
73
|
+
* (classifyReconciliationThrow), which names the INJECTION node and carries
|
|
74
|
+
* the '(unknown -- reconciliation failed)' declared statement. That is an
|
|
75
|
+
* error, not a verdict, so it is re-attempted rather than reused.
|
|
76
|
+
*
|
|
77
|
+
* WHAT STAYS REACHABLE, AND WHAT DOES NOT. The engine resolves the delivery's
|
|
78
|
+
* evidence before asking this: those are git and record reads every dispatch pays
|
|
79
|
+
* anyway, and leaving them unconditional keeps the pass path one shape. Their
|
|
80
|
+
* instrument-fault branch is then unreachable on a reused dispatch, on purpose --
|
|
81
|
+
* it routes the delivery to bounded RE-WORK, which is exactly what a standing park
|
|
82
|
+
* refuses (shortfallParkRefusingRework), so a blind bundle on a parked delivery
|
|
83
|
+
* must re-hold the park rather than send it back to coding. Everything after the
|
|
84
|
+
* reconciliation is reached exactly as a fresh judgement reaches it: the inward
|
|
85
|
+
* shortfall drift, the routing, the park's escalation, the recorded-targets report
|
|
86
|
+
* (left untouched -- a reused dispatch learned nothing new about arm coverage).
|
|
87
|
+
*
|
|
88
|
+
* WHAT IT DELIBERATELY DOES NOT WIDEN. Reuse is keyed on exactly the two facts
|
|
89
|
+
* the park's own release rule is keyed on (shortfall-park.ts
|
|
90
|
+
* isShortfallParkReleased: the commit set and the rulings fingerprint). Anything
|
|
91
|
+
* that does not release the park does not release the reuse either -- the park
|
|
92
|
+
* already governs whether such a delivery is judged at all, and a second,
|
|
93
|
+
* differently-keyed opinion here would be a way for the two to disagree.
|
|
94
|
+
*
|
|
95
|
+
* The DECISION is pure (decideParkedShortfallReuse) and takes the facts; only
|
|
96
|
+
* resolveParkedShortfallReuse reads them, through the engine's dep seam.
|
|
97
|
+
*
|
|
98
|
+
* @module verify/parked-shortfall-reuse
|
|
99
|
+
*/
|
|
100
|
+
import { type ShortfallPark } from './shortfall-park.js';
|
|
101
|
+
import type { DeliveryGateRecord } from '../queries/deliveries.js';
|
|
102
|
+
import type { ShortfallReconciliationDetail } from '../queries/delivery-gate-state.js';
|
|
103
|
+
import type { PendingVerification } from '../queries/verification.js';
|
|
104
|
+
import type { RuledReconciliation, ShortfallRulingsReader } from './shortfall-rulings.js';
|
|
105
|
+
import type { TargetShortfall } from './verify-restatement.js';
|
|
106
|
+
/** Why a dispatch judged instead of reusing the park. Named so the log says which fact refused. */
|
|
107
|
+
export type ParkReuseRefusal = 'no-park' | 'awaiting-model' | 'park-commit-set-unknown' | 'commit-set-unknown' | 'commit-set-changed' | 'park-rulings-unknown' | 'rulings-unknown' | 'rulings-changed' | 'gaps-not-reconstructable' | 'not-a-judgement';
|
|
108
|
+
/** What a dispatch knows about the delivery's park before it would call the model. */
|
|
109
|
+
export interface ParkedShortfallFacts {
|
|
110
|
+
/** The standing park that refuses re-work (shortfallParkRefusingRework), or null. */
|
|
111
|
+
park: ShortfallPark | null;
|
|
112
|
+
/** The shortfall detail standing on the same gate_state -- the judged gaps, verbatim. */
|
|
113
|
+
detail: ShortfallReconciliationDetail | null;
|
|
114
|
+
/** True when the same gate_state carries the awaited-model hold. */
|
|
115
|
+
awaitingModel: boolean;
|
|
116
|
+
/** The delivery's CURRENT commit-set fingerprint; null when it could not be read. */
|
|
117
|
+
commitSet: string | null;
|
|
118
|
+
/** The delivery's CURRENT rulings fingerprint; null when it could not be read. */
|
|
119
|
+
rulingsFingerprint: string | null;
|
|
120
|
+
/** The injection this dispatch judges (a gap naming it is a failed reconciliation). */
|
|
121
|
+
injectionNodeId: string;
|
|
122
|
+
}
|
|
123
|
+
/** Reuse the park's judgement, or judge afresh (and why). */
|
|
124
|
+
export type ParkedShortfallDecision = {
|
|
125
|
+
reuse: true;
|
|
126
|
+
park: ShortfallPark;
|
|
127
|
+
shortfalls: TargetShortfall[];
|
|
128
|
+
rulingsFingerprint: string;
|
|
129
|
+
} | {
|
|
130
|
+
reuse: false;
|
|
131
|
+
refusal: ParkReuseRefusal;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* The park's gaps, rebuilt VERBATIM from the standing shortfall detail; null when
|
|
135
|
+
* they cannot be. Accepted only when the detail's node set is a BIJECTION with
|
|
136
|
+
* the park's -- no node missing and none extra -- AND the rebuild re-hashes to
|
|
137
|
+
* the park's own signature, so the routing that follows re-holds THIS park
|
|
138
|
+
* rather than opening a new one, and routes exactly what a fresh judgement would.
|
|
139
|
+
* Pure.
|
|
140
|
+
*/
|
|
141
|
+
export declare function reconstructParkedShortfalls(park: ShortfallPark, detail: ShortfallReconciliationDetail | null): TargetShortfall[] | null;
|
|
142
|
+
/**
|
|
143
|
+
* Decide whether this dispatch may answer from the park instead of calling the
|
|
144
|
+
* model (see the module header for each refusal). Pure: every fact is supplied,
|
|
145
|
+
* and every unknown fact refuses.
|
|
146
|
+
*/
|
|
147
|
+
export declare function decideParkedShortfallReuse(facts: ParkedShortfallFacts): ParkedShortfallDecision;
|
|
148
|
+
/** The seams the reuse reads its facts through; each absent one simply judges. */
|
|
149
|
+
export interface ParkedShortfallReuseDeps {
|
|
150
|
+
/**
|
|
151
|
+
* The delivery's execution_status + gate_state as the last writer left them
|
|
152
|
+
* (queries/deliveries.ts getDeliveryGateRecord -- the read
|
|
153
|
+
* routeShortfallOutcome's prior-state read uses). Absent: no park is read and
|
|
154
|
+
* every dispatch judges, exactly as before this module existed.
|
|
155
|
+
*/
|
|
156
|
+
readDeliveryGateRecord?: (deliveryId: string) => Promise<DeliveryGateRecord | null>;
|
|
157
|
+
/**
|
|
158
|
+
* The identities of the delivery's own trailered commits at the commit this
|
|
159
|
+
* dispatch judged (verify/delivery-commit-set.ts), fingerprinted here with
|
|
160
|
+
* commitSetFingerprint -- the same pair routeShortfallOutcome's
|
|
161
|
+
* `resolveCommitSet` goes through, so the two fingerprints are comparable by
|
|
162
|
+
* construction. null when git could not answer.
|
|
163
|
+
*/
|
|
164
|
+
resolveDeliveryCommitSet?: (v: PendingVerification, judgedSha: string | null) => Promise<string[] | null> | string[] | null;
|
|
165
|
+
/** The delivery's active rulings (queries/shortfall-rulings.ts), read for their fingerprint. */
|
|
166
|
+
readShortfallRulings?: ShortfallRulingsReader;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* A reused park, shaped as the ruled reconciliation the engine already routes:
|
|
170
|
+
* no restatements (a held gate flips nothing), no honored ruling (the ruling set
|
|
171
|
+
* is unchanged, so it cleared these gaps at park time or not at all) and nothing
|
|
172
|
+
* withheld.
|
|
173
|
+
*/
|
|
174
|
+
export interface ParkedShortfallReuse extends RuledReconciliation {
|
|
175
|
+
rulingsFingerprint: string;
|
|
176
|
+
park: ShortfallPark;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Whether a park stands on this delivery whose facts are ALL unchanged -- the
|
|
180
|
+
* question every re-selection path asks before dropping a run mark.
|
|
181
|
+
*
|
|
182
|
+
* TRUE means re-selecting it would re-derive exactly what the park already
|
|
183
|
+
* records, so the path declines. FALSE means the park is absent, its facts moved
|
|
184
|
+
* (a new commit, a new ruling), or SOMETHING IS UNKNOWN -- and unknown must
|
|
185
|
+
* re-select, never suppress: this gate may only ever remove a re-selection it can
|
|
186
|
+
* PROVE is pointless. Never throws.
|
|
187
|
+
*/
|
|
188
|
+
export declare function parkHoldsOnUnchangedFacts(v: PendingVerification, judgedSha: string | null, deps: ParkedShortfallReuseDeps): Promise<boolean>;
|
|
189
|
+
/**
|
|
190
|
+
* The park this dispatch may answer from instead of calling the model, or null to
|
|
191
|
+
* judge. Never throws: every read failure refuses.
|
|
192
|
+
*/
|
|
193
|
+
export declare function resolveParkedShortfallReuse(v: PendingVerification, judgedSha: string | null, deps: ParkedShortfallReuseDeps): Promise<ParkedShortfallReuse | null>;
|
|
194
|
+
//# sourceMappingURL=parked-shortfall-reuse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parked-shortfall-reuse.d.ts","sourceRoot":"","sources":["../../src/verify/parked-shortfall-reuse.ts"],"names":[],"mappings":"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"}
|