@cleocode/core 2026.6.6 → 2026.6.8

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 (168) hide show
  1. package/dist/db/index.d.ts +5 -1
  2. package/dist/db/index.d.ts.map +1 -1
  3. package/dist/db/index.js +5 -1
  4. package/dist/db/index.js.map +1 -1
  5. package/dist/dispatch/contracts/output-contracts.d.ts +36 -0
  6. package/dist/dispatch/contracts/output-contracts.d.ts.map +1 -0
  7. package/dist/dispatch/contracts/output-contracts.js +38 -0
  8. package/dist/dispatch/contracts/output-contracts.js.map +1 -0
  9. package/dist/dispatch/describe-operation.d.ts +98 -0
  10. package/dist/dispatch/describe-operation.d.ts.map +1 -0
  11. package/dist/dispatch/describe-operation.js +101 -0
  12. package/dist/dispatch/describe-operation.js.map +1 -0
  13. package/dist/docs/build-provenance-graph.d.ts +12 -0
  14. package/dist/docs/build-provenance-graph.d.ts.map +1 -1
  15. package/dist/docs/build-provenance-graph.js +52 -0
  16. package/dist/docs/build-provenance-graph.js.map +1 -1
  17. package/dist/docs/docs-read-model.d.ts +40 -0
  18. package/dist/docs/docs-read-model.d.ts.map +1 -1
  19. package/dist/docs/docs-read-model.js +29 -0
  20. package/dist/docs/docs-read-model.js.map +1 -1
  21. package/dist/docs/export-document.js +1794 -1235
  22. package/dist/docs/export-document.js.map +3 -3
  23. package/dist/docs/index.d.ts +4 -0
  24. package/dist/docs/index.d.ts.map +1 -1
  25. package/dist/docs/index.js +2 -0
  26. package/dist/docs/index.js.map +1 -1
  27. package/dist/docs/read-doc.d.ts +60 -0
  28. package/dist/docs/read-doc.d.ts.map +1 -0
  29. package/dist/docs/read-doc.js +188 -0
  30. package/dist/docs/read-doc.js.map +1 -0
  31. package/dist/docs/wikilinks.d.ts +119 -0
  32. package/dist/docs/wikilinks.d.ts.map +1 -0
  33. package/dist/docs/wikilinks.js +217 -0
  34. package/dist/docs/wikilinks.js.map +1 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/internal.d.ts +2 -0
  40. package/dist/internal.d.ts.map +1 -1
  41. package/dist/internal.js +6 -0
  42. package/dist/internal.js.map +1 -1
  43. package/dist/llm/index.d.ts +1 -3
  44. package/dist/llm/index.d.ts.map +1 -1
  45. package/dist/llm/index.js +1 -2
  46. package/dist/llm/index.js.map +1 -1
  47. package/dist/llm/model-metadata.d.ts +14 -0
  48. package/dist/llm/model-metadata.d.ts.map +1 -1
  49. package/dist/llm/model-metadata.js +23 -0
  50. package/dist/llm/model-metadata.js.map +1 -1
  51. package/dist/llm/model-runner.d.ts.map +1 -1
  52. package/dist/llm/model-runner.js +104 -74
  53. package/dist/llm/model-runner.js.map +1 -1
  54. package/dist/llm/plugin-facade.js +1947 -1364
  55. package/dist/llm/plugin-facade.js.map +3 -3
  56. package/dist/llm/provider-registry/builtin/anthropic.d.ts.map +1 -1
  57. package/dist/llm/provider-registry/builtin/anthropic.js +4 -0
  58. package/dist/llm/provider-registry/builtin/anthropic.js.map +1 -1
  59. package/dist/llm/provider-registry/builtin/gemini.d.ts.map +1 -1
  60. package/dist/llm/provider-registry/builtin/gemini.js +4 -0
  61. package/dist/llm/provider-registry/builtin/gemini.js.map +1 -1
  62. package/dist/llm/provider-registry/builtin/ollama.d.ts.map +1 -1
  63. package/dist/llm/provider-registry/builtin/ollama.js +4 -0
  64. package/dist/llm/provider-registry/builtin/ollama.js.map +1 -1
  65. package/dist/llm/provider-registry/builtin/openai.d.ts.map +1 -1
  66. package/dist/llm/provider-registry/builtin/openai.js +6 -0
  67. package/dist/llm/provider-registry/builtin/openai.js.map +1 -1
  68. package/dist/llm/transports/index.d.ts +5 -3
  69. package/dist/llm/transports/index.d.ts.map +1 -1
  70. package/dist/llm/transports/index.js +5 -2
  71. package/dist/llm/transports/index.js.map +1 -1
  72. package/dist/reconciliation/reconciliation-engine.d.ts.map +1 -1
  73. package/dist/reconciliation/reconciliation-engine.js +3 -0
  74. package/dist/reconciliation/reconciliation-engine.js.map +1 -1
  75. package/dist/release/plan.d.ts +27 -0
  76. package/dist/release/plan.d.ts.map +1 -1
  77. package/dist/release/plan.js +36 -2
  78. package/dist/release/plan.js.map +1 -1
  79. package/dist/release/provenance-fk.d.ts +74 -0
  80. package/dist/release/provenance-fk.d.ts.map +1 -0
  81. package/dist/release/provenance-fk.js +122 -0
  82. package/dist/release/provenance-fk.js.map +1 -0
  83. package/dist/release/reconcile.d.ts +2 -53
  84. package/dist/release/reconcile.d.ts.map +1 -1
  85. package/dist/release/reconcile.js +13 -93
  86. package/dist/release/reconcile.js.map +1 -1
  87. package/dist/sticky/convert.d.ts.map +1 -1
  88. package/dist/sticky/convert.js +3 -0
  89. package/dist/sticky/convert.js.map +1 -1
  90. package/dist/store/dual-scope-db.d.ts +83 -0
  91. package/dist/store/dual-scope-db.d.ts.map +1 -1
  92. package/dist/store/dual-scope-db.js +135 -6
  93. package/dist/store/dual-scope-db.js.map +1 -1
  94. package/dist/store/exodus/abort-events.d.ts +116 -0
  95. package/dist/store/exodus/abort-events.d.ts.map +1 -0
  96. package/dist/store/exodus/abort-events.js +130 -0
  97. package/dist/store/exodus/abort-events.js.map +1 -0
  98. package/dist/store/exodus/column-transforms.d.ts +35 -8
  99. package/dist/store/exodus/column-transforms.d.ts.map +1 -1
  100. package/dist/store/exodus/column-transforms.js +47 -13
  101. package/dist/store/exodus/column-transforms.js.map +1 -1
  102. package/dist/store/exodus/count-parity.d.ts +71 -0
  103. package/dist/store/exodus/count-parity.d.ts.map +1 -0
  104. package/dist/store/exodus/count-parity.js +124 -0
  105. package/dist/store/exodus/count-parity.js.map +1 -0
  106. package/dist/store/exodus/health.d.ts +70 -0
  107. package/dist/store/exodus/health.d.ts.map +1 -0
  108. package/dist/store/exodus/health.js +130 -0
  109. package/dist/store/exodus/health.js.map +1 -0
  110. package/dist/store/exodus/index.d.ts +4 -0
  111. package/dist/store/exodus/index.d.ts.map +1 -1
  112. package/dist/store/exodus/index.js +4 -0
  113. package/dist/store/exodus/index.js.map +1 -1
  114. package/dist/store/exodus/migrate.d.ts.map +1 -1
  115. package/dist/store/exodus/migrate.js +98 -31
  116. package/dist/store/exodus/migrate.js.map +1 -1
  117. package/dist/store/exodus/plan.d.ts +48 -4
  118. package/dist/store/exodus/plan.d.ts.map +1 -1
  119. package/dist/store/exodus/plan.js +67 -9
  120. package/dist/store/exodus/plan.js.map +1 -1
  121. package/dist/store/exodus/seal.d.ts +69 -0
  122. package/dist/store/exodus/seal.d.ts.map +1 -0
  123. package/dist/store/exodus/seal.js +73 -0
  124. package/dist/store/exodus/seal.js.map +1 -0
  125. package/dist/store/exodus/types.d.ts +24 -1
  126. package/dist/store/exodus/types.d.ts.map +1 -1
  127. package/dist/store/exodus/types.js.map +1 -1
  128. package/dist/store/exodus/verify-migration.d.ts.map +1 -1
  129. package/dist/store/exodus/verify-migration.js +53 -26
  130. package/dist/store/exodus/verify-migration.js.map +1 -1
  131. package/dist/store/repair-malformed-dbs.d.ts +87 -0
  132. package/dist/store/repair-malformed-dbs.d.ts.map +1 -0
  133. package/dist/store/repair-malformed-dbs.js +188 -0
  134. package/dist/store/repair-malformed-dbs.js.map +1 -0
  135. package/dist/store/schema/attachments.d.ts +133 -0
  136. package/dist/store/schema/attachments.d.ts.map +1 -1
  137. package/dist/store/schema/attachments.js +63 -0
  138. package/dist/store/schema/attachments.js.map +1 -1
  139. package/dist/tasks/add.d.ts +13 -0
  140. package/dist/tasks/add.d.ts.map +1 -1
  141. package/dist/tasks/add.js +50 -18
  142. package/dist/tasks/add.js.map +1 -1
  143. package/dist/tasks/archive.d.ts.map +1 -1
  144. package/dist/tasks/archive.js +12 -7
  145. package/dist/tasks/archive.js.map +1 -1
  146. package/dist/tasks/child-disposition.d.ts +66 -0
  147. package/dist/tasks/child-disposition.d.ts.map +1 -0
  148. package/dist/tasks/child-disposition.js +80 -0
  149. package/dist/tasks/child-disposition.js.map +1 -0
  150. package/dist/tasks/delete-preview.js +1 -1
  151. package/dist/tasks/delete-preview.js.map +1 -1
  152. package/dist/tasks/deletion-strategy.d.ts +21 -3
  153. package/dist/tasks/deletion-strategy.d.ts.map +1 -1
  154. package/dist/tasks/deletion-strategy.js +61 -15
  155. package/dist/tasks/deletion-strategy.js.map +1 -1
  156. package/dist/tasks/engine-wrap.d.ts +8 -0
  157. package/dist/tasks/engine-wrap.d.ts.map +1 -1
  158. package/dist/tasks/engine-wrap.js +22 -9
  159. package/dist/tasks/engine-wrap.js.map +1 -1
  160. package/dist/tasks/update.d.ts.map +1 -1
  161. package/dist/tasks/update.js +12 -0
  162. package/dist/tasks/update.js.map +1 -1
  163. package/migrations/drizzle-tasks/20260605000001_t11826-docs-wikilinks/migration.sql +110 -0
  164. package/package.json +12 -12
  165. package/dist/llm/transports/openai.d.ts +0 -181
  166. package/dist/llm/transports/openai.d.ts.map +0 -1
  167. package/dist/llm/transports/openai.js +0 -645
  168. package/dist/llm/transports/openai.js.map +0 -1
@@ -0,0 +1,69 @@
1
+ /**
2
+ * `cleo exodus seal` core — certify an already-migrated install (T11837).
3
+ *
4
+ * Some installs were cut over to the consolidated `cleo.db` BEFORE the archive +
5
+ * completion-marker subsystem (T11777) existed: their data is fully in `cleo.db`
6
+ * but the legacy source DBs were never archived and no `exodus-complete` marker
7
+ * was written, so `exodus-on-open` keeps re-arming (the ~34s-per-command tax)
8
+ * unless muzzled by `CLEO_DISABLE_EXODUS_ON_OPEN`. `cleo exodus migrate` would
9
+ * complete the archival — but it routes through the heavy `verifyMigration`
10
+ * digest, which OOMs on a 1.7 GB-class legacy `brain.db`.
11
+ *
12
+ * `sealExodus` closes the loop WITHOUT a destructive re-migrate and WITHOUT the
13
+ * OOM digest: it gates on the memory-safe COUNT(*) deficit check
14
+ * ({@link computeCountParity}) — the SAME gate (`target >= source`) the archive
15
+ * path enforces — and, only when no rows are missing, archives the consumed
16
+ * legacy sources (reversible move) and writes the per-scope completion marker.
17
+ *
18
+ * @task T11837 (fleet-flow surface — seal an already-migrated install)
19
+ * @epic T11833 (EP-EXODUS-FLEET-HARDENING)
20
+ * @saga T11242 (SG-DB-SUBSTRATE-V2)
21
+ */
22
+ import { type CountParityResult } from './count-parity.js';
23
+ import type { ExodusPlan, ExodusScope } from './types.js';
24
+ /** Scope selector for {@link sealExodus}. */
25
+ export type SealScopeArg = ExodusScope | 'both';
26
+ /** Per-scope outcome of a seal. */
27
+ export interface SealScopeOutcome {
28
+ /** Scope certified. */
29
+ readonly scope: ExodusScope;
30
+ /** `true` if a completion marker already existed (re-seal is idempotent). */
31
+ readonly alreadySealed: boolean;
32
+ /** Per-source archive outcomes for this scope. */
33
+ readonly archived: ReadonlyArray<{
34
+ readonly name: string;
35
+ readonly action: 'archived' | 'absent';
36
+ readonly archivedTo: string | null;
37
+ }>;
38
+ /** Absolute path of the completion marker written. */
39
+ readonly markerPath: string;
40
+ }
41
+ /** Result of {@link sealExodus}. */
42
+ export interface SealResult {
43
+ /** `true` when the seal proceeded; `false` when refused on a parity deficit. */
44
+ readonly ok: boolean;
45
+ /** Populated when `ok === false`: why the seal was refused. */
46
+ readonly refusedReason?: string;
47
+ /** The COUNT(*)-only parity sweep that gated the seal. */
48
+ readonly parity: CountParityResult;
49
+ /** Per-scope outcomes (empty when refused). */
50
+ readonly scopes: readonly SealScopeOutcome[];
51
+ }
52
+ /**
53
+ * Seal one or more scopes of an already-migrated install: gate on COUNT(*) parity
54
+ * (no digest), then archive the consumed legacy sources + write the completion
55
+ * marker. Refuses (archives nothing) if ANY table has a deficit — the data is not
56
+ * fully in `cleo.db` and the operator must run `cleo exodus migrate` first.
57
+ *
58
+ * Idempotent + reversible: archiving is a `rename` (never delete) and a re-seal
59
+ * over an already-sealed scope simply refreshes the marker.
60
+ *
61
+ * @param plan - The exodus plan (`buildExodusPlan(cwd)`).
62
+ * @param scopeArg - Which scope(s) to seal.
63
+ * @param cwd - Working directory used to resolve the project dir.
64
+ * @returns A {@link SealResult}.
65
+ *
66
+ * @task T11837
67
+ */
68
+ export declare function sealExodus(plan: ExodusPlan, scopeArg: SealScopeArg, cwd: string | undefined): SealResult;
69
+ //# sourceMappingURL=seal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seal.d.ts","sourceRoot":"","sources":["../../../src/store/exodus/seal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,KAAK,iBAAiB,EAAsB,MAAM,mBAAmB,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI1D,6CAA6C;AAC7C,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAEhD,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;QACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KACpC,CAAC,CAAC;IACH,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAOD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,UAAU,CAqCZ"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * `cleo exodus seal` core — certify an already-migrated install (T11837).
3
+ *
4
+ * Some installs were cut over to the consolidated `cleo.db` BEFORE the archive +
5
+ * completion-marker subsystem (T11777) existed: their data is fully in `cleo.db`
6
+ * but the legacy source DBs were never archived and no `exodus-complete` marker
7
+ * was written, so `exodus-on-open` keeps re-arming (the ~34s-per-command tax)
8
+ * unless muzzled by `CLEO_DISABLE_EXODUS_ON_OPEN`. `cleo exodus migrate` would
9
+ * complete the archival — but it routes through the heavy `verifyMigration`
10
+ * digest, which OOMs on a 1.7 GB-class legacy `brain.db`.
11
+ *
12
+ * `sealExodus` closes the loop WITHOUT a destructive re-migrate and WITHOUT the
13
+ * OOM digest: it gates on the memory-safe COUNT(*) deficit check
14
+ * ({@link computeCountParity}) — the SAME gate (`target >= source`) the archive
15
+ * path enforces — and, only when no rows are missing, archives the consumed
16
+ * legacy sources (reversible move) and writes the per-scope completion marker.
17
+ *
18
+ * @task T11837 (fleet-flow surface — seal an already-migrated install)
19
+ * @epic T11833 (EP-EXODUS-FLEET-HARDENING)
20
+ * @saga T11242 (SG-DB-SUBSTRATE-V2)
21
+ */
22
+ import { getLogger } from '../../logger.js';
23
+ import { archiveSourceDb, hasExodusCompleteMarker, writeExodusCompleteMarker } from './archive.js';
24
+ import { computeCountParity } from './count-parity.js';
25
+ const log = getLogger('exodus-seal');
26
+ /** Resolve a {@link SealScopeArg} to the concrete scopes it covers. */
27
+ function resolveScopes(arg) {
28
+ return arg === 'both' ? ['project', 'global'] : [arg];
29
+ }
30
+ /**
31
+ * Seal one or more scopes of an already-migrated install: gate on COUNT(*) parity
32
+ * (no digest), then archive the consumed legacy sources + write the completion
33
+ * marker. Refuses (archives nothing) if ANY table has a deficit — the data is not
34
+ * fully in `cleo.db` and the operator must run `cleo exodus migrate` first.
35
+ *
36
+ * Idempotent + reversible: archiving is a `rename` (never delete) and a re-seal
37
+ * over an already-sealed scope simply refreshes the marker.
38
+ *
39
+ * @param plan - The exodus plan (`buildExodusPlan(cwd)`).
40
+ * @param scopeArg - Which scope(s) to seal.
41
+ * @param cwd - Working directory used to resolve the project dir.
42
+ * @returns A {@link SealResult}.
43
+ *
44
+ * @task T11837
45
+ */
46
+ export function sealExodus(plan, scopeArg, cwd) {
47
+ // Memory-safe gate — NEVER the heavy verifyMigration digest (this whole epic
48
+ // exists to avoid OOMing it on a 1.7 GB-class legacy brain.db).
49
+ const parity = computeCountParity(plan.sources, plan.projectDbPath, plan.globalDbPath);
50
+ if (!parity.ok) {
51
+ const refusedReason = `Refusing to seal: ${parity.deficits.length} table(s) have FEWER rows in the ` +
52
+ `consolidated cleo.db than the legacy source — the data is NOT fully migrated. Run ` +
53
+ `\`cleo exodus migrate\` first. Deficits: ${parity.deficits
54
+ .map((d) => `${d.targetTable}(${d.sourceCount}→${d.targetCount})`)
55
+ .join(', ')}`;
56
+ log.error({ deficits: parity.deficits.length }, `exodus seal refused — ${refusedReason}`);
57
+ return { ok: false, refusedReason, parity, scopes: [] };
58
+ }
59
+ const outcomes = [];
60
+ for (const scope of resolveScopes(scopeArg)) {
61
+ const alreadySealed = hasExodusCompleteMarker(scope, cwd);
62
+ const scopeSources = plan.sources.filter((s) => s.targetScope === scope);
63
+ const archived = scopeSources.map((s) => {
64
+ const r = archiveSourceDb(s, cwd);
65
+ return { name: r.name, action: r.action, archivedTo: r.archivedTo };
66
+ });
67
+ const markerPath = writeExodusCompleteMarker(scope, scopeSources.map((s) => s.name), cwd);
68
+ log.info({ scope, alreadySealed, archived: archived.filter((a) => a.action === 'archived').length }, `exodus seal: scope '${scope}' certified (count-parity verified, ${parity.checked} tables)`);
69
+ outcomes.push({ scope, alreadySealed, archived, markerPath });
70
+ }
71
+ return { ok: true, parity, scopes: outcomes };
72
+ }
73
+ //# sourceMappingURL=seal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seal.js","sourceRoot":"","sources":["../../../src/store/exodus/seal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACnG,OAAO,EAA0B,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG/E,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;AAiCrC,uEAAuE;AACvE,SAAS,aAAa,CAAC,GAAiB;IACtC,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CACxB,IAAgB,EAChB,QAAsB,EACtB,GAAuB;IAEvB,6EAA6E;IAC7E,gEAAgE;IAChE,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAEvF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,aAAa,GACjB,qBAAqB,MAAM,CAAC,QAAQ,CAAC,MAAM,mCAAmC;YAC9E,oFAAoF;YACpF,4CAA4C,MAAM,CAAC,QAAQ;iBACxD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC;iBACjE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,yBAAyB,aAAa,EAAE,CAAC,CAAC;QAC1F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,yBAAyB,CAC1C,KAAK,EACL,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAC/B,GAAG,CACJ,CAAC;QACF,GAAG,CAAC,IAAI,CACN,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,EAAE,EAC1F,uBAAuB,KAAK,uCAAuC,MAAM,CAAC,OAAO,UAAU,CAC5F,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAChD,CAAC"}
@@ -97,10 +97,33 @@ export interface ExodusPlan {
97
97
  readonly sources: LegacyDbDescriptor[];
98
98
  /** Combined size of all source DB files in bytes. */
99
99
  readonly totalSourceBytes: number;
100
+ /**
101
+ * Size of the SINGLE largest source DB file in bytes. The right-sized disk
102
+ * preflight is driven by this (the staging copy only ever holds one source at
103
+ * a time before its lock is released), NOT by {@link totalSourceBytes} (T11838).
104
+ */
105
+ readonly largestSourceBytes: number;
106
+ /**
107
+ * Right-sized free-disk requirement in bytes:
108
+ * `STAGING_HEADROOM_FACTOR * largestSourceBytes + consolidatedEstimate`, where
109
+ * `consolidatedEstimate ≈ totalSourceBytes` (all source rows land in the
110
+ * consolidated cleo.db). Replaces the historical `3 * totalSourceBytes`
111
+ * over-estimate that blocked large-fleet migrations (T11838).
112
+ */
113
+ readonly requiredBytes: number;
100
114
  /** Available disk bytes on the target filesystem. */
101
115
  readonly availableBytes: number;
102
- /** Whether the free-disk pre-flight passes. */
116
+ /** Whether the right-sized free-disk pre-flight passes. */
103
117
  readonly diskPreflight: boolean;
118
+ /**
119
+ * Per-source byte threshold above which the full {@link LegacyDbDescriptor}
120
+ * staging `copyFileSync` backup is SKIPPED (T11838). The legacy source is
121
+ * archived (renamed into `_archive/`), not deleted, on success — so a redundant
122
+ * full-file backup of a large source only doubles its disk + I/O cost. Sources
123
+ * at or below this threshold still get the staging backup (cheap rollback
124
+ * safety for the common small-fleet case).
125
+ */
126
+ readonly stagingCopyThresholdBytes: number;
104
127
  /** Absolute path to the staging directory. */
105
128
  readonly stagingDir: string;
106
129
  /** Whether a staging directory from a previous run was found (resume mode). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/store/exodus/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9E,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,yCAAyC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,wCAAwC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IACvC,qDAAqD;IACrD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,kDAAkD;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,qEAAqE;IACrE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,oEAAoE;IACpE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzF;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,EAAG,wCAAiD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/store/exodus/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/store/exodus/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqKH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,wCAAiD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/store/exodus/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4LH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,wCAAiD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify-migration.d.ts","sourceRoot":"","sources":["../../../src/store/exodus/verify-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAKH,OAAO,KAAK,EAIV,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA8hBlE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,qBAAqB,CA+RvB"}
1
+ {"version":3,"file":"verify-migration.d.ts","sourceRoot":"","sources":["../../../src/store/exodus/verify-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAKH,OAAO,KAAK,EAIV,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAolBlE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,qBAAqB,CA+RvB"}
@@ -45,7 +45,7 @@ import { createRequire } from 'node:module';
45
45
  import { MIGRATION_ENUM_DRIFT_SAMPLE_LIMIT } from '@cleocode/contracts';
46
46
  import { getLogger } from '../../logger.js';
47
47
  import { openCleoDbSnapshot } from '../open-cleo-db.js';
48
- import { buildDigestExpr, detectIsoGlobColumns } from './column-transforms.js';
48
+ import { buildDigestExpr, detectIsoGlobColumns, } from './column-transforms.js';
49
49
  import { resolveConsolidatedTableName, resolveTableTargetScope } from './table-name-map.js';
50
50
  const log = getLogger('verify-migration');
51
51
  const _require = createRequire(import.meta.url);
@@ -109,6 +109,22 @@ function orderByClause(db, tableName) {
109
109
  * @returns `{ count, hash }` for the table.
110
110
  */
111
111
  function computeTableDigest(db, tableName, columns, transform) {
112
+ // Row count — a cheap, set-based `COUNT(*)` that never materialises rows.
113
+ //
114
+ // This is the value the data-continuity gate ({@link isDataContinuityOk})
115
+ // consumes to decide deficit/surplus, so it MUST stay independent of the heavy
116
+ // content digest below: the migrate-time verify can then pass/fail on counts
117
+ // alone even when the digest is large or streaming-slow (T11834).
118
+ let count = 0;
119
+ try {
120
+ const row = db.prepare(`SELECT COUNT(*) AS c FROM "${tableName}"`).get();
121
+ count = Number(row?.c ?? 0);
122
+ }
123
+ catch (err) {
124
+ const msg = err instanceof Error ? err.message : String(err);
125
+ log.warn({ tableName, err: msg }, 'computeTableDigest: COUNT(*) failed (possibly a virtual/FTS table) — treating as 0 rows');
126
+ return { count: 0, hash: '' };
127
+ }
112
128
  const { createHash } = _require('node:crypto');
113
129
  const hasher = createHash('sha256');
114
130
  const orderBy = orderByClause(db, tableName);
@@ -121,7 +137,8 @@ function computeTableDigest(db, tableName, columns, transform) {
121
137
  // SOURCE side: route the raw value through the SAME transform migrate
122
138
  // applied, aliased back to `c` so the row key matches the target side.
123
139
  const srcType = transform.srcTypeByCol.get(c) ?? '';
124
- const expr = buildDigestExpr(transform.targetTableName, c, srcType, transform.isoGlobCols);
140
+ const tgtCol = transform.tgtColByCol.get(c);
141
+ const expr = buildDigestExpr(transform.targetTableName, c, srcType, transform.isoGlobCols, tgtCol);
125
142
  return `${expr} AS "${c}"`;
126
143
  })
127
144
  .join(', ');
@@ -129,33 +146,34 @@ function computeTableDigest(db, tableName, columns, transform) {
129
146
  else {
130
147
  selectClause = '*';
131
148
  }
132
- let rows;
149
+ // Content digest — STREAMED row-by-row through the statement iterator so peak
150
+ // heap stays bounded by ONE row regardless of table size (T11834).
151
+ //
152
+ // The prior implementation called `.all()`, materialising the ENTIRE table
153
+ // (SOURCE *and* TARGET) into a JS array — a multi-hundred-MB-to-GB allocation
154
+ // on a 697K-row / 1.7 GB-class table (e.g. `brain_weight_history`) that OOM'd
155
+ // the migrate-time verify and rolled back an otherwise-lossless cutover. The
156
+ // digest is a NON-FATAL diagnostic; the gate is driven by the `COUNT(*)` parity
157
+ // above + introduced-FK orphans, never this hash.
158
+ //
159
+ // Canonicalise each row's property order before hashing (T11782 · FIX A): pass
160
+ // the SORTED key array as `JSON.stringify`'s replacer so identical rows digest
161
+ // identically regardless of the driver's column-materialisation order on the
162
+ // two snapshots (otherwise a false `hashMatch === false`).
133
163
  try {
134
- rows = db
135
- .prepare(`SELECT ${selectClause} FROM "${tableName}" ORDER BY ${orderBy}`)
136
- .all();
164
+ const stmt = db.prepare(`SELECT ${selectClause} FROM "${tableName}" ORDER BY ${orderBy}`);
165
+ for (const row of stmt.iterate()) {
166
+ const rowObj = row;
167
+ hasher.update(JSON.stringify(rowObj, Object.keys(rowObj).sort()));
168
+ }
137
169
  }
138
170
  catch (err) {
139
171
  const msg = err instanceof Error ? err.message : String(err);
140
- log.warn({ tableName, err: msg }, 'computeTableDigest: SELECT failed (possibly a virtual/FTS table) — treating as 0 rows');
141
- return { count: 0, hash: '' };
142
- }
143
- // Canonicalise each row's property order before hashing (T11782 · FIX A).
144
- //
145
- // `JSON.stringify(row)` serialises object keys in the SQLite driver's row
146
- // property-insertion order, which is NOT guaranteed identical between the
147
- // SOURCE snapshot and the TARGET snapshot for the same logical row (the two
148
- // handles may materialise columns in a different order). Identical data would
149
- // then digest to a DIFFERENT hash, producing a false `hashMatch === false`
150
- // and — historically — false-negative aborts. Passing the SORTED key array as
151
- // `JSON.stringify`'s `replacer` forces a canonical, order-independent
152
- // serialisation so identical rows always digest identically.
153
- for (const row of rows) {
154
- const rowObj = row;
155
- hasher.update(JSON.stringify(rowObj, Object.keys(rowObj).sort()));
172
+ log.warn({ tableName, err: msg }, 'computeTableDigest: streamed SELECT failed (possibly a virtual/FTS table) — digest skipped (COUNT(*) parity still enforced)');
173
+ return { count, hash: '' };
156
174
  }
157
175
  return {
158
- count: rows.length,
176
+ count,
159
177
  hash: hasher.digest('hex').slice(0, 32),
160
178
  };
161
179
  }
@@ -184,8 +202,10 @@ function sharedColumnsSorted(srcDb, srcTable, tgtDb, tgtTable) {
184
202
  }
185
203
  /**
186
204
  * Build the source-side {@link DigestTransformSpec} for a source→target table
187
- * pair: the source column type affinities and the target's ISO-GLOB columns,
188
- * keyed by the consolidated target name (the transform lookup key).
205
+ * pair: the source column type affinities, the target's ISO-GLOB columns, and
206
+ * the target column metadata (NOT-NULL flag + default + affinity), keyed by the
207
+ * consolidated target name (the transform lookup key). The target metadata
208
+ * drives the NULL→NOT-NULL-default `COALESCE` mirroring (T11836).
189
209
  *
190
210
  * Returns `undefined` (raw digest, no transform) when the source `PRAGMA
191
211
  * table_info` cannot be read — best-effort, biased to surfacing a real
@@ -201,7 +221,14 @@ function buildSourceDigestTransform(srcDb, srcTable, tgtDb, targetTableName) {
201
221
  try {
202
222
  const srcTypeByCol = new Map(srcDb.prepare(`PRAGMA table_info("${srcTable}")`).all().map((r) => [r.name, r.type]));
203
223
  const isoGlobCols = detectIsoGlobColumns(tgtDb, targetTableName);
204
- return { targetTableName, srcTypeByCol, isoGlobCols };
224
+ // Target column metadata (notnull + dflt_value + type) — drives the
225
+ // NULL→NOT-NULL-default COALESCE migrate applies, so a stored type default
226
+ // for a NULL source value digests as a MATCH (T11836).
227
+ const tgtColByCol = new Map(tgtDb.prepare(`PRAGMA table_info("${targetTableName}")`).all().map((r) => [
228
+ r.name,
229
+ { notnull: r.notnull, dflt_value: r.dflt_value, type: r.type },
230
+ ]));
231
+ return { targetTableName, srcTypeByCol, isoGlobCols, tgtColByCol };
205
232
  }
206
233
  catch {
207
234
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"verify-migration.js","sourceRoot":"","sources":["../../../src/store/exodus/verify-migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-migration.js","sourceRoot":"","sources":["../../../src/store/exodus/verify-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * `cleo doctor repair` orchestrator — detect malformed CLEO databases and
3
+ * restore each from its freshest validated snapshot (T11829 · DHQ-060).
4
+ *
5
+ * ## Why this exists
6
+ *
7
+ * The corruption-resilience pipeline ALREADY existed before T11829:
8
+ *
9
+ * - {@link recoverMalformedDb} (quarantine → snapshot-restore → `quick_check`),
10
+ * - `autoRecoverFromBackup` (catches `"database disk image is malformed"` at
11
+ * open and restores the freshest VACUUM snapshot), and
12
+ * - the operator verb `cleo backup recover <role>` ({@link runBackupRecover}).
13
+ *
14
+ * The ONLY gap vs the DHQ-060 ask was a discoverable `cleo doctor` entry point
15
+ * that DETECTS corruption across the fleet and repairs only what is broken. This
16
+ * module is that orchestrator — it adds NO new recovery logic. It probes each
17
+ * role's live DB with `PRAGMA quick_check` (the same probe the pipeline runs on
18
+ * snapshot candidates, via {@link probeSnapshot}) and delegates every actual
19
+ * repair to {@link runBackupRecover} → {@link recoverMalformedDb}.
20
+ *
21
+ * ## WAL-specific corruption is covered
22
+ *
23
+ * A torn WAL frame surfaces as `"database disk image is malformed"` and makes
24
+ * `PRAGMA quick_check` return a non-`ok` result — so {@link probeSnapshot}
25
+ * detects it. The quarantine step ({@link quarantineCorruptDb}) already moves the
26
+ * `-wal`/`-shm` sidecars alongside the main file, so the WAL case is fully
27
+ * handled by the existing pipeline; this orchestrator does not need to special-case it.
28
+ *
29
+ * @module
30
+ * @task T11829 (DHQ-060 — `cleo doctor repair` entry point over the recovery pipeline)
31
+ * @epic T11833
32
+ * @saga T11242 (SG-DB-SUBSTRATE-V2)
33
+ * @see packages/core/src/store/recover-malformed-db.ts — the recovery pipeline
34
+ * @see packages/core/src/store/backup-recover.ts — `cleo backup recover <role>` wrapper
35
+ */
36
+ import { type DbRole, type DoctorRepairResult } from '@cleocode/contracts';
37
+ import { type RecoveryLogger } from './recover-malformed-db.js';
38
+ /**
39
+ * Options accepted by {@link repairMalformedDbs}.
40
+ *
41
+ * @task T11829
42
+ * @public
43
+ */
44
+ export interface RepairMalformedDbsOptions {
45
+ /** Absolute path to the project root (resolves `<projectRoot>` inventory tokens). */
46
+ projectRoot: string;
47
+ /**
48
+ * Roles to inspect. When omitted, EVERY role in {@link DB_INVENTORY} whose live
49
+ * file exists is probed. An explicit single-role list (from `--role`) is probed
50
+ * even when absent (so the operator gets a clear "not present" report).
51
+ */
52
+ roles?: DbRole[];
53
+ /**
54
+ * When `true`, detect + plan only — corruption is reported with
55
+ * `action: 'would-repair'` but NO quarantine/restore is performed.
56
+ *
57
+ * @default false
58
+ */
59
+ dryRun?: boolean;
60
+ /** Pino-shaped logger for recovery announcements. */
61
+ logger: RecoveryLogger;
62
+ }
63
+ /**
64
+ * Detect and repair malformed CLEO databases across the fleet (T11829 · DHQ-060).
65
+ *
66
+ * For each requested role (or every present role in {@link DB_INVENTORY} when none
67
+ * are specified) this probes the live DB with `PRAGMA quick_check` and, when
68
+ * corruption is found, restores the freshest validated snapshot via the existing
69
+ * {@link runBackupRecover} pipeline. No new recovery logic is introduced — this is
70
+ * the discoverable `cleo doctor repair` entry point requested by DHQ-060.
71
+ *
72
+ * @param opts - Repair inputs (project root, optional role filter, dry-run, logger).
73
+ * @returns A {@link DoctorRepairResult} aggregate with per-role outcomes.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * const report = repairMalformedDbs({ projectRoot: '/repo', logger });
78
+ * if (report.failedCount > 0) process.exitCode = 1;
79
+ * ```
80
+ *
81
+ * @task T11829
82
+ * @epic T11833
83
+ * @saga T11242
84
+ * @public
85
+ */
86
+ export declare function repairMalformedDbs(opts: RepairMalformedDbsOptions): DoctorRepairResult;
87
+ //# sourceMappingURL=repair-malformed-dbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair-malformed-dbs.d.ts","sourceRoot":"","sources":["../../src/store/repair-malformed-dbs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAAgB,KAAK,MAAM,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzF,OAAO,EAAiB,KAAK,cAAc,EAAqB,MAAM,2BAA2B,CAAC;AAElG;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,qFAAqF;IACrF,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,MAAM,EAAE,cAAc,CAAC;CACxB;AA2HD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,kBAAkB,CAiBtF"}