@cleocode/core 2026.10.19 → 2026.10.20

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 (132) hide show
  1. package/dist/audit-prune.d.ts +18 -0
  2. package/dist/audit-prune.d.ts.map +1 -1
  3. package/dist/audit-prune.js +42 -1
  4. package/dist/audit-prune.js.map +1 -1
  5. package/dist/build-provenance.json +2 -2
  6. package/dist/cloud/nexus-vault.d.ts.map +1 -1
  7. package/dist/cloud/nexus-vault.js +41 -4
  8. package/dist/cloud/nexus-vault.js.map +1 -1
  9. package/dist/docs/docs-update.d.ts.map +1 -1
  10. package/dist/docs/docs-update.js +136 -28
  11. package/dist/docs/docs-update.js.map +1 -1
  12. package/dist/docs/export-document.js +9 -0
  13. package/dist/docs/export-document.js.map +1 -1
  14. package/dist/docs/section-write-path.d.ts +26 -0
  15. package/dist/docs/section-write-path.d.ts.map +1 -1
  16. package/dist/docs/section-write-path.js +49 -2
  17. package/dist/docs/section-write-path.js.map +1 -1
  18. package/dist/goal/runtime.d.ts +6 -2
  19. package/dist/goal/runtime.d.ts.map +1 -1
  20. package/dist/goal/runtime.js +12 -3
  21. package/dist/goal/runtime.js.map +1 -1
  22. package/dist/hooks/payload-schemas.d.ts +3 -3
  23. package/dist/llm/plugin-facade.js +8 -0
  24. package/dist/llm/plugin-facade.js.map +1 -1
  25. package/dist/memory/learnings.d.ts +8 -8
  26. package/dist/memory/patterns.d.ts +14 -14
  27. package/dist/memory/redaction.js +8 -0
  28. package/dist/memory/redaction.js.map +1 -1
  29. package/dist/release/ci-evidence.d.ts +16 -0
  30. package/dist/release/ci-evidence.d.ts.map +1 -1
  31. package/dist/release/ci-evidence.js +45 -1
  32. package/dist/release/ci-evidence.js.map +1 -1
  33. package/dist/selfimprove/fix-gen.js +8 -0
  34. package/dist/selfimprove/fix-gen.js.map +1 -1
  35. package/dist/sentient/ingesters/nexus-ingester.d.ts.map +1 -1
  36. package/dist/sentient/ingesters/nexus-ingester.js +2 -1
  37. package/dist/sentient/ingesters/nexus-ingester.js.map +1 -1
  38. package/dist/sessions/session-end-snapshot.d.ts +3 -0
  39. package/dist/sessions/session-end-snapshot.d.ts.map +1 -1
  40. package/dist/sessions/session-end-snapshot.js +6 -0
  41. package/dist/sessions/session-end-snapshot.js.map +1 -1
  42. package/dist/store/audit-log-schema.d.ts +25 -17
  43. package/dist/store/audit-log-schema.d.ts.map +1 -1
  44. package/dist/store/audit-log-schema.js +6 -0
  45. package/dist/store/audit-log-schema.js.map +1 -1
  46. package/dist/store/display-id-alias.d.ts.map +1 -1
  47. package/dist/store/display-id-alias.js +3 -1
  48. package/dist/store/display-id-alias.js.map +1 -1
  49. package/dist/store/dual-scope-db.d.ts.map +1 -1
  50. package/dist/store/dual-scope-db.js +11 -0
  51. package/dist/store/dual-scope-db.js.map +1 -1
  52. package/dist/store/nexus-validation-schemas.d.ts +8 -8
  53. package/dist/store/schema/attachments.d.ts +3 -3
  54. package/dist/store/schema/audit.d.ts +14 -14
  55. package/dist/store/schema/audit.d.ts.map +1 -1
  56. package/dist/store/schema/audit.js +5 -4
  57. package/dist/store/schema/audit.js.map +1 -1
  58. package/dist/store/schema/background-jobs.d.ts +1 -1
  59. package/dist/store/schema/cleo-global/nexus.d.ts +5 -5
  60. package/dist/store/schema/cleo-global/nexus.js +3 -3
  61. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  62. package/dist/store/schema/cleo-global/services.d.ts +1 -1
  63. package/dist/store/schema/cleo-global/skills.d.ts +3 -3
  64. package/dist/store/schema/cleo-project/audit.d.ts +14 -14
  65. package/dist/store/schema/cleo-project/audit.js +5 -5
  66. package/dist/store/schema/cleo-project/audit.js.map +1 -1
  67. package/dist/store/schema/cleo-project/docs.d.ts +4 -4
  68. package/dist/store/schema/cleo-project/lifecycle.d.ts +4 -4
  69. package/dist/store/schema/cleo-project/nexus-graph.d.ts +3 -3
  70. package/dist/store/schema/cleo-project/provenance-commits.d.ts +2 -2
  71. package/dist/store/schema/cleo-project/provenance-rest.d.ts +5 -5
  72. package/dist/store/schema/cleo-project/runtime.d.ts +3 -3
  73. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +1 -1
  74. package/dist/store/schema/cleo-project/tasks-core.d.ts +10 -10
  75. package/dist/store/schema/cleo-shared/brain.d.ts +24 -24
  76. package/dist/store/schema/lifecycle.d.ts +4 -4
  77. package/dist/store/schema/manifest.d.ts +1 -1
  78. package/dist/store/schema/memory-schema.d.ts +27 -27
  79. package/dist/store/schema/nexus-schema.d.ts +7 -7
  80. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  81. package/dist/store/schema/nexus-schema.js +3 -2
  82. package/dist/store/schema/nexus-schema.js.map +1 -1
  83. package/dist/store/schema/provenance/releases.d.ts +2 -2
  84. package/dist/store/schema/schema-utils.d.ts +52 -0
  85. package/dist/store/schema/schema-utils.d.ts.map +1 -1
  86. package/dist/store/schema/schema-utils.js +138 -47
  87. package/dist/store/schema/schema-utils.js.map +6 -1
  88. package/dist/store/schema/skills-schema.d.ts +3 -3
  89. package/dist/store/schema/tasks.d.ts +9 -9
  90. package/dist/store/sync/apply/resolve-conflict.d.ts.map +1 -1
  91. package/dist/store/sync/apply/resolve-conflict.js +3 -1
  92. package/dist/store/sync/apply/resolve-conflict.js.map +1 -1
  93. package/dist/store/sync/apply/write-api.d.ts.map +1 -1
  94. package/dist/store/sync/apply/write-api.js +10 -2
  95. package/dist/store/sync/apply/write-api.js.map +1 -1
  96. package/dist/store/sync/audit-scrub.d.ts +47 -0
  97. package/dist/store/sync/audit-scrub.d.ts.map +1 -0
  98. package/dist/store/sync/audit-scrub.js +90 -0
  99. package/dist/store/sync/audit-scrub.js.map +1 -0
  100. package/dist/store/sync/merge/engine.d.ts.map +1 -1
  101. package/dist/store/sync/merge/engine.js +7 -1
  102. package/dist/store/sync/merge/engine.js.map +1 -1
  103. package/dist/store/sync/merge/rules.d.ts.map +1 -1
  104. package/dist/store/sync/merge/rules.js +10 -0
  105. package/dist/store/sync/merge/rules.js.map +1 -1
  106. package/dist/store/sync/merge/types.d.ts +7 -0
  107. package/dist/store/sync/merge/types.d.ts.map +1 -1
  108. package/dist/store/sync/reconcile-copy.d.ts.map +1 -1
  109. package/dist/store/sync/reconcile-copy.js +6 -2
  110. package/dist/store/sync/reconcile-copy.js.map +1 -1
  111. package/dist/store/sync/schema.d.ts +10 -0
  112. package/dist/store/sync/schema.d.ts.map +1 -1
  113. package/dist/store/sync/schema.js +24 -0
  114. package/dist/store/sync/schema.js.map +1 -1
  115. package/dist/store/sync/sequencing.d.ts.map +1 -1
  116. package/dist/store/sync/sequencing.js +11 -1
  117. package/dist/store/sync/sequencing.js.map +1 -1
  118. package/dist/store/table-classification.d.ts +3 -2
  119. package/dist/store/table-classification.d.ts.map +1 -1
  120. package/dist/store/table-classification.js +14 -5
  121. package/dist/store/table-classification.js.map +1 -1
  122. package/dist/store/twin-collapse.d.ts.map +1 -1
  123. package/dist/store/twin-collapse.js +4 -1
  124. package/dist/store/twin-collapse.js.map +1 -1
  125. package/dist/store/validation-schemas.d.ts +89 -89
  126. package/dist/store/vault-manifest.d.ts +21 -1
  127. package/dist/store/vault-manifest.d.ts.map +1 -1
  128. package/dist/store/vault-manifest.js +62 -9
  129. package/dist/store/vault-manifest.js.map +1 -1
  130. package/package.json +13 -13
  131. package/templates/CLEO-INJECTION.md +1 -1
  132. package/templates/CLEO-REFERENCE.md +1 -1
@@ -93,4 +93,22 @@ export declare function auditPruneCondition(table: PrunableAuditTable, cutoff: s
93
93
  * @param config - LoggingConfig with auditRetentionDays and archiveBeforePrune
94
94
  */
95
95
  export declare function pruneAuditLog(cleoDir: string, config: LoggingConfig): Promise<PruneResult>;
96
+ /** File under `.cleo/logs/` holding the time of the last automatic prune (T13828). */
97
+ export declare const AUTO_AUDIT_PRUNE_STAMP = "audit-prune.last";
98
+ /** The least time between two automatic prunes of one project: a day (T13828). */
99
+ export declare const AUTO_AUDIT_PRUNE_INTERVAL_MS = 86400000;
100
+ /**
101
+ * The automatic audit prune (T13828): {@link pruneAuditLog} with the project's
102
+ * `logging` config, at most once per {@link AUTO_AUDIT_PRUNE_INTERVAL_MS} per
103
+ * project. Session end runs it after its snapshot; `cleo admin cleanup
104
+ * --target logs` still prunes on demand.
105
+ *
106
+ * The stamp is written before the prune, so concurrent session ends skip
107
+ * rather than all prune. Never throws.
108
+ *
109
+ * @param projectRoot - The project root.
110
+ * @param now - The current time (tests).
111
+ * @returns The prune result, or `null` when a prune ran within the interval or it failed.
112
+ */
113
+ export declare function autoPruneAuditLog(projectRoot: string, now?: Date): Promise<PruneResult | null>;
96
114
  //# sourceMappingURL=audit-prune.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-prune.d.ts","sourceRoot":"","sources":["../src/audit-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAuB,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAGjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAI1E,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,GAAG,OAAO,QAAQ,GAAG,OAAO,aAAa,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CASlF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CA8EhG"}
1
+ {"version":3,"file":"audit-prune.d.ts","sourceRoot":"","sources":["../src/audit-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAuB,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAIjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAI1E,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,GAAG,OAAO,QAAQ,GAAG,OAAO,aAAa,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CASlF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CA8EhG;AAED,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,WAAa,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAmB7B"}
@@ -10,13 +10,14 @@
10
10
  *
11
11
  * @task T5339
12
12
  */
13
- import { createWriteStream, mkdirSync } from 'node:fs';
13
+ import { createWriteStream, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
14
14
  import { join } from 'node:path';
15
15
  import { Readable } from 'node:stream';
16
16
  import { pipeline } from 'node:stream/promises';
17
17
  import { createGzip } from 'node:zlib';
18
18
  import { and, lt, notInArray, sql } from 'drizzle-orm';
19
19
  import { getLogger } from './logger.js';
20
+ import { getCleoDir } from './paths.js';
20
21
  import { AC_BINDINGS_PRUNED_ACTION } from './store/ac-binding-prune.js';
21
22
  const log = getLogger('prune');
22
23
  /**
@@ -159,4 +160,44 @@ export async function pruneAuditLog(cleoDir, config) {
159
160
  return { rowsArchived: 0, rowsDeleted: 0 };
160
161
  }
161
162
  }
163
+ /** File under `.cleo/logs/` holding the time of the last automatic prune (T13828). */
164
+ export const AUTO_AUDIT_PRUNE_STAMP = 'audit-prune.last';
165
+ /** The least time between two automatic prunes of one project: a day (T13828). */
166
+ export const AUTO_AUDIT_PRUNE_INTERVAL_MS = 86_400_000;
167
+ /**
168
+ * The automatic audit prune (T13828): {@link pruneAuditLog} with the project's
169
+ * `logging` config, at most once per {@link AUTO_AUDIT_PRUNE_INTERVAL_MS} per
170
+ * project. Session end runs it after its snapshot; `cleo admin cleanup
171
+ * --target logs` still prunes on demand.
172
+ *
173
+ * The stamp is written before the prune, so concurrent session ends skip
174
+ * rather than all prune. Never throws.
175
+ *
176
+ * @param projectRoot - The project root.
177
+ * @param now - The current time (tests).
178
+ * @returns The prune result, or `null` when a prune ran within the interval or it failed.
179
+ */
180
+ export async function autoPruneAuditLog(projectRoot, now = new Date()) {
181
+ try {
182
+ const cleoDir = getCleoDir(projectRoot);
183
+ const stamp = join(cleoDir, 'logs', AUTO_AUDIT_PRUNE_STAMP);
184
+ let last = Number.NaN;
185
+ try {
186
+ last = Date.parse(readFileSync(stamp, 'utf8').trim());
187
+ }
188
+ catch {
189
+ // never pruned automatically
190
+ }
191
+ if (now.getTime() - last < AUTO_AUDIT_PRUNE_INTERVAL_MS)
192
+ return null;
193
+ mkdirSync(join(cleoDir, 'logs'), { recursive: true });
194
+ writeFileSync(stamp, `${now.toISOString()}\n`);
195
+ const { loadConfig } = await import('./config.js');
196
+ return await pruneAuditLog(cleoDir, (await loadConfig(projectRoot)).logging);
197
+ }
198
+ catch (err) {
199
+ log.warn({ err, projectRoot }, 'automatic audit prune failed');
200
+ return null;
201
+ }
202
+ }
162
203
  //# sourceMappingURL=audit-prune.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-prune.js","sourceRoot":"","sources":["../src/audit-prune.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-prune.js","sourceRoot":"","sources":["../src/audit-prune.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": 1,
3
- "gitHead": "22e6300406adcc932577098dd8bcf66000dd52b5",
4
- "builtAt": "2026-10-17T10:52:58.025Z",
3
+ "gitHead": "61df8623708aa137827194be3bfb5decfbf27913",
4
+ "builtAt": "2026-10-18T03:59:18.365Z",
5
5
  "linkedWorktree": null
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nexus-vault.d.ts","sourceRoot":"","sources":["../../src/cloud/nexus-vault.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nexus-vault.d.ts","sourceRoot":"","sources":["../../src/cloud/nexus-vault.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,7 @@ import { SYNC_SCHEMA_VERSION } from '@cleocode/contracts/sync-schema.js';
63
63
  import { readDeclaredProjectIdentity } from '@cleocode/paths';
64
64
  import { extract as tarExtract } from 'tar';
65
65
  import { z } from 'zod';
66
+ import { currentDeviceId } from '../nexus/path-map.js';
66
67
  import { getCleoHome, resolveOrCwd } from '../paths.js';
67
68
  import { withLock } from '../store/lock.js';
68
69
  import { exportPortableBundle, globalHomeRules } from '../store/portable-bundle.js';
@@ -85,7 +86,7 @@ import { sealBacklog } from '../store/sync/seal-backlog.js';
85
86
  import { sealPending } from '../store/sync/sealer.js';
86
87
  import { unpushedSegments } from '../store/sync/segments.js';
87
88
  import { firstBadTxnSignature, signTxn } from '../store/sync/txn-signing.js';
88
- import { buildVaultManifest, carryMachineState, compareVaultManifests, emptyVaultTableHash, isVaultAnnotationKey, isVaultForkManifest, sameVaultManifest, VAULT_FILES_KEY, VAULT_FORK_KEY, VAULT_FORMAT_KEY, VAULT_GLOBAL_CONFIG_LOCAL_KEYS, VAULT_MANIFEST_FORMAT_VERSION, vaultDatabaseEntry, vaultDatabaseKey, vaultFileDigest, vaultFilesEntry, vaultForkEntry, vaultFormatEntry, vaultManifestFormat, vaultStripColumns, } from '../store/vault-manifest.js';
89
+ import { buildVaultManifest, carryMachineState, compareVaultManifests, emptyVaultTableHash, isVaultAnnotationKey, isVaultForkManifest, sameVaultAuthoredState, sameVaultManifest, VAULT_FILES_KEY, VAULT_FORK_KEY, VAULT_FORMAT_KEY, VAULT_GLOBAL_CONFIG_LOCAL_KEYS, VAULT_MANIFEST_FORMAT_VERSION, vaultDatabaseEntry, vaultDatabaseKey, vaultFileDigest, vaultFilesEntry, vaultForkEntry, vaultFormatEntry, vaultManifestFormat, vaultStripColumns, } from '../store/vault-manifest.js';
89
90
  import { foreignWriterLeases, storeOpenElsewhere } from '../store/writer-lease.js';
90
91
  import { autoSyncSuppressedBy } from './auto-sync.js';
91
92
  import { deriveKey, uuidv7 } from './crypto.js';
@@ -568,6 +569,18 @@ function compareWithSynced(local, snapshot, git, changes) {
568
569
  return rows;
569
570
  return rows.map((r) => (r.table === VAULT_FILES_KEY ? { ...r, match: changes.length === 0 } : r));
570
571
  }
572
+ /**
573
+ * The changes a pull must not overwrite (T13850): {@link compareWithSynced},
574
+ * except that `cleo.db` tables count as unchanged when the authored digests
575
+ * agree, since then they differ only in what memory reads wrote (retrieval
576
+ * log, citation counters), and the snapshot may replace that.
577
+ */
578
+ function changesToKeep(local, snapshot, git, changes) {
579
+ const rows = compareWithSynced(local, snapshot, git, changes);
580
+ if (!sameVaultAuthoredState(local, snapshot))
581
+ return rows;
582
+ return rows.map((r) => (isSnapshotAuthoritativeKey(r.table) ? r : { ...r, match: true }));
583
+ }
571
584
  /**
572
585
  * This device's local-only change journal, emptied in every vault snapshot
573
586
  * (T13042): capture, undo and quarantined images, and apply intents (T12757),
@@ -835,6 +848,29 @@ async function localManifest(t, git, untracked, like) {
835
848
  vault.tables[VAULT_FILES_KEY] = vaultFilesEntry(files, hashKey);
836
849
  return { manifest: vault, files: digests };
837
850
  }
851
+ /**
852
+ * Rows a store writes about this machine on its own: the device's heartbeat
853
+ * row in `nexus_devices`, which login and every CLI start write and the next
854
+ * start rewrites. A restore that replaces it loses nothing, so it never makes
855
+ * a never-synced store hold data of its own (T13853).
856
+ */
857
+ async function ownMachineRows(t) {
858
+ if (t.scope !== 'global')
859
+ return {};
860
+ const { openNativeDatabase } = await import('../store/sqlite-native.js');
861
+ const db = openNativeDatabase(t.dbPath, { readonly: true, enableWal: false });
862
+ try {
863
+ if (!hasTable(db, 'nexus_devices'))
864
+ return {};
865
+ const { n } = db
866
+ .prepare('SELECT count(*) AS n FROM nexus_devices WHERE device_id = ?')
867
+ .get(currentDeviceId());
868
+ return Number(n) > 0 ? { nexus_devices: Number(n) } : {};
869
+ }
870
+ finally {
871
+ db.close();
872
+ }
873
+ }
838
874
  /**
839
875
  * This store's section as a vault snapshot walks it: the section root, the
840
876
  * export's walk rules (so secrets, excluded directories and machine-local
@@ -1255,7 +1291,7 @@ async function pushJournalCheckpoint(conn, key, opts, scope, warnings) {
1255
1291
  throw vaultError('E_NEXUS_VAULT_REFUSED', `this store's rows do not reconcile with ${t.streamId}'s change journal (${unexplained.slice(0, 8).join(', ')}): ${exemptOnly ? 'these tables are not in the change journal yet, and this Cleo Nexus server does not take a snapshot-authoritative list (manifest.snapshot-authoritative)' : transition ? `the head snapshot is vault format ${parentFormat}, and the local rows it counted do not explain the shortfall: synced rows are missing from this store` : 'a write landed outside the journal'}`, exemptOnly
1256
1292
  ? 'nothing was written; upgrade the Cleo Nexus server, then push again'
1257
1293
  : transition
1258
- ? 'nothing was written; run `cleo cloud pull` to take the cloud copy, or `cleo cloud push --force` to keep this store as a labelled fork'
1294
+ ? 'nothing was written; run `cleo cloud pull --force` to take the cloud copy, or `cleo cloud push --force` to keep this store as a labelled fork'
1259
1295
  : 'nothing was written; run `cleo cloud sync`, then push again');
1260
1296
  }
1261
1297
  const vaultOnlyChanged = keys.some((k) => isSnapshotAuthoritativeKey(k) && local[k] !== (parent.manifest.tables[k]?.rows ?? 0));
@@ -2981,9 +3017,10 @@ async function restoreNexusVaultImpl(opts) {
2981
3017
  ? await localManifest(t, git, untrackedComparison(t, git, synced), last?.manifest)
2982
3018
  : null;
2983
3019
  if (local !== null) {
2984
- const hasRows = Object.entries(local.manifest.tables).some(([name, x]) => x.rows > 0 && name !== VAULT_FILES_KEY);
3020
+ const own = last ? {} : await ownMachineRows(t);
3021
+ const hasRows = Object.entries(local.manifest.tables).some(([name, x]) => x.rows - (own[name] ?? 0) > 0 && name !== VAULT_FILES_KEY);
2985
3022
  const fileChanges = fileChangesSinceSync(local.files, t, git, synced);
2986
- const rows = last ? compareWithSynced(local.manifest, last.manifest, git, fileChanges) : [];
3023
+ const rows = last ? changesToKeep(local.manifest, last.manifest, git, fileChanges) : [];
2987
3024
  if ((!last && hasRows) || rows.some((d) => !d.match)) {
2988
3025
  const changed = rows
2989
3026
  .filter((d) => !d.match)