instar 1.3.499 → 1.3.501

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 (98) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +407 -6
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +10 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  8. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  9. package/dist/core/PostUpdateMigrator.js +69 -0
  10. package/dist/core/PostUpdateMigrator.js.map +1 -1
  11. package/dist/core/ReapGuard.d.ts +24 -0
  12. package/dist/core/ReapGuard.d.ts.map +1 -1
  13. package/dist/core/ReapGuard.js +62 -0
  14. package/dist/core/ReapGuard.js.map +1 -1
  15. package/dist/core/SessionManager.d.ts +32 -0
  16. package/dist/core/SessionManager.d.ts.map +1 -1
  17. package/dist/core/SessionManager.js +74 -2
  18. package/dist/core/SessionManager.js.map +1 -1
  19. package/dist/core/WorkEvidence.d.ts +45 -0
  20. package/dist/core/WorkEvidence.d.ts.map +1 -0
  21. package/dist/core/WorkEvidence.js +88 -0
  22. package/dist/core/WorkEvidence.js.map +1 -0
  23. package/dist/core/componentCategories.d.ts.map +1 -1
  24. package/dist/core/componentCategories.js +3 -0
  25. package/dist/core/componentCategories.js.map +1 -1
  26. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  27. package/dist/core/devGatedFeatures.js +5 -0
  28. package/dist/core/devGatedFeatures.js.map +1 -1
  29. package/dist/core/types.d.ts +50 -0
  30. package/dist/core/types.d.ts.map +1 -1
  31. package/dist/core/types.js.map +1 -1
  32. package/dist/messaging/NotificationBatcher.d.ts +12 -0
  33. package/dist/messaging/NotificationBatcher.d.ts.map +1 -1
  34. package/dist/messaging/NotificationBatcher.js +36 -0
  35. package/dist/messaging/NotificationBatcher.js.map +1 -1
  36. package/dist/messaging/pending-relay-store.d.ts +67 -8
  37. package/dist/messaging/pending-relay-store.d.ts.map +1 -1
  38. package/dist/messaging/pending-relay-store.js +151 -14
  39. package/dist/messaging/pending-relay-store.js.map +1 -1
  40. package/dist/messaging/reap-notice-delivery-id.d.ts +37 -0
  41. package/dist/messaging/reap-notice-delivery-id.d.ts.map +1 -0
  42. package/dist/messaging/reap-notice-delivery-id.js +52 -0
  43. package/dist/messaging/reap-notice-delivery-id.js.map +1 -0
  44. package/dist/monitoring/QuotaManager.d.ts +6 -0
  45. package/dist/monitoring/QuotaManager.d.ts.map +1 -1
  46. package/dist/monitoring/QuotaManager.js +11 -0
  47. package/dist/monitoring/QuotaManager.js.map +1 -1
  48. package/dist/monitoring/ReapLog.d.ts +39 -4
  49. package/dist/monitoring/ReapLog.d.ts.map +1 -1
  50. package/dist/monitoring/ReapLog.js +54 -4
  51. package/dist/monitoring/ReapLog.js.map +1 -1
  52. package/dist/monitoring/ReapNoticeDrain.d.ts +113 -0
  53. package/dist/monitoring/ReapNoticeDrain.d.ts.map +1 -0
  54. package/dist/monitoring/ReapNoticeDrain.js +231 -0
  55. package/dist/monitoring/ReapNoticeDrain.js.map +1 -0
  56. package/dist/monitoring/ReapNotifier.d.ts +89 -18
  57. package/dist/monitoring/ReapNotifier.d.ts.map +1 -1
  58. package/dist/monitoring/ReapNotifier.js +329 -22
  59. package/dist/monitoring/ReapNotifier.js.map +1 -1
  60. package/dist/monitoring/ResumeQueue.d.ts +223 -0
  61. package/dist/monitoring/ResumeQueue.d.ts.map +1 -0
  62. package/dist/monitoring/ResumeQueue.js +600 -0
  63. package/dist/monitoring/ResumeQueue.js.map +1 -0
  64. package/dist/monitoring/ResumeQueueDrainer.d.ts +151 -0
  65. package/dist/monitoring/ResumeQueueDrainer.d.ts.map +1 -0
  66. package/dist/monitoring/ResumeQueueDrainer.js +420 -0
  67. package/dist/monitoring/ResumeQueueDrainer.js.map +1 -0
  68. package/dist/monitoring/SessionMigrator.d.ts +10 -0
  69. package/dist/monitoring/SessionMigrator.d.ts.map +1 -1
  70. package/dist/monitoring/SessionMigrator.js +43 -1
  71. package/dist/monitoring/SessionMigrator.js.map +1 -1
  72. package/dist/monitoring/SessionReaper.d.ts +1 -0
  73. package/dist/monitoring/SessionReaper.d.ts.map +1 -1
  74. package/dist/monitoring/SessionReaper.js +5 -0
  75. package/dist/monitoring/SessionReaper.js.map +1 -1
  76. package/dist/monitoring/delivery-failure-sentinel.d.ts.map +1 -1
  77. package/dist/monitoring/delivery-failure-sentinel.js +7 -3
  78. package/dist/monitoring/delivery-failure-sentinel.js.map +1 -1
  79. package/dist/scaffold/templates.d.ts.map +1 -1
  80. package/dist/scaffold/templates.js +4 -3
  81. package/dist/scaffold/templates.js.map +1 -1
  82. package/dist/server/AgentServer.d.ts +5 -0
  83. package/dist/server/AgentServer.d.ts.map +1 -1
  84. package/dist/server/AgentServer.js +3 -0
  85. package/dist/server/AgentServer.js.map +1 -1
  86. package/dist/server/routes.d.ts +8 -0
  87. package/dist/server/routes.d.ts.map +1 -1
  88. package/dist/server/routes.js +94 -0
  89. package/dist/server/routes.js.map +1 -1
  90. package/package.json +1 -1
  91. package/skills/spec-converge/SKILL.md +23 -0
  92. package/src/data/builtin-manifest.json +65 -65
  93. package/src/data/state-coherence-registry.json +14 -1
  94. package/src/scaffold/templates.ts +4 -3
  95. package/upgrades/1.3.500.md +43 -0
  96. package/upgrades/1.3.501.md +51 -0
  97. package/upgrades/side-effects/conformance-gate-autoinvoke.md +58 -0
  98. package/upgrades/side-effects/reap-notify-resume-queue.md +89 -0
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationBatcher.d.ts","sourceRoot":"","sources":["../../src/messaging/NotificationBatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAgB7F,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,eAAe,CAAkC;gBAE7C,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAI3C,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAI3C,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAON,OAAO,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CzD,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAO3B,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAqCxD,YAAY,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAOnD,QAAQ,IAAI,YAAY;IAWxB;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAYzC,SAAS,IAAI,OAAO;IAIpB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM;IA4BrE,YAAY,IAAI,OAAO;IAkBvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;YAiBV,UAAU;YAaV,UAAU;CAiBzB"}
1
+ {"version":3,"file":"NotificationBatcher.d.ts","sourceRoot":"","sources":["../../src/messaging/NotificationBatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAgB7F,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,eAAe,CAAkC;gBAE7C,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAI3C,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAI3C,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAON,OAAO,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CzD,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAO3B,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAqCxD,YAAY,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAOnD,QAAQ,IAAI,YAAY;IAWxB;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAYzC,SAAS,IAAI,OAAO;IAIpB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM;IA4BrE;;;;;OAKG;IACH,eAAe,CAAC,KAAK,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI;IAmB1D;;;OAGG;IACH,oBAAoB,CAAC,KAAK,GAAE,MAAmB,GAAG,MAAM;IAOxD,YAAY,IAAI,OAAO;IAkBvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;YAiBV,UAAU;YAaV,UAAU;CAiBzB"}
@@ -187,6 +187,42 @@ export class NotificationBatcher {
187
187
  }
188
188
  return lines.join('\n').trimEnd();
189
189
  }
190
+ /**
191
+ * Epoch ms when the CURRENT quiet-hours window ends, or null when quiet
192
+ * hours are disabled / not currently active. The single quiet-hours
193
+ * definition shared with the reap-notice release-hold computation
194
+ * (reap-notify spec R1.5) — one clock, not two.
195
+ */
196
+ quietHoursEndAt(nowMs = Date.now()) {
197
+ if (!this.config.quietHours?.enabled)
198
+ return null;
199
+ const now = new Date(nowMs);
200
+ const currentMinutes = now.getHours() * 60 + now.getMinutes();
201
+ const [startH, startM] = this.config.quietHours.start.split(':').map(Number);
202
+ const [endH, endM] = this.config.quietHours.end.split(':').map(Number);
203
+ const startMinutes = startH * 60 + startM;
204
+ const endMinutes = endH * 60 + endM;
205
+ const inWindow = startMinutes > endMinutes
206
+ ? currentMinutes >= startMinutes || currentMinutes < endMinutes
207
+ : currentMinutes >= startMinutes && currentMinutes < endMinutes;
208
+ if (!inWindow)
209
+ return null;
210
+ const end = new Date(nowMs);
211
+ end.setHours(endH, endM, 0, 0);
212
+ if (end.getTime() <= nowMs)
213
+ end.setDate(end.getDate() + 1);
214
+ return end.getTime();
215
+ }
216
+ /**
217
+ * Epoch ms of the next SUMMARY-window flush (≤ one interval out). Used as
218
+ * the SUMMARY-tier release hold for durable reap notices (R1.5).
219
+ */
220
+ nextSummaryReleaseAt(nowMs = Date.now()) {
221
+ const intervalMs = this.config.summaryIntervalMinutes * 60_000;
222
+ const last = this.lastSummaryFlush?.getTime() ?? nowMs;
223
+ const next = last + intervalMs;
224
+ return next > nowMs ? next : nowMs + intervalMs;
225
+ }
190
226
  isQuietHours() {
191
227
  if (!this.config.quietHours?.enabled)
192
228
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationBatcher.js","sourceRoot":"","sources":["../../src/messaging/NotificationBatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotificationBatcher.js","sourceRoot":"","sources":["../../src/messaging/NotificationBatcher.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,7 @@
26
26
  * not opinion-ate on what counts as a legal state transition; it just
27
27
  * persists what its caller writes.
28
28
  */
29
+ import type { Database as BetterSqliteDatabase } from 'better-sqlite3';
29
30
  export type DeliveryState = 'queued' | 'claimed' | 'delivered-recovered' | 'delivered-tone-gated' | 'delivered-ambiguous' | 'escalated' | 'dead-letter';
30
31
  export interface PendingRelayRow {
31
32
  delivery_id: string;
@@ -56,12 +57,19 @@ export interface EnqueueInput {
56
57
  text_hash: string;
57
58
  text: Buffer | string;
58
59
  format?: string | null;
59
- http_code: number;
60
+ http_code?: number | null;
60
61
  error_body?: string | null;
61
- attempted_port: number;
62
+ attempted_port?: number | null;
62
63
  attempted_at?: string;
63
64
  truncated?: boolean;
64
65
  message_metadata?: string | null;
66
+ /**
67
+ * Release hold (reap-notify spec R1.3): a row enqueued with a future
68
+ * `next_attempt_at` is not claimable until that instant. The hold rides
69
+ * the EXISTING column — the claim queries already honor it, so a
70
+ * rolled-back binary keeps honoring holds. No schema change.
71
+ */
72
+ next_attempt_at?: string | null;
65
73
  }
66
74
  /**
67
75
  * Resolve the SQLite path. `stateDir` is the agent's `.instar/` directory.
@@ -119,31 +127,82 @@ export declare class PendingRelayStore {
119
127
  * or before `nowIso`. Sorted by `attempted_at` ascending so the
120
128
  * sentinel can drain oldest-first within per-topic rate caps.
121
129
  *
130
+ * Origin scoping (reap-notify spec R1.3): rows whose delivery_id carries
131
+ * the `reap-notify:` prefix belong to ReapNoticeDrain and are EXCLUDED
132
+ * here — the single-owner contract lives in the queries, not in drain
133
+ * etiquette. The complement is `selectClaimableReapNotices`. Both filters
134
+ * are index-compatible range predicates on the PK.
135
+ *
122
136
  * The query is bounded at `limit` to prevent a runaway tick scan.
123
137
  * The sentinel handles its own batching above this layer.
124
138
  */
125
139
  selectClaimable(nowIso: string, limit?: number): PendingRelayRow[];
140
+ /**
141
+ * ReapNoticeDrain selector (reap-notify spec R1.3) — the complement of
142
+ * `selectClaimable`: due rows INSIDE the `reap-notify:` PK range only.
143
+ * Range predicate (`>= lower AND < upper`) so SQLite serves it from the
144
+ * PK index — the 30s always-on drain must not be a latent table scan.
145
+ * Idle cost on an empty store is one indexed probe.
146
+ */
147
+ selectClaimableReapNotices(nowIso: string, limit?: number): PendingRelayRow[];
148
+ /**
149
+ * Compare-and-swap claim (reap-notify spec R1.3): atomically move a row
150
+ * to `claimed`/`claimed_by` ONLY if it still looks exactly like the row
151
+ * the caller selected (same state + same claimed_by). Two drains racing
152
+ * the same row can never both succeed — the loser's UPDATE matches zero
153
+ * rows. Returns true when this caller won the claim.
154
+ */
155
+ claimCas(deliveryId: string, newClaimedBy: string, expected: {
156
+ state: DeliveryState;
157
+ claimed_by: string | null;
158
+ }): boolean;
126
159
  /**
127
160
  * List the rows a restore-purge at `cutoffIso` WOULD delete — so the
128
161
  * caller can make the loss traceable (per-row log + degradation report)
129
162
  * before purging. A restore-purge deletes queued-undelivered outbound
130
163
  * messages; until 2026-06-05 it was the delivery stack's only silent
131
164
  * deletion path.
165
+ *
166
+ * Predicate matches `purgeStaleClaimable` exactly (the loud-loss logging
167
+ * must cover exactly what the purge deletes). `farFutureClamp` marks rows
168
+ * purged by the 7-day corruption clamp rather than ordinary staleness.
132
169
  */
133
- listStaleClaimable(cutoffIso: string): Array<{
170
+ listStaleClaimable(cutoffIso: string, nowIso?: string): Array<{
134
171
  delivery_id: string;
135
172
  topic_id: number;
136
173
  attempted_at: string;
137
174
  text: string;
175
+ farFutureClamp: boolean;
138
176
  }>;
139
177
  /**
140
- * Layer 3 restore-purge — drops queued/claimed rows whose
141
- * `attempted_at` is older than `cutoffIso`. Called once at sentinel
142
- * startup (spec §3h). Returns the number of rows deleted so the
143
- * caller can emit a one-line restore log.
178
+ * Layer 3 restore-purge — drops queued/claimed rows that are genuinely
179
+ * stale. Called once at sentinel startup (DFS spec §3h, semantics updated
180
+ * by reap-notify spec R1.6).
181
+ *
182
+ * Staleness cutoff is `max(attempted_at, next_attempt_at)`: a row HELD
183
+ * for future release (its `next_attempt_at` is still ahead of the cutoff)
184
+ * is NOT stale — purging it was the mechanism behind the documented
185
+ * 2026-06-05 silent-deletion incident (a quiet-hours-held notice crossing
186
+ * a routine restart was eaten at boot). In SQL: a row is purged only when
187
+ * `attempted_at < cutoff` AND its `next_attempt_at` is null, also past,
188
+ * or beyond the 7-day corruption clamp (`farFutureClampIso`) — no
189
+ * legitimate writer holds that long; without the clamp a malformed row
190
+ * would live forever.
191
+ *
192
+ * Returns the number of rows deleted so the caller can emit a one-line
193
+ * restore log.
194
+ */
195
+ purgeStaleClaimable(cutoffIso: string, nowIso?: string): number;
196
+ /**
197
+ * Bounded cleanup for the reap-notify lane (P19 — the always-on drain must
198
+ * not grow the store unboundedly when DFS's retention pass is off): deletes
199
+ * TERMINAL-state rows inside the reap-notify PK range older than `beforeIso`.
200
+ * Queued/claimed rows are never touched.
144
201
  */
145
- purgeStaleClaimable(cutoffIso: string): number;
202
+ purgeTerminalReapNotices(beforeIso: string): number;
146
203
  pathOnDisk(): string;
204
+ /** Direct DB handle for contract tests only. */
205
+ rawDb(): BetterSqliteDatabase;
147
206
  close(): void;
148
207
  }
149
208
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pending-relay-store.d.ts","sourceRoot":"","sources":["../../src/messaging/pending-relay-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending-relay-store.d.ts","sourceRoot":"","sources":["../../src/messaging/pending-relay-store.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,14 @@ import fs from 'node:fs';
32
32
  import path from 'node:path';
33
33
  import { execFileSync } from 'node:child_process';
34
34
  import { DegradationReporter } from '../monitoring/DegradationReporter.js';
35
+ import { REAP_NOTIFY_DELIVERY_PREFIX, REAP_NOTIFY_DELIVERY_PREFIX_UPPER, } from './reap-notice-delivery-id.js';
36
+ /**
37
+ * Anomaly clamp for the restore-purge hold exemption (reap-notify spec R1.6):
38
+ * a `next_attempt_at` more than this far in the future is treated as corrupt
39
+ * at restore-purge time (purged + logged) — no legitimate writer holds that
40
+ * long, and without the clamp a malformed row would live forever.
41
+ */
42
+ const FAR_FUTURE_HOLD_CLAMP_MS = 7 * 24 * 60 * 60 * 1000;
35
43
  // ── Schema ────────────────────────────────────────────────────────────
36
44
  const SCHEMA = [
37
45
  `CREATE TABLE IF NOT EXISTS entries (
@@ -164,7 +172,7 @@ export class PendingRelayStore {
164
172
  ) VALUES (
165
173
  @delivery_id, @topic_id, @text_hash, @text, @format,
166
174
  @http_code, @error_body, @attempted_port,
167
- @attempted_at, 1, NULL,
175
+ @attempted_at, 1, @next_attempt_at,
168
176
  'queued', NULL, @status_history, @truncated, @message_metadata
169
177
  )`);
170
178
  const result = stmt.run({
@@ -173,10 +181,11 @@ export class PendingRelayStore {
173
181
  text_hash: input.text_hash,
174
182
  text,
175
183
  format: input.format ?? null,
176
- http_code: input.http_code,
184
+ http_code: input.http_code ?? null,
177
185
  error_body: input.error_body ?? null,
178
- attempted_port: input.attempted_port,
186
+ attempted_port: input.attempted_port ?? null,
179
187
  attempted_at: attemptedAt,
188
+ next_attempt_at: input.next_attempt_at ?? null,
180
189
  status_history: initialHistory,
181
190
  truncated: input.truncated ? 1 : 0,
182
191
  message_metadata: input.message_metadata ?? null,
@@ -255,6 +264,12 @@ export class PendingRelayStore {
255
264
  * or before `nowIso`. Sorted by `attempted_at` ascending so the
256
265
  * sentinel can drain oldest-first within per-topic rate caps.
257
266
  *
267
+ * Origin scoping (reap-notify spec R1.3): rows whose delivery_id carries
268
+ * the `reap-notify:` prefix belong to ReapNoticeDrain and are EXCLUDED
269
+ * here — the single-owner contract lives in the queries, not in drain
270
+ * etiquette. The complement is `selectClaimableReapNotices`. Both filters
271
+ * are index-compatible range predicates on the PK.
272
+ *
258
273
  * The query is bounded at `limit` to prevent a runaway tick scan.
259
274
  * The sentinel handles its own batching above this layer.
260
275
  */
@@ -262,9 +277,82 @@ export class PendingRelayStore {
262
277
  const stmt = this.db.prepare(`SELECT * FROM entries
263
278
  WHERE state IN ('queued', 'claimed')
264
279
  AND (next_attempt_at IS NULL OR next_attempt_at <= @now)
280
+ AND NOT (delivery_id >= @prefixLower AND delivery_id < @prefixUpper)
265
281
  ORDER BY attempted_at ASC
266
282
  LIMIT @limit`);
267
- return stmt.all({ now: nowIso, limit });
283
+ return stmt.all({
284
+ now: nowIso,
285
+ limit,
286
+ prefixLower: REAP_NOTIFY_DELIVERY_PREFIX,
287
+ prefixUpper: REAP_NOTIFY_DELIVERY_PREFIX_UPPER,
288
+ });
289
+ }
290
+ /**
291
+ * ReapNoticeDrain selector (reap-notify spec R1.3) — the complement of
292
+ * `selectClaimable`: due rows INSIDE the `reap-notify:` PK range only.
293
+ * Range predicate (`>= lower AND < upper`) so SQLite serves it from the
294
+ * PK index — the 30s always-on drain must not be a latent table scan.
295
+ * Idle cost on an empty store is one indexed probe.
296
+ */
297
+ selectClaimableReapNotices(nowIso, limit = 100) {
298
+ const stmt = this.db.prepare(`SELECT * FROM entries
299
+ WHERE delivery_id >= @prefixLower AND delivery_id < @prefixUpper
300
+ AND state IN ('queued', 'claimed')
301
+ AND (next_attempt_at IS NULL OR next_attempt_at <= @now)
302
+ ORDER BY attempted_at ASC
303
+ LIMIT @limit`);
304
+ return stmt.all({
305
+ now: nowIso,
306
+ limit,
307
+ prefixLower: REAP_NOTIFY_DELIVERY_PREFIX,
308
+ prefixUpper: REAP_NOTIFY_DELIVERY_PREFIX_UPPER,
309
+ });
310
+ }
311
+ /**
312
+ * Compare-and-swap claim (reap-notify spec R1.3): atomically move a row
313
+ * to `claimed`/`claimed_by` ONLY if it still looks exactly like the row
314
+ * the caller selected (same state + same claimed_by). Two drains racing
315
+ * the same row can never both succeed — the loser's UPDATE matches zero
316
+ * rows. Returns true when this caller won the claim.
317
+ */
318
+ claimCas(deliveryId, newClaimedBy, expected) {
319
+ const tx = this.db.transaction(() => {
320
+ const result = this.db
321
+ .prepare(`UPDATE entries
322
+ SET state = 'claimed', claimed_by = @newClaimedBy
323
+ WHERE delivery_id = @delivery_id
324
+ AND state = @expectedState
325
+ AND claimed_by IS @expectedClaimedBy`)
326
+ .run({
327
+ delivery_id: deliveryId,
328
+ newClaimedBy,
329
+ expectedState: expected.state,
330
+ expectedClaimedBy: expected.claimed_by,
331
+ });
332
+ if (result.changes !== 1)
333
+ return false;
334
+ // Append the status-history row in the same transaction (parity with
335
+ // `transition()` so a crash mid-claim cannot tear the history).
336
+ const current = this.db
337
+ .prepare('SELECT status_history FROM entries WHERE delivery_id = ?')
338
+ .get(deliveryId);
339
+ if (current) {
340
+ let history;
341
+ try {
342
+ const parsed = JSON.parse(current.status_history);
343
+ history = Array.isArray(parsed) ? parsed : [];
344
+ }
345
+ catch {
346
+ history = [];
347
+ }
348
+ history.push({ state: 'claimed', at: new Date().toISOString() });
349
+ this.db
350
+ .prepare('UPDATE entries SET status_history = @h WHERE delivery_id = @id')
351
+ .run({ h: JSON.stringify(history), id: deliveryId });
352
+ }
353
+ return true;
354
+ });
355
+ return tx();
268
356
  }
269
357
  /**
270
358
  * List the rows a restore-purge at `cutoffIso` WOULD delete — so the
@@ -272,37 +360,80 @@ export class PendingRelayStore {
272
360
  * before purging. A restore-purge deletes queued-undelivered outbound
273
361
  * messages; until 2026-06-05 it was the delivery stack's only silent
274
362
  * deletion path.
363
+ *
364
+ * Predicate matches `purgeStaleClaimable` exactly (the loud-loss logging
365
+ * must cover exactly what the purge deletes). `farFutureClamp` marks rows
366
+ * purged by the 7-day corruption clamp rather than ordinary staleness.
275
367
  */
276
- listStaleClaimable(cutoffIso) {
277
- const stmt = this.db.prepare(`SELECT delivery_id, topic_id, attempted_at, text
368
+ listStaleClaimable(cutoffIso, nowIso = new Date().toISOString()) {
369
+ const farFuture = farFutureClampIso(nowIso);
370
+ const stmt = this.db.prepare(`SELECT delivery_id, topic_id, attempted_at, next_attempt_at, text
278
371
  FROM entries
279
372
  WHERE state IN ('queued', 'claimed')
280
373
  AND attempted_at < @cutoff
374
+ AND (next_attempt_at IS NULL OR next_attempt_at < @cutoff OR next_attempt_at > @farFuture)
281
375
  ORDER BY attempted_at ASC`);
282
- const rows = stmt.all({ cutoff: cutoffIso });
376
+ const rows = stmt.all({ cutoff: cutoffIso, farFuture });
283
377
  return rows.map((r) => ({
284
378
  delivery_id: r.delivery_id,
285
379
  topic_id: r.topic_id,
286
380
  attempted_at: r.attempted_at,
287
381
  text: Buffer.isBuffer(r.text) ? r.text.toString('utf-8') : String(r.text ?? ''),
382
+ farFutureClamp: r.next_attempt_at !== null && r.next_attempt_at > farFuture,
288
383
  }));
289
384
  }
290
385
  /**
291
- * Layer 3 restore-purge — drops queued/claimed rows whose
292
- * `attempted_at` is older than `cutoffIso`. Called once at sentinel
293
- * startup (spec §3h). Returns the number of rows deleted so the
294
- * caller can emit a one-line restore log.
386
+ * Layer 3 restore-purge — drops queued/claimed rows that are genuinely
387
+ * stale. Called once at sentinel startup (DFS spec §3h, semantics updated
388
+ * by reap-notify spec R1.6).
389
+ *
390
+ * Staleness cutoff is `max(attempted_at, next_attempt_at)`: a row HELD
391
+ * for future release (its `next_attempt_at` is still ahead of the cutoff)
392
+ * is NOT stale — purging it was the mechanism behind the documented
393
+ * 2026-06-05 silent-deletion incident (a quiet-hours-held notice crossing
394
+ * a routine restart was eaten at boot). In SQL: a row is purged only when
395
+ * `attempted_at < cutoff` AND its `next_attempt_at` is null, also past,
396
+ * or beyond the 7-day corruption clamp (`farFutureClampIso`) — no
397
+ * legitimate writer holds that long; without the clamp a malformed row
398
+ * would live forever.
399
+ *
400
+ * Returns the number of rows deleted so the caller can emit a one-line
401
+ * restore log.
295
402
  */
296
- purgeStaleClaimable(cutoffIso) {
403
+ purgeStaleClaimable(cutoffIso, nowIso = new Date().toISOString()) {
404
+ const farFuture = farFutureClampIso(nowIso);
297
405
  const stmt = this.db.prepare(`DELETE FROM entries
298
406
  WHERE state IN ('queued', 'claimed')
299
- AND attempted_at < @cutoff`);
300
- const result = stmt.run({ cutoff: cutoffIso });
407
+ AND attempted_at < @cutoff
408
+ AND (next_attempt_at IS NULL OR next_attempt_at < @cutoff OR next_attempt_at > @farFuture)`);
409
+ const result = stmt.run({ cutoff: cutoffIso, farFuture });
410
+ return result.changes ?? 0;
411
+ }
412
+ /**
413
+ * Bounded cleanup for the reap-notify lane (P19 — the always-on drain must
414
+ * not grow the store unboundedly when DFS's retention pass is off): deletes
415
+ * TERMINAL-state rows inside the reap-notify PK range older than `beforeIso`.
416
+ * Queued/claimed rows are never touched.
417
+ */
418
+ purgeTerminalReapNotices(beforeIso) {
419
+ const stmt = this.db.prepare(`DELETE FROM entries
420
+ WHERE delivery_id >= @prefixLower AND delivery_id < @prefixUpper
421
+ AND state NOT IN ('queued', 'claimed')
422
+ AND attempted_at < @before`);
423
+ const result = stmt.run({
424
+ before: beforeIso,
425
+ prefixLower: REAP_NOTIFY_DELIVERY_PREFIX,
426
+ prefixUpper: REAP_NOTIFY_DELIVERY_PREFIX_UPPER,
427
+ });
301
428
  return result.changes ?? 0;
302
429
  }
303
430
  pathOnDisk() {
304
431
  return this.path;
305
432
  }
433
+ /** Direct DB handle for contract tests only. */
434
+ rawDb() {
435
+ return this.db;
436
+ }
306
437
  close() {
307
438
  try {
308
439
  this.db.close();
@@ -312,6 +443,12 @@ export class PendingRelayStore {
312
443
  }
313
444
  }
314
445
  }
446
+ /** ISO instant `FAR_FUTURE_HOLD_CLAMP_MS` past `nowIso` (R1.6 anomaly clamp). */
447
+ function farFutureClampIso(nowIso) {
448
+ const now = Date.parse(nowIso);
449
+ const base = Number.isNaN(now) ? Date.now() : now;
450
+ return new Date(base + FAR_FUTURE_HOLD_CLAMP_MS).toISOString();
451
+ }
315
452
  // ── Boot self-check ───────────────────────────────────────────────────
316
453
  /**
317
454
  * Verify the SQLite runtime substrate is usable.
@@ -1 +1 @@
1
- {"version":3,"file":"pending-relay-store.js","sourceRoot":"","sources":["../../src/messaging/pending-relay-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending-relay-store.js","sourceRoot":"","sources":["../../src/messaging/pending-relay-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,8BAA8B,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AA0DzD,yEAAyE;AAEzE,MAAM,MAAM,GAAG;IACb;;;;;;;;;;;;;;;;;KAiBG;IACH,8EAA8E;IAC9E,gFAAgF;CACjF,CAAC;AAEF,2EAA2E;AAC3E,wEAAwE;AACxE,yBAAyB;AACzB,MAAM,WAAW,GAAyC;IACxD,wEAAwE;IACxE,+EAA+E;IAC/E,sEAAsE;IACtE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,qEAAqE,EAAE;IACjG,2EAA2E;IAC3E,sEAAsE;IACtE,0EAA0E;IAC1E,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,sDAAsD,EAAE;CAC1F,CAAC;AAEF,yEAAyE;AAEzE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,OAAe;IACvE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,iBAAiB,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB,EAAE,OAAe;IAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,iBAAiB,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC/F,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,EAAU;IACjC,OAAO,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,yEAAyE;AAEzE,MAAM,OAAO,iBAAiB;IACpB,EAAE,CAAuB;IACzB,IAAI,CAAS;IAErB,YAAoB,EAAwB,EAAE,MAAc;QAC1D,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,wEAAwE;QACxE,oBAAoB,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,QAAgB;QAC3C,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExD,IAAI,EAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrG,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,wEAAwE;QACxE,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,gFAAgF;QAClF,CAAC;QAED,iEAAiE;QACjE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAClC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAEjC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,0BAA0B;QAC1B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,KAAmB;QACzB,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5F,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;YACpC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;SACjE,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B;;;;;;;;;;SAUG,CACJ,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI;YACJ,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YAClC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;YACpC,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;YAC5C,YAAY,EAAE,WAAW;YACzB,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI;YAC9C,cAAc,EAAE,cAAc;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;SACjD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,gBAAgB,CAAC,UAAkB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAgC,CAAC;QAChE,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,wBAAwB,CACtB,OAAe,EACf,QAAgB,EAChB,QAAgB,EAChB,MAAY,IAAI,IAAI,EAAE;QAEtB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B;;4CAEsC,CACvC,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAgC,CAAC;QAC/E,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CACR,UAAkB,EAClB,QAAuB,EACvB,mBAMK,EAAE;QAEP,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAU,EAAE,KAAoB,EAAE,KAA8B,EAAE,EAAE;YAClG,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,GAAG,CAAC,EAAE,CAErF,CAAC;YACd,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAC3B,IAAI,OAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAClD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAEtD,MAAM,MAAM,GAAa,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;YAChF,MAAM,MAAM,GAA4B;gBACtC,WAAW,EAAE,EAAE;gBACf,KAAK;gBACL,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aACxC,CAAC;YACF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,SAAS;oBAAE,SAAS;gBAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC5B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;YACD,MAAM,GAAG,GAAG,sBAAsB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC;YACvF,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAY,CAAC;IAC/D,CAAC;IAED,uCAAuC;IACvC,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAAmB,CAAC;QACxF,OAAO,GAAG,CAAC,CAAC,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,MAAc,EAAE,KAAK,GAAG,GAAG;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B;;;;;sBAKgB,CACjB,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK;YACL,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,iCAAiC;SAC/C,CAAsB,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,0BAA0B,CAAC,MAAc,EAAE,KAAK,GAAG,GAAG;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B;;;;;sBAKgB,CACjB,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;YACd,GAAG,EAAE,MAAM;YACX,KAAK;YACL,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,iCAAiC;SAC/C,CAAsB,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CACN,UAAkB,EAClB,YAAoB,EACpB,QAA6D;QAE7D,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;iBACnB,OAAO,CACN;;;;oDAI0C,CAC3C;iBACA,GAAG,CAAC;gBACH,WAAW,EAAE,UAAU;gBACvB,YAAY;gBACZ,aAAa,EAAE,QAAQ,CAAC,KAAK;gBAC7B,iBAAiB,EAAE,QAAQ,CAAC,UAAU;aACvC,CAAC,CAAC;YACL,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvC,qEAAqE;YACrE,gEAAgE;YAChE,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;iBACpB,OAAO,CAAC,0DAA0D,CAAC;iBACnE,GAAG,CAAC,UAAU,CAA2C,CAAC;YAC7D,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,OAAkB,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;oBAClD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,GAAG,EAAE,CAAC;gBACf,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,EAAE;qBACJ,OAAO,CAAC,gEAAgE,CAAC;qBACzE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,EAAa,CAAC;IACzB,CAAC;IAED;;;;;;;;;;OAUG;IACH,kBAAkB,CAChB,SAAiB,EACjB,SAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAQzC,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B;;;;;mCAK6B,CAC9B,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAMpD,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/E,cAAc,EAAE,CAAC,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,CAAC,eAAe,GAAG,SAAS;SAC5E,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAAC,SAAiB,EAAE,SAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9E,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B;;;sGAGgG,CACjG,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAiB;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B;;;sCAGgC,CACjC,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;YACtB,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,iCAAiC;SAC/C,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,gDAAgD;IAChD,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,KAAK;QACH,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;CACF;AAED,iFAAiF;AACjF,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAClD,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;AACjE,CAAC;AAED,yEAAyE;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC;QACH,YAAY,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACH,mBAAmB,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;gBACvC,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,6CAA6C;gBACtD,QAAQ,EAAE,0EAA0E;gBACpF,MAAM,EAAE,sFAAsF;gBAC9F,MAAM,EACJ,iEAAiE;oBACjE,kEAAkE;oBAClE,iFAAiF;aACpF,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,mBAAmB,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;gBACvC,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,kCAAkC;gBAC3C,QAAQ,EAAE,0EAA0E;gBACpF,MAAM,EAAE,kDAAkD,MAAM,EAAE;gBAClE,MAAM,EACJ,mEAAmE;oBACnE,4DAA4D;oBAC5D,gEAAgE;aACnE,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Reap-notice delivery-id prefix — the ONE place the `reap-notify:` origin
3
+ * tag on PendingRelayStore `delivery_id` primary keys is built and parsed.
4
+ *
5
+ * Spec: docs/specs/reap-notify-per-topic-and-midwork-resume-queue.md R1.3.
6
+ *
7
+ * The origin tag rides the delivery_id PK as a prefix (`reap-notify:<noticeId>`)
8
+ * — zero DDL, PK-dedupe for free. Both drains scope their claim QUERIES on it:
9
+ * ReapNoticeDrain claims rows inside the prefix range, DeliveryFailureSentinel
10
+ * claims rows outside it. The range bounds below are written so SQLite can
11
+ * serve the filter from the PK index (`delivery_id >= lower AND delivery_id <
12
+ * upper`), never a bare LIKE.
13
+ *
14
+ * The tag is a routing label inside the trusted local process boundary, not an
15
+ * auth boundary — anything that can write this store can already read the bot
16
+ * token.
17
+ *
18
+ * No caller hand-assembles the string: ReapNotifier builds ids here, both
19
+ * drains take the range bounds from here, and the contract tests assert every
20
+ * store path preserves prefix semantics.
21
+ */
22
+ export declare const REAP_NOTIFY_DELIVERY_PREFIX = "reap-notify:";
23
+ /**
24
+ * Exclusive upper bound of the prefix's PK range. ';' is ':' + 1 in ASCII, so
25
+ * `delivery_id >= 'reap-notify:' AND delivery_id < 'reap-notify;'` matches
26
+ * exactly the ids carrying the prefix — an index-compatible range predicate.
27
+ */
28
+ export declare const REAP_NOTIFY_DELIVERY_PREFIX_UPPER = "reap-notify;";
29
+ /** Build a reap-notice delivery id. Throws on an id that would break the
30
+ * prefix contract (empty, or containing characters outside the clamp). */
31
+ export declare function buildReapNotifyDeliveryId(noticeId: string): string;
32
+ /** True when a delivery id carries the reap-notify origin prefix. */
33
+ export declare function isReapNotifyDeliveryId(deliveryId: string): boolean;
34
+ /** Extract the noticeId from a reap-notice delivery id; null when the id is
35
+ * not in the prefix range (or the embedded id violates the clamp). */
36
+ export declare function parseReapNotifyDeliveryId(deliveryId: string): string | null;
37
+ //# sourceMappingURL=reap-notice-delivery-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reap-notice-delivery-id.d.ts","sourceRoot":"","sources":["../../src/messaging/reap-notice-delivery-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,iBAAiB,CAAC;AAMhE;2EAC2E;AAC3E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOlE;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAIlE;AAED;uEACuE;AACvE,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3E"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Reap-notice delivery-id prefix — the ONE place the `reap-notify:` origin
3
+ * tag on PendingRelayStore `delivery_id` primary keys is built and parsed.
4
+ *
5
+ * Spec: docs/specs/reap-notify-per-topic-and-midwork-resume-queue.md R1.3.
6
+ *
7
+ * The origin tag rides the delivery_id PK as a prefix (`reap-notify:<noticeId>`)
8
+ * — zero DDL, PK-dedupe for free. Both drains scope their claim QUERIES on it:
9
+ * ReapNoticeDrain claims rows inside the prefix range, DeliveryFailureSentinel
10
+ * claims rows outside it. The range bounds below are written so SQLite can
11
+ * serve the filter from the PK index (`delivery_id >= lower AND delivery_id <
12
+ * upper`), never a bare LIKE.
13
+ *
14
+ * The tag is a routing label inside the trusted local process boundary, not an
15
+ * auth boundary — anything that can write this store can already read the bot
16
+ * token.
17
+ *
18
+ * No caller hand-assembles the string: ReapNotifier builds ids here, both
19
+ * drains take the range bounds from here, and the contract tests assert every
20
+ * store path preserves prefix semantics.
21
+ */
22
+ export const REAP_NOTIFY_DELIVERY_PREFIX = 'reap-notify:';
23
+ /**
24
+ * Exclusive upper bound of the prefix's PK range. ';' is ':' + 1 in ASCII, so
25
+ * `delivery_id >= 'reap-notify:' AND delivery_id < 'reap-notify;'` matches
26
+ * exactly the ids carrying the prefix — an index-compatible range predicate.
27
+ */
28
+ export const REAP_NOTIFY_DELIVERY_PREFIX_UPPER = 'reap-notify;';
29
+ /** Charset clamp for notice ids embedded in the PK — keeps ids unambiguous
30
+ * and the range predicate airtight (no separator collisions). */
31
+ const NOTICE_ID_RE = /^[A-Za-z0-9._-]+$/;
32
+ /** Build a reap-notice delivery id. Throws on an id that would break the
33
+ * prefix contract (empty, or containing characters outside the clamp). */
34
+ export function buildReapNotifyDeliveryId(noticeId) {
35
+ if (!NOTICE_ID_RE.test(noticeId)) {
36
+ throw new Error(`reap-notice-delivery-id: invalid noticeId ${JSON.stringify(noticeId)} — must match ${NOTICE_ID_RE}`);
37
+ }
38
+ return `${REAP_NOTIFY_DELIVERY_PREFIX}${noticeId}`;
39
+ }
40
+ /** True when a delivery id carries the reap-notify origin prefix. */
41
+ export function isReapNotifyDeliveryId(deliveryId) {
42
+ return (deliveryId >= REAP_NOTIFY_DELIVERY_PREFIX && deliveryId < REAP_NOTIFY_DELIVERY_PREFIX_UPPER);
43
+ }
44
+ /** Extract the noticeId from a reap-notice delivery id; null when the id is
45
+ * not in the prefix range (or the embedded id violates the clamp). */
46
+ export function parseReapNotifyDeliveryId(deliveryId) {
47
+ if (!isReapNotifyDeliveryId(deliveryId))
48
+ return null;
49
+ const noticeId = deliveryId.slice(REAP_NOTIFY_DELIVERY_PREFIX.length);
50
+ return NOTICE_ID_RE.test(noticeId) ? noticeId : null;
51
+ }
52
+ //# sourceMappingURL=reap-notice-delivery-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reap-notice-delivery-id.js","sourceRoot":"","sources":["../../src/messaging/reap-notice-delivery-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,cAAc,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAc,CAAC;AAEhE;kEACkE;AAClE,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC;2EAC2E;AAC3E,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,YAAY,EAAE,CACrG,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,2BAA2B,GAAG,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,CACL,UAAU,IAAI,2BAA2B,IAAI,UAAU,GAAG,iCAAiC,CAC5F,CAAC;AACJ,CAAC;AAED;uEACuE;AACvE,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC"}
@@ -133,6 +133,12 @@ export declare class QuotaManager extends EventEmitter {
133
133
  * when quota is healthy. Migration is a quota-saving measure — if
134
134
  * quota is fine, migration concerns are irrelevant.
135
135
  */
136
+ /** True while a quota migration is mid-flight (reap-notify R2.4: the
137
+ * resume-queue drainer never spawns during a migration — stricter than
138
+ * canSpawnSession, which permits spawns mid-migration absent pressure).
139
+ * Deliberately NO catch here: a probe error propagates to the drainer's
140
+ * gate, which resolves a throwing dep to the SAFE side (blocked). */
141
+ isMigrationInFlight(): boolean;
136
142
  canSpawnSession(priority?: string): {
137
143
  allowed: boolean;
138
144
  reason: string;