@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.
Files changed (248) hide show
  1. package/build-info.json +4 -3
  2. package/dist/backends/index.d.ts.map +1 -1
  3. package/dist/backends/index.js +3 -1
  4. package/dist/backends/index.js.map +1 -1
  5. package/dist/completion/advancement-stall-watchdog.d.ts.map +1 -1
  6. package/dist/completion/advancement-stall-watchdog.js +6 -2
  7. package/dist/completion/advancement-stall-watchdog.js.map +1 -1
  8. package/dist/completion/completion-decision.d.ts +10 -1
  9. package/dist/completion/completion-decision.d.ts.map +1 -1
  10. package/dist/completion/completion-decision.js +1 -1
  11. package/dist/completion/completion-decision.js.map +1 -1
  12. package/dist/completion/delivery-advancement-guard.d.ts +31 -16
  13. package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
  14. package/dist/completion/delivery-advancement-guard.js +22 -37
  15. package/dist/completion/delivery-advancement-guard.js.map +1 -1
  16. package/dist/completion/detector.d.ts.map +1 -1
  17. package/dist/completion/detector.js +3 -1
  18. package/dist/completion/detector.js.map +1 -1
  19. package/dist/completion/event-phases.d.ts +19 -8
  20. package/dist/completion/event-phases.d.ts.map +1 -1
  21. package/dist/completion/event-phases.js +67 -88
  22. package/dist/completion/event-phases.js.map +1 -1
  23. package/dist/completion/event.d.ts +12 -9
  24. package/dist/completion/event.d.ts.map +1 -1
  25. package/dist/completion/event.js +6 -3
  26. package/dist/completion/event.js.map +1 -1
  27. package/dist/completion/index.js +1 -1
  28. package/dist/completion/progress-snapshot.d.ts +13 -9
  29. package/dist/completion/progress-snapshot.d.ts.map +1 -1
  30. package/dist/completion/progress-snapshot.js +16 -13
  31. package/dist/completion/progress-snapshot.js.map +1 -1
  32. package/dist/completion/reengagement-redrive.d.ts +8 -1
  33. package/dist/completion/reengagement-redrive.d.ts.map +1 -1
  34. package/dist/completion/reengagement-redrive.js +16 -2
  35. package/dist/completion/reengagement-redrive.js.map +1 -1
  36. package/dist/completion/review-defect-detector.d.ts +58 -18
  37. package/dist/completion/review-defect-detector.d.ts.map +1 -1
  38. package/dist/completion/review-defect-detector.js +62 -27
  39. package/dist/completion/review-defect-detector.js.map +1 -1
  40. package/dist/completion/review-exit-attribution.d.ts +6 -3
  41. package/dist/completion/review-exit-attribution.d.ts.map +1 -1
  42. package/dist/completion/review-exit-attribution.js +9 -7
  43. package/dist/completion/review-exit-attribution.js.map +1 -1
  44. package/dist/completion/review-exit-deps.d.ts +2 -0
  45. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  46. package/dist/completion/review-exit-deps.js +3 -0
  47. package/dist/completion/review-exit-deps.js.map +1 -1
  48. package/dist/completion/review-exit-evidence.d.ts +8 -0
  49. package/dist/completion/review-exit-evidence.d.ts.map +1 -1
  50. package/dist/completion/review-exit-evidence.js +39 -27
  51. package/dist/completion/review-exit-evidence.js.map +1 -1
  52. package/dist/completion/review-exit-foreign-findings.d.ts +5 -1
  53. package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -1
  54. package/dist/completion/review-exit-foreign-findings.js +4 -4
  55. package/dist/completion/review-exit-foreign-findings.js.map +1 -1
  56. package/dist/completion/review-exit-phase.js +4 -4
  57. package/dist/completion/review-exit-phase.js.map +1 -1
  58. package/dist/completion/state-cascade.d.ts.map +1 -1
  59. package/dist/completion/state-cascade.js +11 -19
  60. package/dist/completion/state-cascade.js.map +1 -1
  61. package/dist/completion/team-progress-measure.d.ts +70 -0
  62. package/dist/completion/team-progress-measure.d.ts.map +1 -0
  63. package/dist/completion/team-progress-measure.js +285 -0
  64. package/dist/completion/team-progress-measure.js.map +1 -0
  65. package/dist/completion/team-stillness.d.ts +76 -0
  66. package/dist/completion/team-stillness.d.ts.map +1 -0
  67. package/dist/completion/team-stillness.js +96 -0
  68. package/dist/completion/team-stillness.js.map +1 -0
  69. package/dist/completion/worker-wait.d.ts +84 -0
  70. package/dist/completion/worker-wait.d.ts.map +1 -0
  71. package/dist/completion/worker-wait.js +89 -0
  72. package/dist/completion/worker-wait.js.map +1 -0
  73. package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
  74. package/dist/delivery/delivery-advance-block.js +1 -2
  75. package/dist/delivery/delivery-advance-block.js.map +1 -1
  76. package/dist/delivery/delivery-reconciler.d.ts +3 -3
  77. package/dist/focus/focus-lifecycle.d.ts.map +1 -1
  78. package/dist/focus/focus-lifecycle.js +7 -1
  79. package/dist/focus/focus-lifecycle.js.map +1 -1
  80. package/dist/focus/focus-team-state.js +1 -1
  81. package/dist/focus/focus-worktree-state.d.ts.map +1 -1
  82. package/dist/focus/focus-worktree-state.js +2 -1
  83. package/dist/focus/focus-worktree-state.js.map +1 -1
  84. package/dist/git/focus-integration-sync.d.ts +42 -4
  85. package/dist/git/focus-integration-sync.d.ts.map +1 -1
  86. package/dist/git/focus-integration-sync.js +53 -9
  87. package/dist/git/focus-integration-sync.js.map +1 -1
  88. package/dist/git/types.d.ts.map +1 -1
  89. package/dist/git/types.js +4 -2
  90. package/dist/git/types.js.map +1 -1
  91. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  92. package/dist/merge/merge-back-loop.js +0 -1
  93. package/dist/merge/merge-back-loop.js.map +1 -1
  94. package/dist/prompt-sections/persona-sections.d.ts +14 -0
  95. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  96. package/dist/prompt-sections/persona-sections.js +50 -19
  97. package/dist/prompt-sections/persona-sections.js.map +1 -1
  98. package/dist/prompt-sections/testing-standard.d.ts +4 -1
  99. package/dist/prompt-sections/testing-standard.d.ts.map +1 -1
  100. package/dist/prompt-sections/testing-standard.js +14 -4
  101. package/dist/prompt-sections/testing-standard.js.map +1 -1
  102. package/dist/queries/deliveries.d.ts.map +1 -1
  103. package/dist/queries/deliveries.js +3 -1
  104. package/dist/queries/deliveries.js.map +1 -1
  105. package/dist/queries/delivery-gate-state.js +1 -1
  106. package/dist/queries/escalation-suppression.js +1 -1
  107. package/dist/queries/escalations.js +1 -1
  108. package/dist/queries/focus-integration-conflict.d.ts +7 -4
  109. package/dist/queries/focus-integration-conflict.d.ts.map +1 -1
  110. package/dist/queries/focus-integration-conflict.js +6 -3
  111. package/dist/queries/focus-integration-conflict.js.map +1 -1
  112. package/dist/queries/review-finding-facts.d.ts +38 -0
  113. package/dist/queries/review-finding-facts.d.ts.map +1 -0
  114. package/dist/queries/review-finding-facts.js +43 -0
  115. package/dist/queries/review-finding-facts.js.map +1 -0
  116. package/dist/queries/schemas.d.ts +15 -0
  117. package/dist/queries/schemas.d.ts.map +1 -1
  118. package/dist/queries/schemas.js +12 -1
  119. package/dist/queries/schemas.js.map +1 -1
  120. package/dist/queries/shortfall-park-record.d.ts +6 -1
  121. package/dist/queries/shortfall-park-record.d.ts.map +1 -1
  122. package/dist/queries/shortfall-park-record.js.map +1 -1
  123. package/dist/queries/shortfall-rulings.d.ts +14 -2
  124. package/dist/queries/shortfall-rulings.d.ts.map +1 -1
  125. package/dist/queries/shortfall-rulings.js +17 -3
  126. package/dist/queries/shortfall-rulings.js.map +1 -1
  127. package/dist/queries/verification.js +1 -1
  128. package/dist/queries/verify-own-holds.d.ts.map +1 -1
  129. package/dist/queries/verify-own-holds.js +1 -0
  130. package/dist/queries/verify-own-holds.js.map +1 -1
  131. package/dist/spawn/helpers.d.ts.map +1 -1
  132. package/dist/spawn/helpers.js +9 -1
  133. package/dist/spawn/helpers.js.map +1 -1
  134. package/dist/spawn/lead-continuation.d.ts +10 -2
  135. package/dist/spawn/lead-continuation.d.ts.map +1 -1
  136. package/dist/spawn/lead-continuation.js +39 -22
  137. package/dist/spawn/lead-continuation.js.map +1 -1
  138. package/dist/spawn/one-shot-model.d.ts.map +1 -1
  139. package/dist/spawn/one-shot-model.js +1 -0
  140. package/dist/spawn/one-shot-model.js.map +1 -1
  141. package/dist/spawn/worktree-session.d.ts.map +1 -1
  142. package/dist/spawn/worktree-session.js +11 -1
  143. package/dist/spawn/worktree-session.js.map +1 -1
  144. package/dist/testing/fixtures/conflicting-repo.d.ts +17 -0
  145. package/dist/testing/fixtures/conflicting-repo.d.ts.map +1 -1
  146. package/dist/testing/fixtures/conflicting-repo.js +31 -0
  147. package/dist/testing/fixtures/conflicting-repo.js.map +1 -1
  148. package/dist/testing/fixtures/index.d.ts.map +1 -1
  149. package/dist/testing/fixtures/index.js +1 -2
  150. package/dist/testing/fixtures/index.js.map +1 -1
  151. package/dist/types/focus.d.ts +59 -26
  152. package/dist/types/focus.d.ts.map +1 -1
  153. package/dist/types/index.js +1 -1
  154. package/dist/verify/commit-verdict-pull.d.ts +28 -3
  155. package/dist/verify/commit-verdict-pull.d.ts.map +1 -1
  156. package/dist/verify/commit-verdict-pull.js +160 -23
  157. package/dist/verify/commit-verdict-pull.js.map +1 -1
  158. package/dist/verify/credit-rearm.d.ts.map +1 -1
  159. package/dist/verify/credit-rearm.js +72 -17
  160. package/dist/verify/credit-rearm.js.map +1 -1
  161. package/dist/verify/default-on-guards.d.ts +54 -8
  162. package/dist/verify/default-on-guards.d.ts.map +1 -1
  163. package/dist/verify/default-on-guards.js +132 -17
  164. package/dist/verify/default-on-guards.js.map +1 -1
  165. package/dist/verify/explicit-rearm.d.ts.map +1 -1
  166. package/dist/verify/explicit-rearm.js +1 -0
  167. package/dist/verify/explicit-rearm.js.map +1 -1
  168. package/dist/verify/explicit-row-selection.d.ts +47 -0
  169. package/dist/verify/explicit-row-selection.d.ts.map +1 -0
  170. package/dist/verify/explicit-row-selection.js +37 -0
  171. package/dist/verify/explicit-row-selection.js.map +1 -0
  172. package/dist/verify/gate-run-registry.d.ts.map +1 -1
  173. package/dist/verify/gate-run-registry.js +2 -0
  174. package/dist/verify/gate-run-registry.js.map +1 -1
  175. package/dist/verify/parked-shortfall-reuse.d.ts +194 -0
  176. package/dist/verify/parked-shortfall-reuse.d.ts.map +1 -0
  177. package/dist/verify/parked-shortfall-reuse.js +310 -0
  178. package/dist/verify/parked-shortfall-reuse.js.map +1 -0
  179. package/dist/verify/reselection-log.d.ts +22 -0
  180. package/dist/verify/reselection-log.d.ts.map +1 -0
  181. package/dist/verify/reselection-log.js +87 -0
  182. package/dist/verify/reselection-log.js.map +1 -0
  183. package/dist/verify/shortfall-park.d.ts +8 -1
  184. package/dist/verify/shortfall-park.d.ts.map +1 -1
  185. package/dist/verify/shortfall-park.js +17 -3
  186. package/dist/verify/shortfall-park.js.map +1 -1
  187. package/dist/verify/shortfall-repeat.d.ts.map +1 -1
  188. package/dist/verify/shortfall-repeat.js +7 -2
  189. package/dist/verify/shortfall-repeat.js.map +1 -1
  190. package/dist/verify/shortfall-rulings.d.ts +93 -6
  191. package/dist/verify/shortfall-rulings.d.ts.map +1 -1
  192. package/dist/verify/shortfall-rulings.js +69 -12
  193. package/dist/verify/shortfall-rulings.js.map +1 -1
  194. package/dist/verify/stall-detector-config.d.ts.map +1 -1
  195. package/dist/verify/stall-detector-config.js +2 -1
  196. package/dist/verify/stall-detector-config.js.map +1 -1
  197. package/dist/verify/stall-detectors.d.ts +6 -4
  198. package/dist/verify/stall-detectors.d.ts.map +1 -1
  199. package/dist/verify/stall-detectors.js +9 -6
  200. package/dist/verify/stall-detectors.js.map +1 -1
  201. package/dist/verify/stalled-team-backstop.d.ts +8 -2
  202. package/dist/verify/stalled-team-backstop.d.ts.map +1 -1
  203. package/dist/verify/stalled-team-backstop.js +15 -11
  204. package/dist/verify/stalled-team-backstop.js.map +1 -1
  205. package/dist/verify/team-stall-reapers.d.ts +28 -0
  206. package/dist/verify/team-stall-reapers.d.ts.map +1 -0
  207. package/dist/verify/team-stall-reapers.js +23 -0
  208. package/dist/verify/team-stall-reapers.js.map +1 -0
  209. package/dist/verify/verification-attribution-deps.d.ts +1 -1
  210. package/dist/verify/verification-attribution-deps.d.ts.map +1 -1
  211. package/dist/verify/verification-attribution-deps.js +20 -1
  212. package/dist/verify/verification-attribution-deps.js.map +1 -1
  213. package/dist/verify/verification-boundary-env.d.ts.map +1 -1
  214. package/dist/verify/verification-boundary-env.js +23 -9
  215. package/dist/verify/verification-boundary-env.js.map +1 -1
  216. package/dist/verify/verification-checkout.d.ts +1 -1
  217. package/dist/verify/verification-checkout.d.ts.map +1 -1
  218. package/dist/verify/verification-checkout.js.map +1 -1
  219. package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
  220. package/dist/verify/verification-commit-sharing.js +14 -3
  221. package/dist/verify/verification-commit-sharing.js.map +1 -1
  222. package/dist/verify/verification-config.d.ts.map +1 -1
  223. package/dist/verify/verification-config.js +1 -20
  224. package/dist/verify/verification-config.js.map +1 -1
  225. package/dist/verify/verification-default-on.d.ts +4 -1
  226. package/dist/verify/verification-default-on.d.ts.map +1 -1
  227. package/dist/verify/verification-default-on.js +29 -2
  228. package/dist/verify/verification-default-on.js.map +1 -1
  229. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  230. package/dist/verify/verification-deps-default.js +13 -0
  231. package/dist/verify/verification-deps-default.js.map +1 -1
  232. package/dist/verify/verification-deps.d.ts +38 -0
  233. package/dist/verify/verification-deps.d.ts.map +1 -1
  234. package/dist/verify/verification-deps.js +2 -1
  235. package/dist/verify/verification-deps.js.map +1 -1
  236. package/dist/verify/verification-engine.d.ts.map +1 -1
  237. package/dist/verify/verification-engine.js +44 -15
  238. package/dist/verify/verification-engine.js.map +1 -1
  239. package/dist/verify/verification-feedback.d.ts.map +1 -1
  240. package/dist/verify/verification-feedback.js +1 -19
  241. package/dist/verify/verification-feedback.js.map +1 -1
  242. package/dist/verify/verify-restatement.d.ts.map +1 -1
  243. package/dist/verify/verify-restatement.js +5 -1
  244. package/dist/verify/verify-restatement.js.map +1 -1
  245. package/dist/worktree/provision.d.ts.map +1 -1
  246. package/dist/worktree/provision.js +3 -1
  247. package/dist/worktree/provision.js.map +1 -1
  248. 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/shortfall-rulings.test.ts,
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
- /** Drop a delivery's run mark so the next tick selects it again (its dispatch rendered nothing it may keep). */
180
- export function releaseDefaultOnMark(deliveryId) {
181
- defaultOnRan.delete(deliveryId);
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
- defaultOnRan.delete(deliveryId);
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 verify. The run mark
289
- * and the recorded PASS both go: a genuine verify_failed -> coding -> verify
290
- * re-entry is the ONLY thing that re-arms a passed delivery, so this sweep IS
291
- * that rule -- without it a delivery would keep a pass earned on the code before
292
- * its fix commits, which is the one way the narrowed rule could lower the bar.
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
- for (const id of [...defaultOnRan.keys()]) {
299
- if (!observedInVerify.has(id))
300
- defaultOnRan.delete(id);
399
+ export function pruneGuardsOutsideVerify(observedInVerify, productId) {
400
+ if (productId !== undefined) {
401
+ for (const id of observedInVerify)
402
+ guardProduct.set(id, productId);
301
403
  }
302
- for (const id of [...passedAtSha.keys()]) {
303
- if (!observedInVerify.has(id))
304
- forgetPassedSha(id);
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":"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"}
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":"AAwDA,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"}
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":"AAAA,8FAA8F;AAC9F,gGAAgG;AAChG,mFAAmF;AACnF,oEAAoE;AACpE,sEAAsE;AACtE,2EAA2E;AAC3E,4FAA4F;AAC5F,sEAAsE;AACtE,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAgC,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;AASrD,2EAA2E;AAC3E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC5C,wFAAwF;AACxF,MAAM,cAAc,GAAG,IAAI,OAAO,EAA+B,CAAC;AAElE,6FAA6F;AAC7F,SAAS,cAAc,CAAC,MAAe;IACrC,OAAO,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,eAAe,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1H,CAAC;AAED,2FAA2F;AAC3F,SAAS,gBAAgB,CAAC,QAAwC,EAAE,GAAW,EAAE,OAAe;IAC9F,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,+BAA+B,CAAC;IAC9D,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO,sDAAsD,CAAC;IAChG,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,+BAA+B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,MAAoB,EACpB,UAA+B,EAC/B,IAAuB;IAEvB,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,IAAI,OAAqD,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,sEAAsE,MAAM,CAAC,SAAS,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC5H,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;YAAE,SAAS;QACvC,IAAI,UAA0D,CAAC;QAC/D,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,wEAAwE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACxI,SAAS;QACX,CAAC;QACD,IAAI,IAAwC,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAkB,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,IAAI,0BAA0B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;QACvI,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC;YACpC,IAAI,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAAE,SAAS;YACxG,IAAI,CAAC,CAAC,mBAAmB,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,SAAS;YACpG,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;YACvB,IAAI,GAAG,KAAK,IAAI;gBAAE,SAAS;YAC3B,MAAM,kBAAkB,GAAG,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;YACjC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI;gBAAE,SAAS;YAC3C,MAAM,GAAG,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7F,IAAI,GAAG,KAAK,IAAI;gBAAE,SAAS;YAC3B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,mBAAmB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACzH,MAAM,SAAS,GAAwB;gBACrC,UAAU,EAAE,CAAC,CAAC,EAAE;gBAChB,YAAY,EAAE,CAAC,CAAC,IAAI;gBACpB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,KAAK,CAAC,QAAQ;gBACvB,eAAe,EAAE,CAAC,CAAC,WAAW;gBAC9B,kBAAkB,EAAE,MAAM;gBAC1B,kBAAkB;gBAClB,mBAAmB,EAAE,IAAI;gBACzB,qBAAqB,EAAE,IAAI;gBAC3B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,cAAc,EAAE,CAAC,CAAC,cAAc;aACjC,CAAC;YACF,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACpC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA8B;IACjE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,IAAI;QAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACjH,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,4BAA4B;IAC1C,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC"}
@@ -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":"AAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
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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"}