@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
@@ -0,0 +1,310 @@
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/commit-verdict-pull.test.ts,
3
+ // packages/daemon/src/verify/explicit-row-selection.test.ts,
4
+ // packages/daemon/src/verify/parked-shortfall-reuse.test.ts
5
+ // PINNED-BY-END
6
+ /**
7
+ * A PARKED shortfall is REUSED, not re-judged, while its commit set and its
8
+ * rulings are unchanged.
9
+ *
10
+ * WHY. The verify gate already works this way about the SUITE: a commit whose
11
+ * verdict is recorded is not run again (verify/verification-commit-sharing.ts
12
+ * readReusableVerdict). The RECONCILIATION did not: the engine called
13
+ * `authorTargetRestatements` -- a ~28s `claude --print` one-shot -- on every
14
+ * dispatch whose gate verdict was passed, and consulted the delivery's shortfall
15
+ * park only afterwards, in routing. So however a parked delivery reached dispatch
16
+ * it paid a model call to re-derive a shortfall the park already records by commit
17
+ * set and signature. Measured 2026-09-24: delivery 8ae80225, parked at 06:25Z on
18
+ * commit set `15:2b25de49`, made ~30 reconciliation calls (median 28s) between
19
+ * 06:08Z and 06:54Z at an unchanged HEAD; the one at 06:50Z failed with
20
+ * "verify-reconciliation: model unavailable (auth)", proving each dispatch really
21
+ * was calling the model. A sibling delivery closed the re-dispatch path that fed
22
+ * that loop; this module bounds the COST of any re-dispatch path, including ones
23
+ * not yet found.
24
+ *
25
+ * WHAT IS REUSED. Not a cached verdict -- the park's OWN record. The gaps are
26
+ * rebuilt VERBATIM from the shortfall detail standing on the same gate_state
27
+ * (`shortfallReconciliation.shortfalls`: declared / achieved / reason /
28
+ * diffCitation as the judging pass wrote them), and the rebuild is accepted only
29
+ * when it reproduces the park's own signature (`sameShortfallSignature`). So the
30
+ * routing that follows is the routing a fresh IDENTICAL judgement would produce:
31
+ * the same demotion to 'failed', the same park re-hold with its original
32
+ * `parkedAt`, the same cause-keyed escalation (already deduped in
33
+ * verify/shortfall-park-escalation.ts, so nothing is re-filed) and the same
34
+ * gate_state detail. What it does NOT do is call the model.
35
+ *
36
+ * WHEN IT IS REFUSED -- every one of these judges instead, so the reuse can only
37
+ * ever remove a model call, never a judgement:
38
+ * - no standing park refusing re-work (verify/shortfall-park.ts
39
+ * shortfallParkRefusingRework: a park on a delivery in verify);
40
+ * - the CURRENT commit set could not be read, or differs from the park's, or
41
+ * the park itself recorded none. A null fingerprint means the read FAILED and
42
+ * must never match;
43
+ * - the CURRENT rulings fingerprint could not be read, or differs from the
44
+ * park's, or the PARK carries none. A park's fingerprint is PRESENT exactly
45
+ * when the judgement that recorded it could READ the rulings: '' is a
46
+ * succeeded read of an empty set ("no ruling was in force"), and the field is
47
+ * absent only where the read FAILED (shortfall-park.ts classifyShortfallPark).
48
+ * So an absent one is a park whose ruling history is UNKNOWN and is refused
49
+ * ('park-rulings-unknown') rather than coerced to '' -- coercing it would let
50
+ * a park recorded while the rulings were unreadable be answered from after a
51
+ * later successful EMPTY read, as though the unknown had been known-empty.
52
+ * The recorder is why this can be strict: the previous cycle read an absent
53
+ * fingerprint as '' because requiring presence would otherwise have made the
54
+ * reuse inert for the measured incident (an ordinary no-rulings park wrote no
55
+ * field at all). With the recorder fixed there is no such dilemma -- a
56
+ * known-empty park records '' and reuses, an unknown one judges. A park
57
+ * WRITTEN BY THE OLD RECORDER carries no field even where the rulings were
58
+ * readable and empty: it refuses ONCE, that judgement re-holds it carrying
59
+ * '', and reuse resumes -- the one reconciliation after recovery, no more.
60
+ * Any ruling landing since (an operator row, or an approving review's node
61
+ * verdict arriving through the same reader as `ruledByKind: 'review'`)
62
+ * changes the fingerprint and re-judges exactly once, after which the park
63
+ * carries the new fingerprint and matches again;
64
+ * - the gate_state carries an AWAITED-MODEL hold (`modelUnavailable`,
65
+ * verify/verification-model-unavailable-hold.ts). A park is never WRITTEN by
66
+ * that path -- the engine routes no shortfall when the model was not reached
67
+ * -- but a later tick can leave the hold standing beside a park, and then the
68
+ * last thing that happened to this delivery was a non-judgement. The hold
69
+ * exists precisely so the next tick re-judges the same commit, so this
70
+ * refuses rather than answering from a record the hold sits on top of. It is
71
+ * self-clearing: the first reconciliation that renders rebuilds gate_state
72
+ * without it, and reuse resumes on the tick after;
73
+ * - the gaps cannot be rebuilt from the standing detail, or the rebuild does
74
+ * not reproduce the park's signature (a legacy park, or a writer that
75
+ * replaced the live detail). One judgement re-establishes the detail;
76
+ * - the rebuilt gaps look like a FAILED reconciliation rather than a judgement:
77
+ * a non-ModelUnavailable throw is signed as a whole-injection shortfall
78
+ * (classifyReconciliationThrow), which names the INJECTION node and carries
79
+ * the '(unknown -- reconciliation failed)' declared statement. That is an
80
+ * error, not a verdict, so it is re-attempted rather than reused.
81
+ *
82
+ * WHAT STAYS REACHABLE, AND WHAT DOES NOT. The engine resolves the delivery's
83
+ * evidence before asking this: those are git and record reads every dispatch pays
84
+ * anyway, and leaving them unconditional keeps the pass path one shape. Their
85
+ * instrument-fault branch is then unreachable on a reused dispatch, on purpose --
86
+ * it routes the delivery to bounded RE-WORK, which is exactly what a standing park
87
+ * refuses (shortfallParkRefusingRework), so a blind bundle on a parked delivery
88
+ * must re-hold the park rather than send it back to coding. Everything after the
89
+ * reconciliation is reached exactly as a fresh judgement reaches it: the inward
90
+ * shortfall drift, the routing, the park's escalation, the recorded-targets report
91
+ * (left untouched -- a reused dispatch learned nothing new about arm coverage).
92
+ *
93
+ * WHAT IT DELIBERATELY DOES NOT WIDEN. Reuse is keyed on exactly the two facts
94
+ * the park's own release rule is keyed on (shortfall-park.ts
95
+ * isShortfallParkReleased: the commit set and the rulings fingerprint). Anything
96
+ * that does not release the park does not release the reuse either -- the park
97
+ * already governs whether such a delivery is judged at all, and a second,
98
+ * differently-keyed opinion here would be a way for the two to disagree.
99
+ *
100
+ * The DECISION is pure (decideParkedShortfallReuse) and takes the facts; only
101
+ * resolveParkedShortfallReuse reads them, through the engine's dep seam.
102
+ *
103
+ * @module verify/parked-shortfall-reuse
104
+ */
105
+ import { commitSetFingerprint, shortfallParkRefusingRework } from './shortfall-park.js';
106
+ import { sameShortfallSignature, shortfallSignature } from './shortfall-repeat.js';
107
+ import { hasModelUnavailableHold } from '../queries/verify-own-holds.js';
108
+ import { createLogger } from '../shell/log.js';
109
+ const log = createLogger({ module: 'verification' });
110
+ /**
111
+ * The declared statement classifyReconciliationThrow
112
+ * (verify/verification-model-unavailable-hold.ts) signs a FAILED reconciliation
113
+ * with. Duplicated as a sentinel rather than imported so this module keeps no
114
+ * edge to the hold module; the structural test beside it (the shortfall names the
115
+ * INJECTION node, which a judged target never is) stands on its own if the
116
+ * wording drifts.
117
+ */
118
+ const RECONCILIATION_FAILED_DECLARED = '(unknown -- reconciliation failed)';
119
+ function lower(id) {
120
+ return id.trim().toLowerCase();
121
+ }
122
+ /**
123
+ * The park's gaps, rebuilt VERBATIM from the standing shortfall detail; null when
124
+ * they cannot be. Accepted only when the detail's node set is a BIJECTION with
125
+ * the park's -- no node missing and none extra -- AND the rebuild re-hashes to
126
+ * the park's own signature, so the routing that follows re-holds THIS park
127
+ * rather than opening a new one, and routes exactly what a fresh judgement would.
128
+ * Pure.
129
+ */
130
+ export function reconstructParkedShortfalls(park, detail) {
131
+ if (!detail || !Array.isArray(detail.shortfalls))
132
+ return null;
133
+ const parked = new Set(park.nodeIds.map(lower));
134
+ const nodesSeen = new Set();
135
+ const identities = new Set();
136
+ const gaps = [];
137
+ for (const s of detail.shortfalls) {
138
+ if (typeof s?.nodeId !== 'string' || typeof s.declared !== 'string')
139
+ return null;
140
+ const id = lower(s.nodeId);
141
+ // An EXTRA node: the standing detail holds a gap this park does not. Skipping
142
+ // it would reuse a judgement that routes STRICTLY LESS than a fresh one would
143
+ // (park [A] with detail [A,B] routed A alone, where judging routes A and B),
144
+ // and the signature check below cannot catch it -- the reconstruction would
145
+ // re-hash to the park's own signature precisely BECAUSE the extra was
146
+ // dropped. So refuse and let the reconciliation run.
147
+ if (!parked.has(id))
148
+ return null;
149
+ // Deduped on (nodeId, declared) -- the SIGNATURE's own key
150
+ // (verify/shortfall-repeat.ts canonicalSignature), not nodeId alone -- so an
151
+ // identical repeat collapses to one gap while two DIFFERING declarations for
152
+ // one node stay two and are caught by the signature comparison.
153
+ const identity = JSON.stringify([s.nodeId, s.declared]);
154
+ if (identities.has(identity))
155
+ continue;
156
+ identities.add(identity);
157
+ nodesSeen.add(id);
158
+ gaps.push({
159
+ nodeId: s.nodeId,
160
+ declaredStatement: s.declared,
161
+ achievedStatement: typeof s.achieved === 'string' ? s.achieved : '',
162
+ reason: typeof s.reason === 'string' ? s.reason : '',
163
+ ...(s.diffCitation ? { diffCitation: s.diffCitation } : {}),
164
+ });
165
+ }
166
+ // A BIJECTION, both directions: the loop above refused every node the park does
167
+ // not hold, and this refuses a park node the detail does not carry.
168
+ if (nodesSeen.size !== parked.size)
169
+ return null;
170
+ return sameShortfallSignature(shortfallSignature(gaps), park.signature) ? gaps : null;
171
+ }
172
+ /** Whether one rebuilt gap is a signed reconciliation FAILURE rather than a judgement. Pure. */
173
+ function isFailedReconciliation(gap, injectionNodeId) {
174
+ return lower(gap.nodeId) === lower(injectionNodeId)
175
+ || gap.declaredStatement === RECONCILIATION_FAILED_DECLARED;
176
+ }
177
+ /**
178
+ * Decide whether this dispatch may answer from the park instead of calling the
179
+ * model (see the module header for each refusal). Pure: every fact is supplied,
180
+ * and every unknown fact refuses.
181
+ */
182
+ export function decideParkedShortfallReuse(facts) {
183
+ const { park } = facts;
184
+ if (park === null)
185
+ return { reuse: false, refusal: 'no-park' };
186
+ if (facts.awaitingModel)
187
+ return { reuse: false, refusal: 'awaiting-model' };
188
+ if (park.commitSet === null)
189
+ return { reuse: false, refusal: 'park-commit-set-unknown' };
190
+ if (facts.commitSet === null)
191
+ return { reuse: false, refusal: 'commit-set-unknown' };
192
+ if (facts.commitSet !== park.commitSet)
193
+ return { reuse: false, refusal: 'commit-set-changed' };
194
+ // PRESENT on the park means its recorder could READ the rulings ('' = a
195
+ // succeeded read of an empty set). Absent means unknown, which never matches.
196
+ if (park.rulingsFingerprint === undefined)
197
+ return { reuse: false, refusal: 'park-rulings-unknown' };
198
+ if (facts.rulingsFingerprint === null)
199
+ return { reuse: false, refusal: 'rulings-unknown' };
200
+ if (facts.rulingsFingerprint !== park.rulingsFingerprint)
201
+ return { reuse: false, refusal: 'rulings-changed' };
202
+ const shortfalls = reconstructParkedShortfalls(park, facts.detail);
203
+ if (shortfalls === null)
204
+ return { reuse: false, refusal: 'gaps-not-reconstructable' };
205
+ if (shortfalls.some((gap) => isFailedReconciliation(gap, facts.injectionNodeId))) {
206
+ return { reuse: false, refusal: 'not-a-judgement' };
207
+ }
208
+ return { reuse: true, park, shortfalls, rulingsFingerprint: facts.rulingsFingerprint };
209
+ }
210
+ /** The current commit-set fingerprint; null (logged) when unreadable -- which refuses reuse. */
211
+ async function readCommitSet(deps, v, judgedSha) {
212
+ if (!deps.resolveDeliveryCommitSet)
213
+ return null;
214
+ try {
215
+ const ids = await deps.resolveDeliveryCommitSet(v, judgedSha);
216
+ return ids === null ? null : commitSetFingerprint(ids);
217
+ }
218
+ catch (err) {
219
+ log.warn(`[verification] parked delivery ${v.deliveryId}: commit set unreadable, re-judging:`, err.message);
220
+ return null;
221
+ }
222
+ }
223
+ /** The current rulings fingerprint; null (logged) when unreadable -- which refuses reuse. */
224
+ async function readRulingsFingerprint(deps, deliveryId) {
225
+ if (!deps.readShortfallRulings)
226
+ return null;
227
+ try {
228
+ return (await deps.readShortfallRulings(deliveryId)).fingerprint;
229
+ }
230
+ catch (err) {
231
+ log.warn(`[verification] parked delivery ${deliveryId}: rulings unreadable, re-judging:`, err.message);
232
+ return null;
233
+ }
234
+ }
235
+ /** The delivery's gate record; null (logged) when the read failed -- which refuses reuse. */
236
+ async function readGateRecord(deps, deliveryId) {
237
+ if (!deps.readDeliveryGateRecord)
238
+ return null;
239
+ try {
240
+ return await deps.readDeliveryGateRecord(deliveryId);
241
+ }
242
+ catch (err) {
243
+ log.warn(`[verification] delivery ${deliveryId}: gate_state unreadable, re-judging:`, err.message);
244
+ return null;
245
+ }
246
+ }
247
+ /**
248
+ * Read the delivery's park and decide about it; null when NO park stands, so an
249
+ * ordinary dispatch pays one gate_state read and nothing else. The single
250
+ * decision point: both the cost bound (reuse the judgement) and the re-selection
251
+ * rule (`parkHoldsOnUnchangedFacts`) ask through here, so the two cannot answer
252
+ * differently about the same park. Never throws: every read failure refuses.
253
+ */
254
+ async function decideForDelivery(v, judgedSha, deps) {
255
+ const record = await readGateRecord(deps, v.deliveryId);
256
+ const park = record === null ? null : shortfallParkRefusingRework(record);
257
+ if (park === null)
258
+ return null;
259
+ const decision = decideParkedShortfallReuse({
260
+ park,
261
+ detail: record?.gateState?.shortfallReconciliation ?? null,
262
+ awaitingModel: hasModelUnavailableHold(record?.gateState),
263
+ commitSet: await readCommitSet(deps, v, judgedSha),
264
+ rulingsFingerprint: await readRulingsFingerprint(deps, v.deliveryId),
265
+ injectionNodeId: v.injectionNodeId,
266
+ });
267
+ return { park, decision };
268
+ }
269
+ /**
270
+ * Whether a park stands on this delivery whose facts are ALL unchanged -- the
271
+ * question every re-selection path asks before dropping a run mark.
272
+ *
273
+ * TRUE means re-selecting it would re-derive exactly what the park already
274
+ * records, so the path declines. FALSE means the park is absent, its facts moved
275
+ * (a new commit, a new ruling), or SOMETHING IS UNKNOWN -- and unknown must
276
+ * re-select, never suppress: this gate may only ever remove a re-selection it can
277
+ * PROVE is pointless. Never throws.
278
+ */
279
+ export async function parkHoldsOnUnchangedFacts(v, judgedSha, deps) {
280
+ const decided = await decideForDelivery(v, judgedSha, deps);
281
+ return decided !== null && decided.decision.reuse;
282
+ }
283
+ /**
284
+ * The park this dispatch may answer from instead of calling the model, or null to
285
+ * judge. Never throws: every read failure refuses.
286
+ */
287
+ export async function resolveParkedShortfallReuse(v, judgedSha, deps) {
288
+ const decided = await decideForDelivery(v, judgedSha, deps);
289
+ if (decided === null)
290
+ return null;
291
+ const { park, decision } = decided;
292
+ if (!decision.reuse) {
293
+ log.debug(`[verification] delivery "${v.deliveryName}" (${v.deliveryId}) is parked but re-judged this dispatch ` +
294
+ `(${decision.refusal}); the reconciliation runs`);
295
+ return null;
296
+ }
297
+ log.info(`[verification] delivery "${v.deliveryName}" (${v.deliveryId}): re-holding the shortfall park recorded ` +
298
+ `${park.parkedAt} on commit set ${park.commitSet} -- unchanged commit set and rulings, so its ` +
299
+ `${decision.shortfalls.length} shortfall(s) are reused as judged and NO MODEL CALL WAS MADE ` +
300
+ `(no reconciliation this dispatch)`);
301
+ return {
302
+ restatements: [],
303
+ shortfalls: decision.shortfalls,
304
+ rulingsFingerprint: decision.rulingsFingerprint,
305
+ withheldNodeIds: [],
306
+ honored: [],
307
+ park,
308
+ };
309
+ }
310
+ //# sourceMappingURL=parked-shortfall-reuse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parked-shortfall-reuse.js","sourceRoot":"","sources":["../../src/verify/parked-shortfall-reuse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Every path that can re-select a delivery already sitting in verify. A new path
3
+ * belongs here AND at a `logReselection` call site; the enumeration test fails
4
+ * on a member with no driver.
5
+ */
6
+ export declare const RESELECTION_PATHS: readonly ["run-mark-prune", "run-mark-release", "commit-verdict-pull", "credit-rearm", "ruling-rearm", "pending-relisting", "model-unavailable-unmark", "checkout-unavailable-unmark"];
7
+ /** One of {@link RESELECTION_PATHS}. */
8
+ export type ReselectionPath = (typeof RESELECTION_PATHS)[number];
9
+ /** Test-only: forget every de-duplicated line written so far. */
10
+ export declare function __resetReselectionLogForTests(): void;
11
+ /**
12
+ * Write the one line for this re-selection.
13
+ *
14
+ * `dedupeKey` is for a line that fires REPEATEDLY for the same (delivery,
15
+ * reason) WITHOUT re-selecting anything -- a DECLINED re-selection, e.g. a parked
16
+ * row the edge re-lists every tick. Pass it and the line is written once per
17
+ * (path, delivery, key). A line for a re-selection that happens -- a dispatch
18
+ * follows -- is never de-duplicated: the repetition IS the information (the
19
+ * incident's ~30 re-dispatches should have produced ~30 lines, not one).
20
+ */
21
+ export declare function logReselection(path: ReselectionPath, deliveryId: string, detail: string, dedupeKey?: string): void;
22
+ //# sourceMappingURL=reselection-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reselection-log.d.ts","sourceRoot":"","sources":["../../src/verify/reselection-log.ts"],"names":[],"mappings":"AA0CA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,wLAiBpB,CAAC;AAEX,wCAAwC;AACxC,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAKjE,iEAAiE;AACjE,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAON"}
@@ -0,0 +1,87 @@
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
+ // packages/daemon/src/verify/reselection-log.test.ts,
4
+ // packages/daemon/src/verify/verification-default-on.test.ts
5
+ // PINNED-BY-END
6
+ /**
7
+ * ONE line per re-selection of a delivery sitting in verify, naming the PATH
8
+ * that re-selected it.
9
+ *
10
+ * Why this module exists. On 2026-09-24 delivery 8ae80225 sat parked in verify
11
+ * at an unchanged focus HEAD (88cd9d77) and was re-dispatched every ~60s for
12
+ * ~30 ticks. Every tick logged the dispatch ("takes the 'passed' verdict
13
+ * recorded for focus HEAD 88cd9d77") and, ~28s later, its outcome -- and NOTHING
14
+ * said why the delivery had been selected again. The five paths that re-arm a
15
+ * delivery either log per FOCUS (credit-rearm), log nothing at all
16
+ * (pruneGuardsOutsideVerify -- which turned out to be the one at fault), or log
17
+ * in their own private shape. So the re-dispatch could not be attributed from
18
+ * ~/.telora/daemon.log: the incident had to be reasoned out of the source.
19
+ *
20
+ * The rule: a delivery whose guards are dropped is a delivery that WILL be
21
+ * selected again, and exactly one line says which path dropped them. The path
22
+ * names are an exported const union, so the shape cannot drift and a path added
23
+ * later without a log line is a visible hole (verify/reselection-log.test.ts
24
+ * enumerates the union).
25
+ *
26
+ * WHO LOGS. Each path logs at its OWN call site, because only there is the
27
+ * reason known. The guard mutators in verify/default-on-guards.ts are the
28
+ * fallback, not a second voice: `releaseDefaultOnMark(id)` called with no path
29
+ * logs 'run-mark-release', and called WITH a path stays silent so the caller's
30
+ * own richer line stands alone.
31
+ *
32
+ * A line is only written when something was actually dropped -- a release that
33
+ * found no mark suppressed nothing and re-selected nothing.
34
+ *
35
+ * @module verify/reselection-log
36
+ */
37
+ import { createLogger } from '../shell/log.js';
38
+ const log = createLogger({ module: 'verification' });
39
+ /**
40
+ * Every path that can re-select a delivery already sitting in verify. A new path
41
+ * belongs here AND at a `logReselection` call site; the enumeration test fails
42
+ * on a member with no driver.
43
+ */
44
+ export const RESELECTION_PATHS = [
45
+ /** The default-on scan no longer observed the delivery in verify (default-on-guards.ts pruneGuardsOutsideVerify). */
46
+ 'run-mark-prune',
47
+ /** The run mark was dropped by a caller that named no path of its own (default-on-guards.ts releaseDefaultOnMark). */
48
+ 'run-mark-release',
49
+ /** A route held for a verdict on the current HEAD pulled the run (commit-verdict-pull.ts). */
50
+ 'commit-verdict-pull',
51
+ /** The focus's commit-credit set changed, so the same commit is judged again (credit-rearm.ts). */
52
+ 'credit-rearm',
53
+ /** An operator ruling released a shortfall park (shortfall-rulings.ts rearmRuledShortfallParks). */
54
+ 'ruling-rearm',
55
+ /** The edge re-listed an explicit-method row in the pending queue (verification-engine.ts). */
56
+ 'pending-relisting',
57
+ /** The reconciliation's model could not be reached: no verdict to guard (default-on-guards.ts noteDefaultOnResult). */
58
+ 'model-unavailable-unmark',
59
+ /** No checkout could be made, or the verdict was discarded mid-run (default-on-guards.ts noteDefaultOnResult). */
60
+ 'checkout-unavailable-unmark',
61
+ ];
62
+ /** `${path}@${deliveryId}@${dedupeKey}` triples already written. */
63
+ const written = new Set();
64
+ /** Test-only: forget every de-duplicated line written so far. */
65
+ export function __resetReselectionLogForTests() {
66
+ written.clear();
67
+ }
68
+ /**
69
+ * Write the one line for this re-selection.
70
+ *
71
+ * `dedupeKey` is for a line that fires REPEATEDLY for the same (delivery,
72
+ * reason) WITHOUT re-selecting anything -- a DECLINED re-selection, e.g. a parked
73
+ * row the edge re-lists every tick. Pass it and the line is written once per
74
+ * (path, delivery, key). A line for a re-selection that happens -- a dispatch
75
+ * follows -- is never de-duplicated: the repetition IS the information (the
76
+ * incident's ~30 re-dispatches should have produced ~30 lines, not one).
77
+ */
78
+ export function logReselection(path, deliveryId, detail, dedupeKey) {
79
+ if (dedupeKey !== undefined) {
80
+ const key = `${path}@${deliveryId}@${dedupeKey}`;
81
+ if (written.has(key))
82
+ return;
83
+ written.add(key);
84
+ }
85
+ log.info(`[verification] re-selection (${path}): delivery ${deliveryId} -- ${detail}`);
86
+ }
87
+ //# sourceMappingURL=reselection-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reselection-log.js","sourceRoot":"","sources":["../../src/verify/reselection-log.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wEAAwE;AACxE,wDAAwD;AACxD,+DAA+D;AAC/D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,qHAAqH;IACrH,gBAAgB;IAChB,sHAAsH;IACtH,kBAAkB;IAClB,8FAA8F;IAC9F,qBAAqB;IACrB,mGAAmG;IACnG,cAAc;IACd,oGAAoG;IACpG,cAAc;IACd,+FAA+F;IAC/F,mBAAmB;IACnB,uHAAuH;IACvH,0BAA0B;IAC1B,kHAAkH;IAClH,6BAA6B;CACrB,CAAC;AAKX,oEAAoE;AACpE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;AAElC,iEAAiE;AACjE,MAAM,UAAU,6BAA6B;IAC3C,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAqB,EACrB,UAAkB,EAClB,MAAc,EACd,SAAkB;IAElB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QACjD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,gCAAgC,IAAI,eAAe,UAAU,OAAO,MAAM,EAAE,CAAC,CAAC;AACzF,CAAC"}
@@ -86,7 +86,14 @@ export interface ShortfallParkClassification {
86
86
  * rules follow:
87
87
  * - the park records it (null keeps the standing park's), so a park re-held by
88
88
  * the judgement a ruling re-armed is no longer released by that ruling -- the
89
- * re-judgement happens once per new ruling, not on every tick;
89
+ * re-judgement happens once per new ruling, not on every tick. A SUCCEEDED
90
+ * read of an EMPTY ruling set records '' -- "no ruling was in force", a fact
91
+ * that was KNOWN -- and the field is ABSENT only where the read FAILED (or on
92
+ * a record written before this rule). The two used to be one absence, so a
93
+ * park recorded while the rulings were unreadable could not be told from one
94
+ * recorded under a known-empty set; a reader that must not answer from an
95
+ * unknown history (verify/parked-shortfall-reuse.ts) requires the field to be
96
+ * PRESENT, which only this recorder can make meaningful;
90
97
  * - a NEW ruling that disposed of SOME of the parked nodes on an unchanged
91
98
  * commit set narrows the park to the rest instead of ending it: those nodes
92
99
  * already repeated unchanged, so sending them back to coding would restart the
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-park.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-park.ts"],"names":[],"mappings":"AAuDA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAE3B,MAAM,mCAAmC,CAAC;AAO3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAInE;AAED,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAE1E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,GAAG,IAAI,CAEpI;AAED,mEAAmE;AACnE,MAAM,WAAW,yBAAyB;IACxC,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAIxG;AAED,0DAA0D;AAC1D,MAAM,WAAW,2BAA2B;IAC1C,mGAAmG;IACnG,MAAM,EAAE,qBAAqB,CAAC;IAC9B,kFAAkF;IAClF,MAAM,EAAE,OAAO,CAAC;IAChB,sGAAsG;IACtG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;CAC5B;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACpD,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,GAAE,MAAoC,EAC3C,GAAG,GAAE,MAAiC,EACtC,kBAAkB,GAAE,MAAM,GAAG,IAAW,GACvC,2BAA2B,CAiC7B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,iBAAiB,CAO7G"}
1
+ {"version":3,"file":"shortfall-park.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-park.ts"],"names":[],"mappings":"AA2DA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAE3B,MAAM,mCAAmC,CAAC;AAO3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAInE;AAED,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAE1E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,GAAG,IAAI,CAEpI;AAED,mEAAmE;AACnE,MAAM,WAAW,yBAAyB;IACxC,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAIxG;AAED,0DAA0D;AAC1D,MAAM,WAAW,2BAA2B;IAC1C,mGAAmG;IACnG,MAAM,EAAE,qBAAqB,CAAC;IAC9B,kFAAkF;IAClF,MAAM,EAAE,OAAO,CAAC;IAChB,sGAAsG;IACtG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;CAC5B;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACpD,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,GAAE,MAAoC,EAC3C,GAAG,GAAE,MAAiC,EACtC,kBAAkB,GAAE,MAAM,GAAG,IAAW,GACvC,2BAA2B,CAoC7B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,iBAAiB,CAO7G"}
@@ -9,10 +9,14 @@
9
9
  // packages/daemon/src/integration/shortfall-ruling-release.test.ts,
10
10
  // packages/daemon/src/prompt/prompt-listing.test.ts,
11
11
  // packages/daemon/src/spawn/review-hold-park-shortfall.test.ts,
12
+ // packages/daemon/src/verify/commit-verdict-pull.test.ts,
12
13
  // packages/daemon/src/verify/delivery-commit-set.test.ts,
14
+ // packages/daemon/src/verify/explicit-row-selection.test.ts,
15
+ // packages/daemon/src/verify/parked-shortfall-reuse.test.ts,
13
16
  // packages/daemon/src/verify/shortfall-park-escalation.test.ts,
14
17
  // packages/daemon/src/verify/shortfall-park.test.ts, packages/daemon/src/verify/shortfall-routing.test.ts,
15
- // packages/daemon/src/verify/shortfall-rulings.test.ts
18
+ // packages/daemon/src/verify/shortfall-rulings.test.ts,
19
+ // packages/daemon/src/verify/verification-default-on.test.ts
16
20
  // PINNED-BY-END
17
21
  /**
18
22
  * The SHORTFALL PARK: a delivery whose identical verify shortfall re-holds on an
@@ -145,7 +149,14 @@ function narrowedByRuling(standing, shortfalls, rulingsFingerprint) {
145
149
  * rules follow:
146
150
  * - the park records it (null keeps the standing park's), so a park re-held by
147
151
  * the judgement a ruling re-armed is no longer released by that ruling -- the
148
- * re-judgement happens once per new ruling, not on every tick;
152
+ * re-judgement happens once per new ruling, not on every tick. A SUCCEEDED
153
+ * read of an EMPTY ruling set records '' -- "no ruling was in force", a fact
154
+ * that was KNOWN -- and the field is ABSENT only where the read FAILED (or on
155
+ * a record written before this rule). The two used to be one absence, so a
156
+ * park recorded while the rulings were unreadable could not be told from one
157
+ * recorded under a known-empty set; a reader that must not answer from an
158
+ * unknown history (verify/parked-shortfall-reuse.ts) requires the field to be
159
+ * PRESENT, which only this recorder can make meaningful;
149
160
  * - a NEW ruling that disposed of SOME of the parked nodes on an unchanged
150
161
  * commit set narrows the park to the rest instead of ending it: those nodes
151
162
  * already repeated unchanged, so sending them back to coding would restart the
@@ -178,6 +189,9 @@ export function classifyShortfallPark(priorGateState, shortfalls, commitSet, lim
178
189
  const repeat = { signature, count, ...(knownSet !== null ? { commitSet: knownSet } : {}) };
179
190
  if (count < limit)
180
191
  return { repeat, parked: false, park: null };
192
+ // PRESENT means KNOWN: '' is a succeeded read of an empty ruling set, and the
193
+ // field is omitted only when this judgement could not read the rulings and no
194
+ // standing park carries a known one.
181
195
  const applied = rulingsFingerprint ?? (holding ? standing.rulingsFingerprint : undefined);
182
196
  const park = {
183
197
  // A re-hold of the same shortfall keeps the standing park's signature text, so
@@ -187,7 +201,7 @@ export function classifyShortfallPark(priorGateState, shortfalls, commitSet, lim
187
201
  nodeIds: sortedNodeIds(shortfalls),
188
202
  count,
189
203
  parkedAt: holding ? standing.parkedAt : now,
190
- ...(applied ? { rulingsFingerprint: applied } : {}),
204
+ ...(applied !== undefined ? { rulingsFingerprint: applied } : {}),
191
205
  };
192
206
  return { repeat, parked: true, park };
193
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-park.js","sourceRoot":"","sources":["../../src/verify/shortfall-park.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shortfall-park.js","sourceRoot":"","sources":["../../src/verify/shortfall-park.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-repeat.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,kIAAkI;IAClI,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,mFAAmF;AACnF,eAAO,MAAM,sCAAsC,IAA8B,CAAC;AAmBlF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAEjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAerE;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAE5G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACpD,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,GAAE,MAAoC,GAC9C;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAKnD"}
1
+ {"version":3,"file":"shortfall-repeat.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,kIAAkI;IAClI,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,mFAAmF;AACnF,eAAO,MAAM,sCAAsC,IAA8B,CAAC;AAmBlF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAEjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAerE;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAE5G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACpD,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,GAAE,MAAoC,GAC9C;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAKnD"}
@@ -1,7 +1,12 @@
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/integration/verification-history-round-trip.test.ts,
3
- // packages/daemon/src/verify/misattributed-hold.test.ts, packages/daemon/src/verify/shortfall-park.test.ts,
4
- // packages/daemon/src/verify/shortfall-repeat.test.ts, packages/daemon/src/verify/shortfall-routing.test.ts
3
+ // packages/daemon/src/verify/commit-verdict-pull.test.ts,
4
+ // packages/daemon/src/verify/explicit-row-selection.test.ts,
5
+ // packages/daemon/src/verify/misattributed-hold.test.ts,
6
+ // packages/daemon/src/verify/parked-shortfall-reuse.test.ts,
7
+ // packages/daemon/src/verify/shortfall-park.test.ts, packages/daemon/src/verify/shortfall-repeat.test.ts,
8
+ // packages/daemon/src/verify/shortfall-routing.test.ts,
9
+ // packages/daemon/src/verify/verification-default-on.test.ts
5
10
  // PINNED-BY-END
6
11
  /**
7
12
  * Shortfall REPETITION discriminator for the verify gate.
@@ -1 +1 @@
1
- {"version":3,"file":"shortfall-repeat.js","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shortfall-repeat.js","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,sFAAsF;AACtF,4DAA4D;AAC5D,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;AAC/D,4GAA4G;AAC5G,0DAA0D;AAC1D,+DAA+D;AAC/D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,uBAAuB,EAA0B,MAAM,mCAAmC,CAAC;AAapG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,mFAAmF;AACnF,MAAM,CAAC,MAAM,sCAAsC,GAAG,2BAA2B,CAAC;AAElF,SAAS,IAAI,CAAC,CAAS,EAAE,CAAS;IAChC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAQD,SAAS,kBAAkB,CAAC,UAAwC;IAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3H,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1G,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAsC;IACvE,OAAO,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1G,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAAiB;IAC3D,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,MAAM,UAAU,GAAwB,EAAE,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAmB,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,KAAwD,CAAC;QACnE,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC3F,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,sBAAsB,CAAC,CAAS,EAAE,CAAS;IACzD,OAAO,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC,CAAC,CAAC,KAAK,2BAA2B,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,cAAoD;IAClF,OAAO,uBAAuB,CAAC,cAAc,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAAoD,EACpD,UAAsC,EACtC,YAAoB,2BAA2B;IAE/C,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC;AAC3E,CAAC"}