@cleocode/core 2026.9.24 → 2026.9.25

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 (328) hide show
  1. package/dist/audit-prune.d.ts +32 -0
  2. package/dist/audit-prune.d.ts.map +1 -1
  3. package/dist/audit-prune.js +37 -3
  4. package/dist/audit-prune.js.map +1 -1
  5. package/dist/build-provenance.json +2 -2
  6. package/dist/cloud/crypto.d.ts +1 -2
  7. package/dist/cloud/crypto.d.ts.map +1 -1
  8. package/dist/cloud/crypto.js +1 -11
  9. package/dist/cloud/crypto.js.map +1 -1
  10. package/dist/cloud/uuidv7.d.ts +9 -0
  11. package/dist/cloud/uuidv7.d.ts.map +1 -0
  12. package/dist/cloud/uuidv7.js +19 -0
  13. package/dist/cloud/uuidv7.js.map +1 -0
  14. package/dist/decide/bench/index.d.ts +1 -1
  15. package/dist/decide/bench/index.d.ts.map +1 -1
  16. package/dist/decide/bench/index.js +1 -1
  17. package/dist/decide/bench/index.js.map +1 -1
  18. package/dist/decide/bench/operation.d.ts +1 -1
  19. package/dist/decide/bench/operation.d.ts.map +1 -1
  20. package/dist/decide/bench/operation.js +1 -1
  21. package/dist/decide/bench/operation.js.map +1 -1
  22. package/dist/decide/bench/profiles.d.ts +50 -22
  23. package/dist/decide/bench/profiles.d.ts.map +1 -1
  24. package/dist/decide/bench/profiles.js +103 -59
  25. package/dist/decide/bench/profiles.js.map +1 -1
  26. package/dist/decide/bench/report.d.ts.map +1 -1
  27. package/dist/decide/bench/report.js +6 -1
  28. package/dist/decide/bench/report.js.map +1 -1
  29. package/dist/decide/bench/runner.d.ts +6 -1
  30. package/dist/decide/bench/runner.d.ts.map +1 -1
  31. package/dist/decide/bench/runner.js +1 -0
  32. package/dist/decide/bench/runner.js.map +1 -1
  33. package/dist/decide/client.d.ts.map +1 -1
  34. package/dist/decide/client.js +11 -5
  35. package/dist/decide/client.js.map +1 -1
  36. package/dist/decide/jev-wire.d.ts +31 -1
  37. package/dist/decide/jev-wire.d.ts.map +1 -1
  38. package/dist/decide/jev-wire.js +61 -7
  39. package/dist/decide/jev-wire.js.map +1 -1
  40. package/dist/docs/export-document.js +17181 -15536
  41. package/dist/docs/export-document.js.map +3 -3
  42. package/dist/doctor/orphan-ac-bindings.d.ts +64 -0
  43. package/dist/doctor/orphan-ac-bindings.d.ts.map +1 -0
  44. package/dist/doctor/orphan-ac-bindings.js +59 -0
  45. package/dist/doctor/orphan-ac-bindings.js.map +1 -0
  46. package/dist/doctor/projects.d.ts.map +1 -1
  47. package/dist/doctor/projects.js +43 -29
  48. package/dist/doctor/projects.js.map +1 -1
  49. package/dist/doctor/row-identity.d.ts +31 -0
  50. package/dist/doctor/row-identity.d.ts.map +1 -0
  51. package/dist/doctor/row-identity.js +93 -0
  52. package/dist/doctor/row-identity.js.map +1 -0
  53. package/dist/doctor/twin-collapse.d.ts +58 -2
  54. package/dist/doctor/twin-collapse.d.ts.map +1 -1
  55. package/dist/doctor/twin-collapse.js +212 -14
  56. package/dist/doctor/twin-collapse.js.map +1 -1
  57. package/dist/lifecycle/verification/satisfies-validator.d.ts.map +1 -1
  58. package/dist/lifecycle/verification/satisfies-validator.js +10 -0
  59. package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
  60. package/dist/llm/plugin-facade.js +17045 -15400
  61. package/dist/llm/plugin-facade.js.map +3 -3
  62. package/dist/memory/index.d.ts.map +1 -1
  63. package/dist/memory/index.js +19 -10
  64. package/dist/memory/index.js.map +1 -1
  65. package/dist/memory/manifest-identity.d.ts +171 -0
  66. package/dist/memory/manifest-identity.d.ts.map +1 -0
  67. package/dist/memory/manifest-identity.js +345 -0
  68. package/dist/memory/manifest-identity.js.map +1 -0
  69. package/dist/memory/mental-model-queue.d.ts +14 -4
  70. package/dist/memory/mental-model-queue.d.ts.map +1 -1
  71. package/dist/memory/mental-model-queue.js +64 -35
  72. package/dist/memory/mental-model-queue.js.map +1 -1
  73. package/dist/memory/pipeline-manifest-sqlite.d.ts +47 -5
  74. package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
  75. package/dist/memory/pipeline-manifest-sqlite.js +130 -14
  76. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
  77. package/dist/memory/retrieval/observe.d.ts.map +1 -1
  78. package/dist/memory/retrieval/observe.js +2 -0
  79. package/dist/memory/retrieval/observe.js.map +1 -1
  80. package/dist/memory/transcript-scanner.js +1 -1
  81. package/dist/nexus/deps.d.ts.map +1 -1
  82. package/dist/nexus/deps.js +7 -14
  83. package/dist/nexus/deps.js.map +1 -1
  84. package/dist/nexus/discover.d.ts.map +1 -1
  85. package/dist/nexus/discover.js +6 -9
  86. package/dist/nexus/discover.js.map +1 -1
  87. package/dist/nexus/git-state.d.ts.map +1 -1
  88. package/dist/nexus/git-state.js +10 -1
  89. package/dist/nexus/git-state.js.map +1 -1
  90. package/dist/nexus/projects-clean.d.ts.map +1 -1
  91. package/dist/nexus/projects-clean.js +22 -11
  92. package/dist/nexus/projects-clean.js.map +1 -1
  93. package/dist/nexus/projects-scan.d.ts.map +1 -1
  94. package/dist/nexus/projects-scan.js +8 -13
  95. package/dist/nexus/projects-scan.js.map +1 -1
  96. package/dist/nexus/query.d.ts.map +1 -1
  97. package/dist/nexus/query.js +4 -12
  98. package/dist/nexus/query.js.map +1 -1
  99. package/dist/nexus/registry-roots.d.ts +5 -2
  100. package/dist/nexus/registry-roots.d.ts.map +1 -1
  101. package/dist/nexus/registry-roots.js +8 -10
  102. package/dist/nexus/registry-roots.js.map +1 -1
  103. package/dist/nexus/registry.d.ts +18 -0
  104. package/dist/nexus/registry.d.ts.map +1 -1
  105. package/dist/nexus/registry.js +37 -16
  106. package/dist/nexus/registry.js.map +1 -1
  107. package/dist/orchestrate/worktree-complete.d.ts.map +1 -1
  108. package/dist/orchestrate/worktree-complete.js +40 -2
  109. package/dist/orchestrate/worktree-complete.js.map +1 -1
  110. package/dist/orchestration/spawn-prompt.d.ts +26 -0
  111. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  112. package/dist/orchestration/spawn-prompt.js +62 -91
  113. package/dist/orchestration/spawn-prompt.js.map +1 -1
  114. package/dist/release/ci-evidence.d.ts +190 -0
  115. package/dist/release/ci-evidence.d.ts.map +1 -1
  116. package/dist/release/ci-evidence.js +436 -4
  117. package/dist/release/ci-evidence.js.map +1 -1
  118. package/dist/sdk/validator-ac-pull.d.ts.map +1 -1
  119. package/dist/sdk/validator-ac-pull.js +2 -1
  120. package/dist/sdk/validator-ac-pull.js.map +1 -1
  121. package/dist/selfimprove/fix-gen.js +17049 -15404
  122. package/dist/selfimprove/fix-gen.js.map +3 -3
  123. package/dist/sentient/cross-project-hygiene.d.ts +5 -0
  124. package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
  125. package/dist/sentient/cross-project-hygiene.js +7 -1
  126. package/dist/sentient/cross-project-hygiene.js.map +1 -1
  127. package/dist/sentient/propose-tick.d.ts.map +1 -1
  128. package/dist/sentient/propose-tick.js +2 -3
  129. package/dist/sentient/propose-tick.js.map +1 -1
  130. package/dist/sentient/stage-drift-tick.d.ts.map +1 -1
  131. package/dist/sentient/stage-drift-tick.js +2 -3
  132. package/dist/sentient/stage-drift-tick.js.map +1 -1
  133. package/dist/skills/manifests/research.js +2 -0
  134. package/dist/skills/manifests/research.js.map +1 -1
  135. package/dist/skills/orchestrator/validator.d.ts.map +1 -1
  136. package/dist/skills/orchestrator/validator.js +9 -2
  137. package/dist/skills/orchestrator/validator.js.map +1 -1
  138. package/dist/skills/validation.d.ts +4 -1
  139. package/dist/skills/validation.d.ts.map +1 -1
  140. package/dist/skills/validation.js +11 -3
  141. package/dist/skills/validation.js.map +1 -1
  142. package/dist/spawn/branch-lock.d.ts +111 -7
  143. package/dist/spawn/branch-lock.d.ts.map +1 -1
  144. package/dist/spawn/branch-lock.js +296 -8
  145. package/dist/spawn/branch-lock.js.map +1 -1
  146. package/dist/store/ac-binding-prune.d.ts +144 -0
  147. package/dist/store/ac-binding-prune.d.ts.map +1 -0
  148. package/dist/store/ac-binding-prune.js +293 -0
  149. package/dist/store/ac-binding-prune.js.map +1 -0
  150. package/dist/store/agent-registry-store.d.ts.map +1 -1
  151. package/dist/store/agent-registry-store.js +3 -2
  152. package/dist/store/agent-registry-store.js.map +1 -1
  153. package/dist/store/backup-sidecar.d.ts +85 -2
  154. package/dist/store/backup-sidecar.d.ts.map +1 -1
  155. package/dist/store/backup-sidecar.js +173 -1
  156. package/dist/store/backup-sidecar.js.map +1 -1
  157. package/dist/store/conduit-sqlite.d.ts.map +1 -1
  158. package/dist/store/conduit-sqlite.js +3 -2
  159. package/dist/store/conduit-sqlite.js.map +1 -1
  160. package/dist/store/credential-transfer.d.ts.map +1 -1
  161. package/dist/store/credential-transfer.js +3 -0
  162. package/dist/store/credential-transfer.js.map +1 -1
  163. package/dist/store/db-helpers.d.ts +17 -11
  164. package/dist/store/db-helpers.d.ts.map +1 -1
  165. package/dist/store/db-helpers.js +61 -38
  166. package/dist/store/db-helpers.js.map +1 -1
  167. package/dist/store/display-id-alias.d.ts +529 -0
  168. package/dist/store/display-id-alias.d.ts.map +1 -0
  169. package/dist/store/display-id-alias.js +1063 -0
  170. package/dist/store/display-id-alias.js.map +1 -0
  171. package/dist/store/dual-scope-db.d.ts.map +1 -1
  172. package/dist/store/dual-scope-db.js +21 -0
  173. package/dist/store/dual-scope-db.js.map +1 -1
  174. package/dist/store/exodus/reconcile.d.ts.map +1 -1
  175. package/dist/store/exodus/reconcile.js +7 -2
  176. package/dist/store/exodus/reconcile.js.map +1 -1
  177. package/dist/store/exodus/recovery.d.ts.map +1 -1
  178. package/dist/store/exodus/recovery.js +20 -1
  179. package/dist/store/exodus/recovery.js.map +1 -1
  180. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
  181. package/dist/store/legacy-tasks-lineage.js +19 -2
  182. package/dist/store/legacy-tasks-lineage.js.map +1 -1
  183. package/dist/store/row-identity-flag.d.ts +26 -0
  184. package/dist/store/row-identity-flag.d.ts.map +1 -0
  185. package/dist/store/row-identity-flag.js +31 -0
  186. package/dist/store/row-identity-flag.js.map +1 -0
  187. package/dist/store/row-identity-registry.d.ts +61 -0
  188. package/dist/store/row-identity-registry.d.ts.map +1 -0
  189. package/dist/store/row-identity-registry.js +198 -0
  190. package/dist/store/row-identity-registry.js.map +1 -0
  191. package/dist/store/row-identity.d.ts +390 -0
  192. package/dist/store/row-identity.d.ts.map +1 -0
  193. package/dist/store/row-identity.js +1240 -0
  194. package/dist/store/row-identity.js.map +1 -0
  195. package/dist/store/safety-data-accessor.d.ts +2 -0
  196. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  197. package/dist/store/safety-data-accessor.js +4 -0
  198. package/dist/store/safety-data-accessor.js.map +1 -1
  199. package/dist/store/schema/attachments.d.ts +1 -1
  200. package/dist/store/schema/audit.d.ts +4 -4
  201. package/dist/store/schema/background-jobs.d.ts +1 -1
  202. package/dist/store/schema/cleo-global/nexus.d.ts +1 -1
  203. package/dist/store/schema/cleo-global/skills.d.ts +2 -2
  204. package/dist/store/schema/cleo-project/audit.d.ts +4 -4
  205. package/dist/store/schema/cleo-project/docs.d.ts +1 -1
  206. package/dist/store/schema/cleo-project/lifecycle.d.ts +4 -4
  207. package/dist/store/schema/cleo-project/nexus-graph.d.ts +3 -3
  208. package/dist/store/schema/cleo-project/provenance-commits.d.ts +2 -2
  209. package/dist/store/schema/cleo-project/provenance-rest.d.ts +3 -3
  210. package/dist/store/schema/cleo-project/runtime.d.ts +3 -3
  211. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +87 -1
  212. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts.map +1 -1
  213. package/dist/store/schema/cleo-project/tasks-core-batch2.js +35 -0
  214. package/dist/store/schema/cleo-project/tasks-core-batch2.js.map +1 -1
  215. package/dist/store/schema/cleo-project/tasks-core.d.ts +183 -7
  216. package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
  217. package/dist/store/schema/cleo-project/tasks-core.js +52 -1
  218. package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
  219. package/dist/store/schema/cleo-shared/brain.d.ts +6 -6
  220. package/dist/store/schema/lifecycle.d.ts +4 -4
  221. package/dist/store/schema/manifest.d.ts +1 -1
  222. package/dist/store/schema/memory-schema.d.ts +5 -5
  223. package/dist/store/schema/nexus-schema.d.ts +3 -3
  224. package/dist/store/schema/provenance/releases.d.ts +1 -1
  225. package/dist/store/schema/skills-schema.d.ts +2 -2
  226. package/dist/store/schema/tasks.d.ts +6 -6
  227. package/dist/store/split-brain-import.d.ts +2 -14
  228. package/dist/store/split-brain-import.d.ts.map +1 -1
  229. package/dist/store/split-brain-import.js +4 -19
  230. package/dist/store/split-brain-import.js.map +1 -1
  231. package/dist/store/sqlite-data-accessor.d.ts +279 -2
  232. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  233. package/dist/store/sqlite-data-accessor.js +544 -44
  234. package/dist/store/sqlite-data-accessor.js.map +1 -1
  235. package/dist/store/sync/clock-store.d.ts +67 -0
  236. package/dist/store/sync/clock-store.d.ts.map +1 -0
  237. package/dist/store/sync/clock-store.js +117 -0
  238. package/dist/store/sync/clock-store.js.map +1 -0
  239. package/dist/store/sync/flags.d.ts +51 -0
  240. package/dist/store/sync/flags.d.ts.map +1 -0
  241. package/dist/store/sync/flags.js +81 -0
  242. package/dist/store/sync/flags.js.map +1 -0
  243. package/dist/store/sync/hlc.d.ts +115 -0
  244. package/dist/store/sync/hlc.d.ts.map +1 -0
  245. package/dist/store/sync/hlc.js +172 -0
  246. package/dist/store/sync/hlc.js.map +1 -0
  247. package/dist/store/sync/index.d.ts +20 -0
  248. package/dist/store/sync/index.d.ts.map +1 -0
  249. package/dist/store/sync/index.js +20 -0
  250. package/dist/store/sync/index.js.map +1 -0
  251. package/dist/store/sync/replica-registry.d.ts +85 -0
  252. package/dist/store/sync/replica-registry.d.ts.map +1 -0
  253. package/dist/store/sync/replica-registry.js +147 -0
  254. package/dist/store/sync/replica-registry.js.map +1 -0
  255. package/dist/store/sync/replica.d.ts +181 -0
  256. package/dist/store/sync/replica.d.ts.map +1 -0
  257. package/dist/store/sync/replica.js +305 -0
  258. package/dist/store/sync/replica.js.map +1 -0
  259. package/dist/store/sync/schema.d.ts +68 -0
  260. package/dist/store/sync/schema.d.ts.map +1 -0
  261. package/dist/store/sync/schema.js +130 -0
  262. package/dist/store/sync/schema.js.map +1 -0
  263. package/dist/store/sync/skew-hold.d.ts +71 -0
  264. package/dist/store/sync/skew-hold.d.ts.map +1 -0
  265. package/dist/store/sync/skew-hold.js +89 -0
  266. package/dist/store/sync/skew-hold.js.map +1 -0
  267. package/dist/store/table-classification.d.ts +10 -8
  268. package/dist/store/table-classification.d.ts.map +1 -1
  269. package/dist/store/table-classification.js +93 -25
  270. package/dist/store/table-classification.js.map +1 -1
  271. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  272. package/dist/store/tasks-sqlite.js +9 -1
  273. package/dist/store/tasks-sqlite.js.map +1 -1
  274. package/dist/store/twin-collapse.d.ts +113 -2
  275. package/dist/store/twin-collapse.d.ts.map +1 -1
  276. package/dist/store/twin-collapse.js +247 -19
  277. package/dist/store/twin-collapse.js.map +1 -1
  278. package/dist/store/umbrella-data-accessor.d.ts +2 -0
  279. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  280. package/dist/store/umbrella-data-accessor.js +4 -0
  281. package/dist/store/umbrella-data-accessor.js.map +1 -1
  282. package/dist/store/validation-schemas.d.ts +241 -49
  283. package/dist/store/validation-schemas.d.ts.map +1 -1
  284. package/dist/system/health.d.ts.map +1 -1
  285. package/dist/system/health.js +3 -0
  286. package/dist/system/health.js.map +1 -1
  287. package/dist/system/project-health.d.ts +9 -2
  288. package/dist/system/project-health.d.ts.map +1 -1
  289. package/dist/system/project-health.js +8 -3
  290. package/dist/system/project-health.js.map +1 -1
  291. package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
  292. package/dist/tasks/ac-coverage-gate.js +3 -0
  293. package/dist/tasks/ac-coverage-gate.js.map +1 -1
  294. package/dist/tasks/ac-table.d.ts +35 -7
  295. package/dist/tasks/ac-table.d.ts.map +1 -1
  296. package/dist/tasks/ac-table.js +119 -14
  297. package/dist/tasks/ac-table.js.map +1 -1
  298. package/dist/tasks/add.d.ts.map +1 -1
  299. package/dist/tasks/add.js +48 -2
  300. package/dist/tasks/add.js.map +1 -1
  301. package/dist/tasks/backfill-child-projections.js +47 -6
  302. package/dist/tasks/backfill-child-projections.js.map +1 -1
  303. package/dist/tasks/complete.d.ts.map +1 -1
  304. package/dist/tasks/complete.js +6 -1
  305. package/dist/tasks/complete.js.map +1 -1
  306. package/dist/tasks/completion-evaluation.d.ts.map +1 -1
  307. package/dist/tasks/completion-evaluation.js +3 -0
  308. package/dist/tasks/completion-evaluation.js.map +1 -1
  309. package/dist/tasks/evidence.d.ts.map +1 -1
  310. package/dist/tasks/evidence.js +14 -3
  311. package/dist/tasks/evidence.js.map +1 -1
  312. package/dist/validation/compliance.d.ts +5 -1
  313. package/dist/validation/compliance.d.ts.map +1 -1
  314. package/dist/validation/compliance.js +24 -3
  315. package/dist/validation/compliance.js.map +1 -1
  316. package/dist/validation/index.d.ts +1 -1
  317. package/dist/validation/index.d.ts.map +1 -1
  318. package/dist/validation/index.js +1 -1
  319. package/dist/validation/index.js.map +1 -1
  320. package/dist/validation/protocol-common.d.ts +47 -2
  321. package/dist/validation/protocol-common.d.ts.map +1 -1
  322. package/dist/validation/protocol-common.js +86 -21
  323. package/dist/validation/protocol-common.js.map +1 -1
  324. package/migrations/README.md +12 -0
  325. package/migrations/drizzle-cleo-project/20260928120000_t12341-row-uids/migration.sql +169 -0
  326. package/migrations/sync-journal/20260929140000_t12342-sync-clock/migration.sql +42 -0
  327. package/package.json +13 -13
  328. package/templates/CLEO-REFERENCE.md +4 -0
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Evidence ↔ AC binding pruning — the single write path that removes
3
+ * `tasks_evidence_ac_bindings` rows (T12790).
4
+ *
5
+ * ## Why this exists
6
+ *
7
+ * The consolidated project schema (`drizzle-cleo-project/20260531000001`)
8
+ * declares NO foreign key from `tasks_evidence_ac_bindings.ac_id` to
9
+ * `tasks_task_acceptance_criteria.id`. The legacy table's `ON DELETE CASCADE`
10
+ * did not survive consolidation, so every AC row that left the store —
11
+ * through an AC edit ({@link import('../tasks/ac-table.js').applyAcPlan}) or a
12
+ * hard task delete (the AC rows cascade from `tasks_tasks`) — left its
13
+ * bindings dangling. Adding the FK back would need a table rebuild, so the
14
+ * accessor deletes the bindings explicitly instead, in the same transaction
15
+ * that removes the AC rows.
16
+ *
17
+ * ## History is kept in the audit log, not in the bindings table
18
+ *
19
+ * One reader depends on historical bindings: alias-drift detection in
20
+ * `satisfies-validator.ts` (ADR-079-r2 §3) compares an alias atom's current
21
+ * AC against the AC a previous `satisfies` binding recorded. A binding for a
22
+ * removed AC is meaningless to the coverage gate, but it is exactly the
23
+ * record that says "alias AC2 used to mean X". So before a binding is
24
+ * deleted, its full row is written to `tasks_audit_log` under
25
+ * {@link AC_BINDINGS_PRUNED_ACTION}, keyed by the task that owned the AC, and
26
+ * the drift detector reads those rows as well as the live table.
27
+ *
28
+ * Every function takes the drizzle handle of an ALREADY-OPEN accessor
29
+ * transaction; none of them opens or commits one.
30
+ *
31
+ * @task T12790
32
+ * @adr ADR-079-r2
33
+ */
34
+ import type { AcBindingRow } from '@cleocode/contracts';
35
+ import type { getDb } from './sqlite.js';
36
+ /** Drizzle handle for the project tasks store. */
37
+ type TasksDb = Awaited<ReturnType<typeof getDb>>;
38
+ /** `tasks_audit_log.action` recorded for every batch of pruned bindings. */
39
+ export declare const AC_BINDINGS_PRUNED_ACTION = "ac.bindings.pruned";
40
+ /**
41
+ * Why a batch of bindings was pruned.
42
+ *
43
+ * - `ac-removed` — the AC rows left the task's set in an AC edit.
44
+ * - `task-removed` — the owning task was hard-deleted (its AC rows cascade).
45
+ * - `orphan-repair` — `cleo doctor ac-bindings --fix` removed rows whose AC
46
+ * was already gone before T12790.
47
+ */
48
+ export type AcBindingPruneReason = 'ac-removed' | 'task-removed' | 'orphan-repair';
49
+ /** `details` payload of a {@link AC_BINDINGS_PRUNED_ACTION} audit row. */
50
+ export interface AcBindingsPrunedDetails {
51
+ /** Why the bindings were removed. */
52
+ readonly reason: AcBindingPruneReason;
53
+ /** The AC ids whose bindings were removed. */
54
+ readonly acIds: readonly string[];
55
+ /** The removed binding rows, verbatim. */
56
+ readonly bindings: readonly AcBindingRow[];
57
+ }
58
+ /** Owner key used when an orphan's owning task cannot be inferred. */
59
+ export declare const UNKNOWN_BINDING_OWNER = "unknown";
60
+ /**
61
+ * Generate a task audit log row id in the `log-<epoch>-<rand>` shape.
62
+ *
63
+ * Shared by the task accessor's `appendLog` and the binding prune below, so
64
+ * both write ids of one shape.
65
+ *
66
+ * @task T4837 · T12790
67
+ */
68
+ export declare function generateAuditLogId(): string;
69
+ /**
70
+ * Delete every binding whose `ac_id` is in `acIds`, recording them first in
71
+ * the audit log under `ownerTaskId` (the task that owned those ACs).
72
+ *
73
+ * Call it in the same transaction that removes the AC rows, BEFORE or AFTER
74
+ * the AC delete — the bindings table has no FK, so order does not matter.
75
+ *
76
+ * @param db - drizzle handle of the open accessor transaction
77
+ * @param ownerTaskId - task that owned the removed ACs
78
+ * @param acIds - AC ids leaving the store
79
+ * @param reason - why they are leaving
80
+ * @returns number of bindings removed
81
+ *
82
+ * @task T12790
83
+ */
84
+ export declare function pruneAcBindingsForAcIds(db: TasksDb, ownerTaskId: string, acIds: readonly string[], reason: AcBindingPruneReason, keepBindingsForUids?: readonly string[]): Promise<number>;
85
+ /**
86
+ * Delete the bindings of every AC `taskId` owns — the hard task-delete path
87
+ * (the AC rows go by `ON DELETE CASCADE` from `tasks_tasks`) and the
88
+ * delete-every-AC-row path.
89
+ *
90
+ * @param db - drizzle handle of the open accessor transaction
91
+ * @param taskId - task whose AC rows are all leaving
92
+ * @param reason - `task-removed` (default) or `ac-removed`
93
+ * @returns number of bindings removed
94
+ *
95
+ * @task T12790
96
+ */
97
+ export declare function pruneAcBindingsForTask(db: TasksDb, taskId: string, reason?: AcBindingPruneReason): Promise<number>;
98
+ /**
99
+ * Read every binding whose `ac_id` names no row of
100
+ * `tasks_task_acceptance_criteria`. Read-only.
101
+ *
102
+ * @param db - drizzle handle for the project tasks store
103
+ * @returns the dangling bindings, oldest first
104
+ *
105
+ * @task T12790
106
+ */
107
+ export declare function selectOrphanAcBindings(db: TasksDb): Promise<AcBindingRow[]>;
108
+ /**
109
+ * Infer the task that owned an orphan binding's AC.
110
+ *
111
+ * Only `satisfies:<source>-><target>#<ac>` atom ids name it (the target owns
112
+ * the AC). Every other atom shape yields {@link UNKNOWN_BINDING_OWNER}.
113
+ *
114
+ * @param binding - an orphan binding
115
+ * @returns owning task id, or `'unknown'`
116
+ *
117
+ * @task T12790
118
+ */
119
+ export declare function inferBindingOwnerTask(binding: AcBindingRow): string;
120
+ /**
121
+ * Remove every orphan binding, one audit row per inferred owning task.
122
+ *
123
+ * @param db - drizzle handle of the open accessor transaction
124
+ * @returns the removed bindings
125
+ *
126
+ * @task T12790
127
+ */
128
+ export declare function pruneOrphanAcBindings(db: TasksDb): Promise<AcBindingRow[]>;
129
+ /**
130
+ * Read the bindings that were pruned from ACs owned by `ownerTaskId`, from
131
+ * their {@link AC_BINDINGS_PRUNED_ACTION} audit rows. Read-only.
132
+ *
133
+ * This is where binding history lives once the rows leave
134
+ * `tasks_evidence_ac_bindings`; alias-drift detection reads it.
135
+ *
136
+ * @param db - drizzle handle for the project tasks store
137
+ * @param ownerTaskId - task that owned the pruned ACs
138
+ * @returns the pruned binding rows (malformed audit payloads are skipped)
139
+ *
140
+ * @task T12790
141
+ */
142
+ export declare function selectPrunedAcBindings(db: TasksDb, ownerTaskId: string): Promise<AcBindingRow[]>;
143
+ export {};
144
+ //# sourceMappingURL=ac-binding-prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac-binding-prune.d.ts","sourceRoot":"","sources":["../../src/store/ac-binding-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,kDAAkD;AAClD,KAAK,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AAEjD,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAEnF,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAED,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,YAAY,CAAC;AA2B/C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AA2CD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,OAAO,EACX,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE,oBAAoB,EAC5B,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,OAAO,CAAC,MAAM,CAAC,CA+CjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,OAAO,EACX,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,oBAAqC,GAC5C,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BjF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAGnE;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAahF;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,OAAO,EACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAyBzB"}
@@ -0,0 +1,293 @@
1
+ /**
2
+ * Evidence ↔ AC binding pruning — the single write path that removes
3
+ * `tasks_evidence_ac_bindings` rows (T12790).
4
+ *
5
+ * ## Why this exists
6
+ *
7
+ * The consolidated project schema (`drizzle-cleo-project/20260531000001`)
8
+ * declares NO foreign key from `tasks_evidence_ac_bindings.ac_id` to
9
+ * `tasks_task_acceptance_criteria.id`. The legacy table's `ON DELETE CASCADE`
10
+ * did not survive consolidation, so every AC row that left the store —
11
+ * through an AC edit ({@link import('../tasks/ac-table.js').applyAcPlan}) or a
12
+ * hard task delete (the AC rows cascade from `tasks_tasks`) — left its
13
+ * bindings dangling. Adding the FK back would need a table rebuild, so the
14
+ * accessor deletes the bindings explicitly instead, in the same transaction
15
+ * that removes the AC rows.
16
+ *
17
+ * ## History is kept in the audit log, not in the bindings table
18
+ *
19
+ * One reader depends on historical bindings: alias-drift detection in
20
+ * `satisfies-validator.ts` (ADR-079-r2 §3) compares an alias atom's current
21
+ * AC against the AC a previous `satisfies` binding recorded. A binding for a
22
+ * removed AC is meaningless to the coverage gate, but it is exactly the
23
+ * record that says "alias AC2 used to mean X". So before a binding is
24
+ * deleted, its full row is written to `tasks_audit_log` under
25
+ * {@link AC_BINDINGS_PRUNED_ACTION}, keyed by the task that owned the AC, and
26
+ * the drift detector reads those rows as well as the live table.
27
+ *
28
+ * Every function takes the drizzle handle of an ALREADY-OPEN accessor
29
+ * transaction; none of them opens or commits one.
30
+ *
31
+ * @task T12790
32
+ * @adr ADR-079-r2
33
+ */
34
+ import { and, eq, inArray, isNotNull, isNull, notInArray, or } from 'drizzle-orm';
35
+ import { tasksAuditLog } from './schema/cleo-project/audit.js';
36
+ import * as schema from './tasks-schema.js';
37
+ /** `tasks_audit_log.action` recorded for every batch of pruned bindings. */
38
+ export const AC_BINDINGS_PRUNED_ACTION = 'ac.bindings.pruned';
39
+ /** Owner key used when an orphan's owning task cannot be inferred. */
40
+ export const UNKNOWN_BINDING_OWNER = 'unknown';
41
+ /** Map a selected drizzle row to the contracts shape. */
42
+ function toBindingRow(r) {
43
+ return {
44
+ id: r.id,
45
+ evidenceAtomId: r.evidenceAtomId,
46
+ acId: r.acId,
47
+ bindingType: r.bindingType,
48
+ createdAt: r.createdAt,
49
+ };
50
+ }
51
+ const BINDING_COLUMNS = {
52
+ id: schema.evidenceAcBindings.id,
53
+ evidenceAtomId: schema.evidenceAcBindings.evidenceAtomId,
54
+ acId: schema.evidenceAcBindings.acId,
55
+ bindingType: schema.evidenceAcBindings.bindingType,
56
+ createdAt: schema.evidenceAcBindings.createdAt,
57
+ };
58
+ /**
59
+ * Generate a task audit log row id in the `log-<epoch>-<rand>` shape.
60
+ *
61
+ * Shared by the task accessor's `appendLog` and the binding prune below, so
62
+ * both write ids of one shape.
63
+ *
64
+ * @task T4837 · T12790
65
+ */
66
+ export function generateAuditLogId() {
67
+ const epoch = Math.floor(Date.now() / 1000);
68
+ const rand = Math.random().toString(36).slice(2, 8);
69
+ return `log-${epoch}-${rand}`;
70
+ }
71
+ /**
72
+ * Record `bindings` in the audit log, then delete them — one audit row for
73
+ * the batch. No-op when `bindings` is empty.
74
+ */
75
+ async function archiveAndDelete(db, ownerTaskId, reason, bindings) {
76
+ if (bindings.length === 0)
77
+ return;
78
+ const details = {
79
+ reason,
80
+ acIds: [...new Set(bindings.map((b) => b.acId))],
81
+ bindings,
82
+ };
83
+ await db
84
+ .insert(tasksAuditLog)
85
+ .values({
86
+ id: generateAuditLogId(),
87
+ timestamp: new Date().toISOString(),
88
+ action: AC_BINDINGS_PRUNED_ACTION,
89
+ taskId: ownerTaskId,
90
+ actor: 'system',
91
+ detailsJson: JSON.stringify(details),
92
+ beforeJson: null,
93
+ afterJson: null,
94
+ sessionId: null,
95
+ })
96
+ .run();
97
+ await db
98
+ .delete(schema.evidenceAcBindings)
99
+ .where(inArray(schema.evidenceAcBindings.id, bindings.map((b) => b.id)))
100
+ .run();
101
+ }
102
+ /**
103
+ * Delete every binding whose `ac_id` is in `acIds`, recording them first in
104
+ * the audit log under `ownerTaskId` (the task that owned those ACs).
105
+ *
106
+ * Call it in the same transaction that removes the AC rows, BEFORE or AFTER
107
+ * the AC delete — the bindings table has no FK, so order does not matter.
108
+ *
109
+ * @param db - drizzle handle of the open accessor transaction
110
+ * @param ownerTaskId - task that owned the removed ACs
111
+ * @param acIds - AC ids leaving the store
112
+ * @param reason - why they are leaving
113
+ * @returns number of bindings removed
114
+ *
115
+ * @task T12790
116
+ */
117
+ export async function pruneAcBindingsForAcIds(db, ownerTaskId, acIds, reason, keepBindingsForUids = []) {
118
+ if (acIds.length === 0)
119
+ return 0;
120
+ // T12341: a binding follows its criterion's uid (`ac_uid`) across edits.
121
+ // - The removed rows are read for THIS task only: AC ids derive from display
122
+ // ids, so one id can have named another task's criterion (T12799).
123
+ // - A binding that records a uid goes when that uid is one of the removed
124
+ // rows' and the same write does not carry it onto a new row (an edit keeps
125
+ // its evidence, stale until re-verified); a binding naming another
126
+ // criterion's uid stays, even when its recorded ac_id matches.
127
+ // - A binding without a uid (written before the fill) goes by its ac_id,
128
+ // unless that id's criterion carries its uid onto a new row.
129
+ const owned = await db
130
+ .select({ id: schema.taskAcceptanceCriteria.id, uid: schema.taskAcceptanceCriteria.uid })
131
+ .from(schema.taskAcceptanceCriteria)
132
+ .where(and(eq(schema.taskAcceptanceCriteria.taskId, ownerTaskId), inArray(schema.taskAcceptanceCriteria.id, acIds)))
133
+ .all();
134
+ const uidOfId = new Map(owned.map((r) => [r.id, r.uid]));
135
+ const uids = new Set(owned.map((r) => r.uid).filter((u) => u !== null));
136
+ const keep = new Set(keepBindingsForUids);
137
+ const rows = await db
138
+ .select({ ...BINDING_COLUMNS, acUid: schema.evidenceAcBindings.acUid })
139
+ .from(schema.evidenceAcBindings)
140
+ .where(uids.size > 0
141
+ ? or(inArray(schema.evidenceAcBindings.acId, acIds), inArray(schema.evidenceAcBindings.acUid, [...uids]))
142
+ : inArray(schema.evidenceAcBindings.acId, acIds))
143
+ .all();
144
+ const removed = new Set(acIds);
145
+ const bindings = rows
146
+ .filter((r) => {
147
+ if (r.acUid !== null)
148
+ return uids.has(r.acUid) && !keep.has(r.acUid);
149
+ if (!removed.has(r.acId))
150
+ return false;
151
+ const carried = uidOfId.get(r.acId);
152
+ return !(carried && keep.has(carried));
153
+ })
154
+ .map(toBindingRow);
155
+ await archiveAndDelete(db, ownerTaskId, reason, bindings);
156
+ return bindings.length;
157
+ }
158
+ /**
159
+ * Delete the bindings of every AC `taskId` owns — the hard task-delete path
160
+ * (the AC rows go by `ON DELETE CASCADE` from `tasks_tasks`) and the
161
+ * delete-every-AC-row path.
162
+ *
163
+ * @param db - drizzle handle of the open accessor transaction
164
+ * @param taskId - task whose AC rows are all leaving
165
+ * @param reason - `task-removed` (default) or `ac-removed`
166
+ * @returns number of bindings removed
167
+ *
168
+ * @task T12790
169
+ */
170
+ export async function pruneAcBindingsForTask(db, taskId, reason = 'task-removed') {
171
+ const acRows = await db
172
+ .select({ id: schema.taskAcceptanceCriteria.id })
173
+ .from(schema.taskAcceptanceCriteria)
174
+ .where(eq(schema.taskAcceptanceCriteria.taskId, taskId))
175
+ .all();
176
+ return pruneAcBindingsForAcIds(db, taskId, acRows.map((r) => r.id), reason);
177
+ }
178
+ /**
179
+ * Read every binding whose `ac_id` names no row of
180
+ * `tasks_task_acceptance_criteria`. Read-only.
181
+ *
182
+ * @param db - drizzle handle for the project tasks store
183
+ * @returns the dangling bindings, oldest first
184
+ *
185
+ * @task T12790
186
+ */
187
+ export async function selectOrphanAcBindings(db) {
188
+ const rows = await db
189
+ .select(BINDING_COLUMNS)
190
+ .from(schema.evidenceAcBindings)
191
+ .where(and(notInArray(schema.evidenceAcBindings.acId, db.select({ id: schema.taskAcceptanceCriteria.id }).from(schema.taskAcceptanceCriteria)),
192
+ // T12341: a binding recorded under an older id of a criterion that
193
+ // still exists (same `ac_uid`) is stale evidence, not an orphan.
194
+ or(isNull(schema.evidenceAcBindings.acUid), notInArray(schema.evidenceAcBindings.acUid, db
195
+ .select({ uid: schema.taskAcceptanceCriteria.uid })
196
+ .from(schema.taskAcceptanceCriteria)
197
+ .where(isNotNull(schema.taskAcceptanceCriteria.uid))))))
198
+ .orderBy(schema.evidenceAcBindings.createdAt, schema.evidenceAcBindings.id)
199
+ .all();
200
+ return rows.map(toBindingRow);
201
+ }
202
+ /**
203
+ * Infer the task that owned an orphan binding's AC.
204
+ *
205
+ * Only `satisfies:<source>-><target>#<ac>` atom ids name it (the target owns
206
+ * the AC). Every other atom shape yields {@link UNKNOWN_BINDING_OWNER}.
207
+ *
208
+ * @param binding - an orphan binding
209
+ * @returns owning task id, or `'unknown'`
210
+ *
211
+ * @task T12790
212
+ */
213
+ export function inferBindingOwnerTask(binding) {
214
+ const match = /^satisfies:[^>]*->([^#]+)#/.exec(binding.evidenceAtomId);
215
+ return match?.[1] ?? UNKNOWN_BINDING_OWNER;
216
+ }
217
+ /**
218
+ * Remove every orphan binding, one audit row per inferred owning task.
219
+ *
220
+ * @param db - drizzle handle of the open accessor transaction
221
+ * @returns the removed bindings
222
+ *
223
+ * @task T12790
224
+ */
225
+ export async function pruneOrphanAcBindings(db) {
226
+ const orphans = await selectOrphanAcBindings(db);
227
+ const byOwner = new Map();
228
+ for (const row of orphans) {
229
+ const owner = inferBindingOwnerTask(row);
230
+ const group = byOwner.get(owner);
231
+ if (group)
232
+ group.push(row);
233
+ else
234
+ byOwner.set(owner, [row]);
235
+ }
236
+ for (const [owner, group] of byOwner) {
237
+ await archiveAndDelete(db, owner, 'orphan-repair', group);
238
+ }
239
+ return orphans;
240
+ }
241
+ /** Narrow a parsed JSON value to an {@link AcBindingRow}. */
242
+ function isBindingRow(value) {
243
+ if (value === null)
244
+ return false;
245
+ const row = value;
246
+ return (typeof row.id === 'string' &&
247
+ typeof row.evidenceAtomId === 'string' &&
248
+ typeof row.acId === 'string' &&
249
+ (row.bindingType === 'direct' ||
250
+ row.bindingType === 'satisfies' ||
251
+ row.bindingType === 'coverage') &&
252
+ typeof row.createdAt === 'string');
253
+ }
254
+ /**
255
+ * Read the bindings that were pruned from ACs owned by `ownerTaskId`, from
256
+ * their {@link AC_BINDINGS_PRUNED_ACTION} audit rows. Read-only.
257
+ *
258
+ * This is where binding history lives once the rows leave
259
+ * `tasks_evidence_ac_bindings`; alias-drift detection reads it.
260
+ *
261
+ * @param db - drizzle handle for the project tasks store
262
+ * @param ownerTaskId - task that owned the pruned ACs
263
+ * @returns the pruned binding rows (malformed audit payloads are skipped)
264
+ *
265
+ * @task T12790
266
+ */
267
+ export async function selectPrunedAcBindings(db, ownerTaskId) {
268
+ const rows = await db
269
+ .select({ detailsJson: tasksAuditLog.detailsJson })
270
+ .from(tasksAuditLog)
271
+ .where(and(eq(tasksAuditLog.action, AC_BINDINGS_PRUNED_ACTION), eq(tasksAuditLog.taskId, ownerTaskId)))
272
+ .all();
273
+ const out = [];
274
+ for (const row of rows) {
275
+ if (typeof row.detailsJson !== 'string')
276
+ continue;
277
+ let parsed;
278
+ try {
279
+ parsed = JSON.parse(row.detailsJson);
280
+ }
281
+ catch {
282
+ continue;
283
+ }
284
+ const bindings = parsed?.bindings;
285
+ if (!Array.isArray(bindings))
286
+ continue;
287
+ for (const b of bindings)
288
+ if (isBindingRow(b))
289
+ out.push(b);
290
+ }
291
+ return out;
292
+ }
293
+ //# sourceMappingURL=ac-binding-prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac-binding-prune.js","sourceRoot":"","sources":["../../src/store/ac-binding-prune.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-registry-store.d.ts","sourceRoot":"","sources":["../../src/store/agent-registry-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwBhD;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,kBAAkB,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,cAAc,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,cAAuC,CAAC;AAMlF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAmBrD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3D;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,oCAAoC,IAAI,MAAM,CAE7D;AA0KD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC;IAC3D,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAkED;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAUzD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gCAAgC,IAAI,OAAO,CAAC;IAChE,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,IAAI,CAAC,CAwER;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,IAAI,CAAC,CAUR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,IAAI,YAAY,GAAG,IAAI,CAEpE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wCAAwC,IAAI,IAAI,CAG/D"}
1
+ {"version":3,"file":"agent-registry-store.d.ts","sourceRoot":"","sources":["../../src/store/agent-registry-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwBhD;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,kBAAkB,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,cAAc,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,cAAuC,CAAC;AAMlF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAmBrD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3D;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,oCAAoC,IAAI,MAAM,CAE7D;AA2KD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC;IAC3D,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAkED;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAUzD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gCAAgC,IAAI,OAAO,CAAC;IAChE,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,IAAI,CAAC,CAwER;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,IAAI,CAAC,CAUR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,IAAI,YAAY,GAAG,IAAI,CAEpE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wCAAwC,IAAI,IAAI,CAG/D"}
@@ -274,8 +274,9 @@ function writeAgentRegistrySchemaVersionSentinel(db) {
274
274
  value TEXT NOT NULL,
275
275
  updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
276
276
  );
277
- INSERT OR REPLACE INTO _agent_registry_meta (key, value, updated_at)
278
- VALUES ('schema_version', '${GLOBAL_AGENT_REGISTRY_SCHEMA_VERSION}', strftime('%s', 'now'));`);
277
+ INSERT INTO _agent_registry_meta (key, value, updated_at)
278
+ VALUES ('schema_version', '${GLOBAL_AGENT_REGISTRY_SCHEMA_VERSION}', strftime('%s', 'now'))
279
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at;`);
279
280
  }
280
281
  catch {
281
282
  // Non-fatal: if the meta write fails, ensure() still succeeds. Next
@@ -1 +1 @@
1
- {"version":3,"file":"agent-registry-store.js","sourceRoot":"","sources":["../../src/store/agent-registry-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-registry-store.js","sourceRoot":"","sources":["../../src/store/agent-registry-store.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@
5
5
  * timestamp, the per-type rotation, and the `.meta.json` sidecar that
6
6
  * `cleo backup list` reads.
7
7
  *
8
- * A leaf module (node:fs only), so store code that runs inside a domain bind
8
+ * A leaf module (node:fs, the logger, and a read-only node:sqlite read of the
9
+ * twin-collapse markers during rotation), so store code that runs inside a domain bind
9
10
  * can write an inventoried snapshot without importing `system/backup.ts`,
10
11
  * which imports the domain binders.
11
12
  *
@@ -31,11 +32,57 @@ export declare function formatBackupTimestamp(d: Date): string;
31
32
  * touches files produced by `vacuumIntoBackupAll` in the same directory.
32
33
  * Non-fatal — filesystem errors are silently swallowed.
33
34
  *
35
+ * A pinned backup, and a pre-collapse snapshot a twin-collapse marker of the
36
+ * project store references (pinned or not: 2026.9.21 wrote them without a
37
+ * pin), is never rotated and does not count toward the cap. When a marker
38
+ * cannot be read (malformed, or the store busy), which snapshot it names is
39
+ * unknown: every `migration` backup is kept and a warning is logged, while
40
+ * other backup types still rotate (pre-collapse snapshots are always
41
+ * `migration` backups). `cleo doctor` names an unreadable marker.
42
+ *
34
43
  * @task T9194
35
44
  * @task T10315 — added scoping predicate so rotation never reaches
36
45
  * vacuum-snapshot files that share `.cleo/backups/sqlite/`.
46
+ * @task T12727 — marker-referenced snapshots are never rotated.
47
+ * @task T12770 — an unreadable marker keeps only `migration` backups, and says so.
48
+ * @returns The files deleted, and why rotation kept backups past the cap.
37
49
  */
38
- export declare function rotateBackupDir(backupDir: string, maxSnapshots: number, backupType: string): void;
50
+ export declare function rotateBackupDir(backupDir: string, maxSnapshots: number, backupType: string): BackupRotation;
51
+ /** What {@link rotateBackupDir} did. */
52
+ export interface BackupRotation {
53
+ /** Backup files deleted. */
54
+ readonly deleted: readonly string[];
55
+ /**
56
+ * Why every backup of the type was kept past the cap: a marker that does
57
+ * not parse, or a store that could not be read (busy, corrupt). `null` when
58
+ * rotation ran.
59
+ */
60
+ readonly keptAll: 'marker-unreadable' | 'store-unreadable' | null;
61
+ /** The unreadable marker keys (`<kvTable>:twin_collapse:<table>`). */
62
+ readonly unreadable: readonly string[];
63
+ /** The error reading the store (for example `database is locked`), or `null`. */
64
+ readonly error: string | null;
65
+ }
66
+ /** The twin-collapse markers of a project store, as rotation reads them. */
67
+ export interface MarkerSnapshots {
68
+ /** File names of the pre-collapse snapshots the readable markers reference. */
69
+ readonly names: ReadonlySet<string>;
70
+ /** Marker keys whose value does not parse (`<kvTable>:twin_collapse:<table>`). */
71
+ readonly unreadable: readonly string[];
72
+ /** Why the store could not be read at all (busy, corrupt), or `null`. */
73
+ readonly error: string | null;
74
+ }
75
+ /**
76
+ * The pre-collapse snapshots the twin-collapse markers of the project store
77
+ * (`<backupDir>/../../cleo.db`) reference, and the markers that cannot be
78
+ * read. No store there: no markers.
79
+ *
80
+ * @param backupDir - `<root>/.cleo/backups/sqlite`.
81
+ * @returns The referenced file names, the unreadable marker keys, and any read error.
82
+ * @task T12727
83
+ * @task T12770
84
+ */
85
+ export declare function readMarkerSnapshots(backupDir: string): MarkerSnapshots;
39
86
  /** Contents of a `<backupId>.meta.json` sidecar, as `cleo backup list` reads it. */
40
87
  export interface BackupSidecar {
41
88
  /** `<type>-YYYYMMDD-HHmmss`. */
@@ -56,6 +103,10 @@ export interface BackupSidecar {
56
103
  readonly pinned?: boolean;
57
104
  /** Why it is pinned (shown by `cleo backup list`). */
58
105
  readonly pinnedReason?: string;
106
+ /** When an owner released the pin (T12767); rotation treats it as any backup. */
107
+ readonly releasedAt?: string;
108
+ /** Why it was released. */
109
+ readonly releasedReason?: string;
59
110
  }
60
111
  /**
61
112
  * Write a `.meta.json` sidecar atomically (tmp file, then rename).
@@ -87,4 +138,36 @@ export declare function isPinnedBackup(backupDir: string, fileName: string, back
87
138
  * @task T12535
88
139
  */
89
140
  export declare function pinBackup(snapshotPath: string, backupType: string, reason: string): boolean;
141
+ /**
142
+ * Release a backup's pin (T12767) so rotation treats it as any other backup:
143
+ * rewrites its sidecar with `pinned: false`, `releasedAt` and
144
+ * `releasedReason`, dropping `pinnedReason`. Writes the sidecar only, never
145
+ * the backup; creates the sidecar when there is none.
146
+ *
147
+ * @param snapshotPath - The backup file (`<dir>/<file>.<type>-<timestamp>`).
148
+ * @param backupType - Its backup type.
149
+ * @param reason - Why it is released.
150
+ * @returns The sidecar as written.
151
+ * @throws When the backup name does not carry `backupType`, or the write fails.
152
+ * @task T12767
153
+ */
154
+ export declare function unpinBackup(snapshotPath: string, backupType: string, reason: string): BackupSidecar;
155
+ /**
156
+ * Put back a sidecar exactly as it was before {@link unpinBackup} (or remove
157
+ * it when there was none). Best effort, for a release that is rolled back.
158
+ *
159
+ * @param snapshotPath - The backup file.
160
+ * @param backupType - Its backup type.
161
+ * @param previous - The sidecar before the release, or `null`.
162
+ * @task T12767
163
+ */
164
+ export declare function restoreBackupSidecar(snapshotPath: string, backupType: string, previous: BackupSidecar | null): void;
165
+ /**
166
+ * A backup's sidecar as read back, or `null` (missing, unreadable, malformed).
167
+ *
168
+ * @param snapshotPath - The backup file.
169
+ * @param backupType - Its backup type.
170
+ * @task T12767
171
+ */
172
+ export declare function readBackupSidecar(snapshotPath: string, backupType: string): BackupSidecar | null;
90
173
  //# sourceMappingURL=backup-sidecar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backup-sidecar.d.ts","sourceRoot":"","sources":["../../src/store/backup-sidecar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAMrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAqCjG;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kDAAkD;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAKlF;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAG/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAsB3F"}
1
+ {"version":3,"file":"backup-sidecar.d.ts","sourceRoot":"","sources":["../../src/store/backup-sidecar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAiBH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAMrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,cAAc,CA+DhB;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAClE,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAQD,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAyCtE;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kDAAkD;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAKlF;AA0CD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAG/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAsB3F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,aAAa,CAsBf;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,IAAI,CAUN;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAGhG"}