@cleocode/core 2026.10.7 → 2026.10.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.
- package/dist/build-provenance.json +2 -2
- package/dist/cloud/nexus-link.d.ts +15 -0
- package/dist/cloud/nexus-link.d.ts.map +1 -1
- package/dist/cloud/nexus-link.js +25 -0
- package/dist/cloud/nexus-link.js.map +1 -1
- package/dist/cloud/nexus-vault.d.ts +14 -1
- package/dist/cloud/nexus-vault.d.ts.map +1 -1
- package/dist/cloud/nexus-vault.js +72 -5
- package/dist/cloud/nexus-vault.js.map +1 -1
- package/dist/cloud/replica-rebind.d.ts +51 -0
- package/dist/cloud/replica-rebind.d.ts.map +1 -0
- package/dist/cloud/replica-rebind.js +101 -0
- package/dist/cloud/replica-rebind.js.map +1 -0
- package/dist/doctor/container-reaper.d.ts +107 -0
- package/dist/doctor/container-reaper.d.ts.map +1 -0
- package/dist/doctor/container-reaper.js +194 -0
- package/dist/doctor/container-reaper.js.map +1 -0
- package/dist/store/sync/apply/applier.d.ts +3 -0
- package/dist/store/sync/apply/applier.d.ts.map +1 -1
- package/dist/store/sync/apply/applier.js +208 -85
- package/dist/store/sync/apply/applier.js.map +1 -1
- package/dist/store/sync/capture.d.ts +23 -3
- package/dist/store/sync/capture.d.ts.map +1 -1
- package/dist/store/sync/capture.js +31 -3
- package/dist/store/sync/capture.js.map +1 -1
- package/dist/store/sync/collision-settle.d.ts +62 -0
- package/dist/store/sync/collision-settle.d.ts.map +1 -0
- package/dist/store/sync/collision-settle.js +156 -0
- package/dist/store/sync/collision-settle.js.map +1 -0
- package/dist/store/sync/conflicts.d.ts +11 -0
- package/dist/store/sync/conflicts.d.ts.map +1 -1
- package/dist/store/sync/conflicts.js +18 -0
- package/dist/store/sync/conflicts.js.map +1 -1
- package/dist/store/sync/inherit.d.ts +15 -8
- package/dist/store/sync/inherit.d.ts.map +1 -1
- package/dist/store/sync/inherit.js +28 -11
- package/dist/store/sync/inherit.js.map +1 -1
- package/dist/store/sync/merge/types.d.ts +6 -0
- package/dist/store/sync/merge/types.d.ts.map +1 -1
- package/dist/store/sync/pull.d.ts +23 -2
- package/dist/store/sync/pull.d.ts.map +1 -1
- package/dist/store/sync/pull.js +27 -2
- package/dist/store/sync/pull.js.map +1 -1
- package/dist/store/sync/rebind.d.ts +112 -0
- package/dist/store/sync/rebind.d.ts.map +1 -0
- package/dist/store/sync/rebind.js +187 -0
- package/dist/store/sync/rebind.js.map +1 -0
- package/dist/store/sync/reconcile.d.ts +93 -0
- package/dist/store/sync/reconcile.d.ts.map +1 -0
- package/dist/store/sync/reconcile.js +330 -0
- package/dist/store/sync/reconcile.js.map +1 -0
- package/dist/store/sync/repair.d.ts +5 -0
- package/dist/store/sync/repair.d.ts.map +1 -1
- package/dist/store/sync/repair.js +2 -2
- package/dist/store/sync/repair.js.map +1 -1
- package/dist/store/sync/replica.d.ts +28 -1
- package/dist/store/sync/replica.d.ts.map +1 -1
- package/dist/store/sync/replica.js +17 -3
- package/dist/store/sync/replica.js.map +1 -1
- package/dist/store/sync/retire.d.ts +161 -0
- package/dist/store/sync/retire.d.ts.map +1 -0
- package/dist/store/sync/retire.js +193 -0
- package/dist/store/sync/retire.js.map +1 -0
- package/dist/store/sync/schema.d.ts +27 -0
- package/dist/store/sync/schema.d.ts.map +1 -1
- package/dist/store/sync/schema.js +43 -0
- package/dist/store/sync/schema.js.map +1 -1
- package/dist/store/sync/sealer.d.ts +10 -0
- package/dist/store/sync/sealer.d.ts.map +1 -1
- package/dist/store/sync/sealer.js +51 -5
- package/dist/store/sync/sealer.js.map +1 -1
- package/dist/store/sync/segments.d.ts.map +1 -1
- package/dist/store/sync/segments.js +6 -2
- package/dist/store/sync/segments.js.map +1 -1
- package/dist/store/sync/uid-alias.d.ts +100 -0
- package/dist/store/sync/uid-alias.d.ts.map +1 -0
- package/dist/store/sync/uid-alias.js +169 -0
- package/dist/store/sync/uid-alias.js.map +1 -0
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +48 -0
- package/dist/store/table-classification.js.map +1 -1
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +16 -5
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/complete-ci.d.ts.map +1 -1
- package/dist/tasks/complete-ci.js +7 -1
- package/dist/tasks/complete-ci.js.map +1 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +24 -17
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +3 -2
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-runner.d.ts +20 -0
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +141 -19
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +2 -0
- package/dist/validation/engine-ops.js.map +1 -1
- package/migrations/sync-journal/20261009130000_t13278-replica-retire/migration.sql +29 -0
- package/migrations/sync-journal/20261009140000_t13366-retire-confirm/migration.sql +18 -0
- package/migrations/sync-journal/20261010150000_t13397-uid-alias/migration.sql +32 -0
- package/migrations/sync-journal/20261010160000_t13399-rekey-follow/migration.sql +57 -0
- package/package.json +13 -13
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rebind reconcile (journal spec §1.5 N7; T12763, T13278).
|
|
3
|
+
*
|
|
4
|
+
* After a rebind, what the old replica changed and the stream never saw is
|
|
5
|
+
* `inherited` (`inherit.ts`): live captures, sealed transactions, and the
|
|
6
|
+
* transactions of segments it never pushed. The new replica re-emits those
|
|
7
|
+
* fields, deciding each one by the three-way rule
|
|
8
|
+
* ({@link decideReconcileField}):
|
|
9
|
+
*
|
|
10
|
+
* 1. changed by an inherited capture or an inherited sealed-but-unpushed op:
|
|
11
|
+
* emit it at `tick(at_ms)` of that change, under the new replica;
|
|
12
|
+
* 2. untouched, and the local field HLC is below the merged one: adopt the
|
|
13
|
+
* merged value locally, emitting nothing;
|
|
14
|
+
* 3. otherwise (a local HLC at or above the merged one that no inherited
|
|
15
|
+
* change explains): emit it with that HLC unchanged.
|
|
16
|
+
*
|
|
17
|
+
* These are `repair` transactions with `via: 'rebind'`, and they break the
|
|
18
|
+
* per-replica monotonic-HLC promise on purpose (§1.3, K10).
|
|
19
|
+
*
|
|
20
|
+
* {@link reconcileInPlace} is the reconcile of a rebind of the SAME file
|
|
21
|
+
* after a pull to head (the undo-budget rebind, D5): the store itself is the
|
|
22
|
+
* merged state, since the pull applied the stream and rebased the old
|
|
23
|
+
* replica's unsequenced writes over it. Every field no inherited change
|
|
24
|
+
* touched therefore already equals the merged value (rule 2 has nothing left
|
|
25
|
+
* to adopt and rule 3 nothing to explain), and every touched field is rule 1.
|
|
26
|
+
* It writes the touched rows as the captures of one `rebind` frame, read
|
|
27
|
+
* from the live rows (the current value, which is what every replica must
|
|
28
|
+
* converge on, whichever side the rebase let win), at the time of the last
|
|
29
|
+
* inherited change of each row; the sealer seals the frame as one `repair`
|
|
30
|
+
* transaction, `via: 'rebind'`, ticking each op at its row's time. A copy's
|
|
31
|
+
* reconcile against a restored checkpoint (rules 2 and 3 over a scratch
|
|
32
|
+
* store) is a separate pass.
|
|
33
|
+
*
|
|
34
|
+
* @task T12763
|
|
35
|
+
* @task T13278
|
|
36
|
+
* @module store/sync/reconcile
|
|
37
|
+
*/
|
|
38
|
+
import { randomUUID } from 'node:crypto';
|
|
39
|
+
import { LedgerOp } from '@cleocode/contracts/ledger';
|
|
40
|
+
import { BIRTH_FP_COLUMN, UID_COLUMN } from '../row-identity-registry.js';
|
|
41
|
+
import { captureTableDef, repairImageSql } from './capture.js';
|
|
42
|
+
import { parseHlc } from './hlc.js';
|
|
43
|
+
import { keyValues, keyWhere } from './repair.js';
|
|
44
|
+
import { hasTable } from './schema.js';
|
|
45
|
+
import { undoEnabled } from './sequencing.js';
|
|
46
|
+
/**
|
|
47
|
+
* The three-way rule for one field that differs from the merged state.
|
|
48
|
+
* Pure.
|
|
49
|
+
*
|
|
50
|
+
* @param f - Whether an inherited change touched it, and both HLCs.
|
|
51
|
+
* @returns `emit-tick` (rule 1), `adopt-merged` (rule 2) or `emit-pinned` (rule 3).
|
|
52
|
+
*/
|
|
53
|
+
export function decideReconcileField(f) {
|
|
54
|
+
if (f.touchedByInherited)
|
|
55
|
+
return 'emit-tick';
|
|
56
|
+
if (f.localHlc === null || f.localHlc < f.mergedHlc)
|
|
57
|
+
return 'adopt-merged';
|
|
58
|
+
return 'emit-pinned';
|
|
59
|
+
}
|
|
60
|
+
const q = (id) => `"${id.replaceAll('"', '""')}"`;
|
|
61
|
+
const rowKey = (tbl, uid) => `${tbl}\u0000${uid}`;
|
|
62
|
+
/** An `enc()` text of a string or null, as a capture image carries it. */
|
|
63
|
+
const encText = (v) => v == null ? 'NULL' : `'${v.replaceAll("'", "''")}'`;
|
|
64
|
+
/** The physical ms of an op's HLC; 0 when unparseable. */
|
|
65
|
+
function physMs(hlc) {
|
|
66
|
+
try {
|
|
67
|
+
return parseHlc(hlc).phys;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Re-emit what the previous replica changed and the stream never saw, as the
|
|
75
|
+
* captures of one `rebind` frame, in the caller's (rebind) transaction
|
|
76
|
+
* (module docs). Afterwards:
|
|
77
|
+
* - the inherited captures are consumed (deleted): their changes now travel
|
|
78
|
+
* in the frame;
|
|
79
|
+
* - the ledger forgets the row-count effect of the previous replica's
|
|
80
|
+
* inherited sealed transactions, which the frame's I and D ops count again
|
|
81
|
+
* when they seal;
|
|
82
|
+
* - while undo is on, each capture gets its undo row (a reconcile repair
|
|
83
|
+
* keeps its undo until its echo, D1).
|
|
84
|
+
*
|
|
85
|
+
* @param db - The store, inside the rebind transaction.
|
|
86
|
+
* @param o - Scope and the previous (retired) replica.
|
|
87
|
+
* @returns What was re-emitted.
|
|
88
|
+
*/
|
|
89
|
+
export function reconcileInPlace(db, o) {
|
|
90
|
+
// @sync-invariant none:local-only programming-error guard: the reconcile commits with its rebind
|
|
91
|
+
if (!db.isTransaction)
|
|
92
|
+
throw new Error('reconcileInPlace must run inside the rebind transaction');
|
|
93
|
+
const defs = new Map();
|
|
94
|
+
const defOf = (t) => {
|
|
95
|
+
if (!defs.has(t))
|
|
96
|
+
defs.set(t, captureTableDef(db, o.scope, t) ?? null);
|
|
97
|
+
return defs.get(t) ?? null;
|
|
98
|
+
};
|
|
99
|
+
const rows = new Map();
|
|
100
|
+
const rekeys = [];
|
|
101
|
+
const ledger = new Map();
|
|
102
|
+
const alias = new Map();
|
|
103
|
+
const current = (tbl, uid) => alias.get(rowKey(tbl, uid)) ?? uid;
|
|
104
|
+
const touch = (tbl, uid, atMs) => {
|
|
105
|
+
const key = rowKey(tbl, current(tbl, uid));
|
|
106
|
+
let r = rows.get(key);
|
|
107
|
+
if (!r) {
|
|
108
|
+
r = {
|
|
109
|
+
tbl,
|
|
110
|
+
uid: current(tbl, uid),
|
|
111
|
+
inserted: false,
|
|
112
|
+
deleted: false,
|
|
113
|
+
cols: new Set(),
|
|
114
|
+
atMs,
|
|
115
|
+
};
|
|
116
|
+
rows.set(key, r);
|
|
117
|
+
}
|
|
118
|
+
r.atMs = Math.max(r.atMs, atMs);
|
|
119
|
+
return r;
|
|
120
|
+
};
|
|
121
|
+
const rekey = (tbl, oldUid, newUid) => {
|
|
122
|
+
const was = rows.get(rowKey(tbl, oldUid));
|
|
123
|
+
alias.set(rowKey(tbl, oldUid), newUid);
|
|
124
|
+
if (was) {
|
|
125
|
+
rows.delete(rowKey(tbl, oldUid));
|
|
126
|
+
was.uid = newUid;
|
|
127
|
+
rows.set(rowKey(tbl, newUid), was);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const uidByRk = (def, rk) => {
|
|
131
|
+
if (!def.identity.includes(UID_COLUMN))
|
|
132
|
+
return null;
|
|
133
|
+
const r = db
|
|
134
|
+
.prepare(`SELECT x.${q(UID_COLUMN)} AS uid FROM ${q(def.table)} x WHERE ${keyWhere(def)}`)
|
|
135
|
+
.get(...keyValues(rk));
|
|
136
|
+
return r?.uid ?? null;
|
|
137
|
+
};
|
|
138
|
+
// 1. Inherited sealed transactions of the previous replica, in commit
|
|
139
|
+
// order: what they changed, and the row counts they already moved.
|
|
140
|
+
let txns = 0;
|
|
141
|
+
if (hasTable(db, '_sync_txn')) {
|
|
142
|
+
const txnRows = db
|
|
143
|
+
.prepare("SELECT txn FROM _sync_txn WHERE state = 'inherited' AND replica = ? ORDER BY local_seq")
|
|
144
|
+
.all(o.previousReplica);
|
|
145
|
+
const ops = db.prepare('SELECT body FROM _sync_op WHERE txn = ? ORDER BY idx');
|
|
146
|
+
for (const t of txnRows) {
|
|
147
|
+
txns += 1;
|
|
148
|
+
for (const raw of ops.all(t.txn)) {
|
|
149
|
+
const op = LedgerOp.parse(JSON.parse(raw.body));
|
|
150
|
+
const at = physMs(op.h);
|
|
151
|
+
if (op.o === 'K') {
|
|
152
|
+
const nu = op.nu ?? op.u;
|
|
153
|
+
const known = rows.get(rowKey(op.t, current(op.t, op.u)));
|
|
154
|
+
if (!known?.inserted && nu !== op.u) {
|
|
155
|
+
const def = defOf(op.t);
|
|
156
|
+
const img = JSON.stringify({
|
|
157
|
+
[UID_COLUMN]: [encText(op.u), encText(nu)],
|
|
158
|
+
...(op.bfp !== undefined || op.obfp !== undefined
|
|
159
|
+
? { [BIRTH_FP_COLUMN]: [encText(op.obfp), encText(op.bfp)] }
|
|
160
|
+
: {}),
|
|
161
|
+
});
|
|
162
|
+
const rk = def ? liveRk(db, def, nu) : null;
|
|
163
|
+
if (rk !== null)
|
|
164
|
+
rekeys.push({ tbl: op.t, rk, oldUid: op.u, img, atMs: at });
|
|
165
|
+
}
|
|
166
|
+
rekey(op.t, op.u, nu);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
const r = touch(op.t, op.u, at);
|
|
170
|
+
if (op.o === 'I') {
|
|
171
|
+
r.inserted = true;
|
|
172
|
+
r.deleted = false;
|
|
173
|
+
ledger.set(op.t, (ledger.get(op.t) ?? 0) + 1);
|
|
174
|
+
}
|
|
175
|
+
else if (op.o === 'D') {
|
|
176
|
+
r.deleted = true;
|
|
177
|
+
ledger.set(op.t, (ledger.get(op.t) ?? 0) - 1);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
for (const c of Object.keys(op.a ?? {}))
|
|
181
|
+
r.cols.add(c);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// 2. Inherited captures, in capture order: changes never sealed.
|
|
187
|
+
let captures = 0;
|
|
188
|
+
if (hasTable(db, '_sync_capture')) {
|
|
189
|
+
const caps = db
|
|
190
|
+
.prepare("SELECT seq, tbl, op, rk, uid, img, at_ms FROM _sync_capture WHERE state = 'inherited' ORDER BY seq")
|
|
191
|
+
.all();
|
|
192
|
+
for (const c of caps) {
|
|
193
|
+
captures += 1;
|
|
194
|
+
const def = defOf(c.tbl);
|
|
195
|
+
if (!def)
|
|
196
|
+
continue; // the table left the sync set: nothing to re-emit
|
|
197
|
+
const at = Number(c.at_ms);
|
|
198
|
+
if (c.op === 'K') {
|
|
199
|
+
const pair = JSON.parse(c.img)[UID_COLUMN];
|
|
200
|
+
const oldUid = c.uid ?? (pair ? decodeText(pair[0]) : null);
|
|
201
|
+
const newUid = pair ? decodeText(pair[1]) : null;
|
|
202
|
+
if (oldUid === null || newUid === null)
|
|
203
|
+
continue; // a fill: the I carries the uid
|
|
204
|
+
const known = rows.get(rowKey(c.tbl, current(c.tbl, oldUid)));
|
|
205
|
+
if (!known?.inserted && newUid !== oldUid) {
|
|
206
|
+
rekeys.push({ tbl: c.tbl, rk: c.rk, oldUid, img: c.img, atMs: at });
|
|
207
|
+
}
|
|
208
|
+
rekey(c.tbl, oldUid, newUid);
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
const uid = c.uid ?? uidByRk(def, c.rk);
|
|
212
|
+
if (uid === null)
|
|
213
|
+
continue; // a row that never got a uid and is gone: never known
|
|
214
|
+
const r = touch(c.tbl, uid, at);
|
|
215
|
+
if (c.op === 'I') {
|
|
216
|
+
r.inserted = true;
|
|
217
|
+
r.deleted = false;
|
|
218
|
+
}
|
|
219
|
+
else if (c.op === 'D') {
|
|
220
|
+
r.deleted = true;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
for (const col of Object.keys(JSON.parse(c.img))) {
|
|
224
|
+
r.cols.add(col);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
db.prepare("DELETE FROM _sync_capture WHERE state = 'inherited'").run();
|
|
229
|
+
}
|
|
230
|
+
// 3. The ledger forgets the inherited sealed row counts (the frame recounts).
|
|
231
|
+
if (hasTable(db, '_sync_ledger')) {
|
|
232
|
+
const move = db.prepare('UPDATE _sync_ledger SET live = live - ? WHERE tbl = ?');
|
|
233
|
+
for (const [tbl, delta] of ledger)
|
|
234
|
+
if (delta !== 0)
|
|
235
|
+
move.run(delta, tbl);
|
|
236
|
+
}
|
|
237
|
+
if (rows.size === 0 && rekeys.length === 0) {
|
|
238
|
+
return { frame: null, inserts: 0, updates: 0, deletes: 0, rekeys: 0, captures, txns };
|
|
239
|
+
}
|
|
240
|
+
// 4. One rebind frame: the re-keys first, then each row from its live state.
|
|
241
|
+
const frame = randomUUID();
|
|
242
|
+
const first = db.prepare('SELECT coalesce(max(seq), 0) + 1 AS n FROM main._sync_capture').get().n;
|
|
243
|
+
db.prepare('INSERT INTO _sync_frame (frame, kind, actor, first_seq) VALUES (?, ?, ?, ?)').run(frame, 'rebind', null, first);
|
|
244
|
+
const undoOn = undoEnabled(db);
|
|
245
|
+
const undo = db.prepare(`INSERT INTO _sync_undo (seq, txn_local, kind, tbl, rk, uid, op, before_full, after_full)
|
|
246
|
+
SELECT c.seq, ?, 'repair', c.tbl, c.rk, c.uid, c.op, ?, CASE WHEN c.op IN ('I', 'U') THEN c.img END
|
|
247
|
+
FROM _sync_capture c WHERE c.seq = last_insert_rowid()`);
|
|
248
|
+
const insRaw = db.prepare(`INSERT INTO _sync_capture (tbl, op, rk, uid, img, at_ms, frame, kind) VALUES (?, ?, ?, ?, ?, ?, ?, 'rebind')`);
|
|
249
|
+
let inserts = 0;
|
|
250
|
+
let updates = 0;
|
|
251
|
+
let deletes = 0;
|
|
252
|
+
for (const k of rekeys) {
|
|
253
|
+
insRaw.run(k.tbl, 'K', k.rk, k.oldUid, k.img, k.atMs, frame);
|
|
254
|
+
if (undoOn)
|
|
255
|
+
undo.run(frame, null);
|
|
256
|
+
}
|
|
257
|
+
for (const r of rows.values()) {
|
|
258
|
+
const def = defOf(r.tbl);
|
|
259
|
+
if (!def)
|
|
260
|
+
continue;
|
|
261
|
+
const rk = liveRk(db, def, r.uid);
|
|
262
|
+
if (rk === null) {
|
|
263
|
+
// Gone here. A row the stream never saw needs nothing; else it is a D.
|
|
264
|
+
if (r.inserted)
|
|
265
|
+
continue;
|
|
266
|
+
insRaw.run(r.tbl, 'D', JSON.stringify(['<orphan>', r.uid]), r.uid, '{}', r.atMs, frame);
|
|
267
|
+
if (undoOn)
|
|
268
|
+
undo.run(frame, metaKey(db, r.tbl, r.uid));
|
|
269
|
+
deletes += 1;
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
const img = repairImageSql(def, 'x');
|
|
273
|
+
if (r.inserted) {
|
|
274
|
+
// The stream never saw this row: the meta an inherited seal wrote must
|
|
275
|
+
// not make the sealer read the re-emitted insert as a REPLACE (a U).
|
|
276
|
+
db.prepare('DELETE FROM _sync_row_meta WHERE tbl = ? AND uid = ?').run(r.tbl, r.uid);
|
|
277
|
+
captureFromLive(db, def, img.insert, 'I', rk, r.uid, r.atMs, frame);
|
|
278
|
+
if (undoOn)
|
|
279
|
+
undo.run(frame, null);
|
|
280
|
+
inserts += 1;
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
const cols = new Set([...r.cols].filter((c) => def.columns.includes(c) && !def.identity.includes(c) && !def.secret.has(c)));
|
|
284
|
+
if (r.deleted && !r.inserted) {
|
|
285
|
+
// Deleted by an inherited change, then re-created locally: the whole row.
|
|
286
|
+
captureFromLive(db, def, img.insert, 'I', rk, r.uid, r.atMs, frame);
|
|
287
|
+
if (undoOn)
|
|
288
|
+
undo.run(frame, null);
|
|
289
|
+
inserts += 1;
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
if (cols.size === 0)
|
|
293
|
+
continue;
|
|
294
|
+
captureFromLive(db, def, repairImageSql(def, 'x', cols).update, 'U', rk, r.uid, r.atMs, frame);
|
|
295
|
+
if (undoOn)
|
|
296
|
+
undo.run(frame, null);
|
|
297
|
+
updates += 1;
|
|
298
|
+
}
|
|
299
|
+
return { frame, inserts, updates, deletes, rekeys: rekeys.length, captures, txns };
|
|
300
|
+
}
|
|
301
|
+
/** The text an `enc()` string value decodes to, or null. */
|
|
302
|
+
function decodeText(v) {
|
|
303
|
+
if (v === undefined || v === 'NULL')
|
|
304
|
+
return null;
|
|
305
|
+
return v.startsWith("'") && v.endsWith("'") ? v.slice(1, -1).replaceAll("''", "'") : null;
|
|
306
|
+
}
|
|
307
|
+
/** A live row's local key `rk`, found by uid, or null when the row is gone. */
|
|
308
|
+
function liveRk(db, def, uid) {
|
|
309
|
+
if (!def.identity.includes(UID_COLUMN))
|
|
310
|
+
return null;
|
|
311
|
+
const r = db
|
|
312
|
+
.prepare(`SELECT ${repairImageSql(def, 'x').rk} AS rk FROM ${q(def.table)} x WHERE x.${q(UID_COLUMN)} = ?`)
|
|
313
|
+
.get(uid);
|
|
314
|
+
return r?.rk ?? null;
|
|
315
|
+
}
|
|
316
|
+
/** The natural key row meta keeps for a uid (a D's undo before-image), or null. */
|
|
317
|
+
function metaKey(db, tbl, uid) {
|
|
318
|
+
if (!hasTable(db, '_sync_row_meta'))
|
|
319
|
+
return null;
|
|
320
|
+
const r = db
|
|
321
|
+
.prepare('SELECT key_json FROM _sync_row_meta WHERE tbl = ? AND uid = ?')
|
|
322
|
+
.get(tbl, uid);
|
|
323
|
+
return r?.key_json ?? null;
|
|
324
|
+
}
|
|
325
|
+
/** Insert one capture of the live row `rk` with the SQL image `image`. */
|
|
326
|
+
function captureFromLive(db, def, image, op, rk, uid, atMs, frame) {
|
|
327
|
+
db.prepare(`INSERT INTO _sync_capture (tbl, op, rk, uid, img, at_ms, frame, kind)
|
|
328
|
+
SELECT ?, '${op}', ?, ?, ${image}, ?, ?, 'rebind' FROM ${q(def.table)} x WHERE ${keyWhere(def)}`).run(def.table, rk, uid, atMs, frame, ...keyValues(rk));
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=reconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../../src/store/sync/reconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
*/
|
|
39
39
|
import type { DatabaseSync } from 'node:sqlite';
|
|
40
40
|
import type { TableScope } from '@cleocode/contracts';
|
|
41
|
+
import { type CaptureTableDef } from './capture.js';
|
|
41
42
|
import { type SealerRowView } from './sealer.js';
|
|
42
43
|
/** `_sync_meta` key prefix of a table whose row meta covers every live row. */
|
|
43
44
|
export declare const BASELINE_KEY_PREFIX = "baseline:";
|
|
@@ -141,6 +142,10 @@ export declare function streamStarted(db: DatabaseSync): boolean;
|
|
|
141
142
|
* @param view - From {@link sealerRowView}, shared across tables.
|
|
142
143
|
*/
|
|
143
144
|
export declare function planRepair(db: DatabaseSync, scope: TableScope, table: string, view?: SealerRowView): RepairPlan;
|
|
145
|
+
/** `x`'s local key matches the bound key values ({@link keyValues}). */
|
|
146
|
+
export declare function keyWhere(def: CaptureTableDef): string;
|
|
147
|
+
/** The key values a row's `rk` encodes, in key-column order. */
|
|
148
|
+
export declare function keyValues(rk: string): Array<string | number | bigint | Uint8Array | null>;
|
|
144
149
|
/**
|
|
145
150
|
* Baseline one table's row meta (§1.2 "genesis of an existing row"; §1.6
|
|
146
151
|
* "one live meta row per live sync-set row"): every live row with a uid and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../../../src/store/sync/repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../../../src/store/sync/repair.ts"],"names":[],"mappings":"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"}
|
|
@@ -189,7 +189,7 @@ export function planRepair(db, scope, table, view = sealerRowView(db, scope)) {
|
|
|
189
189
|
};
|
|
190
190
|
}
|
|
191
191
|
/** `x`'s local key matches the bound key values ({@link keyValues}). */
|
|
192
|
-
function keyWhere(def) {
|
|
192
|
+
export function keyWhere(def) {
|
|
193
193
|
return def.key.map((k) => `x.${q(k)} IS ?`).join(' AND ');
|
|
194
194
|
}
|
|
195
195
|
/** A bindable SQLite value for a decoded key part. */
|
|
@@ -203,7 +203,7 @@ function bindable(v) {
|
|
|
203
203
|
return Buffer.from(v.$b, 'base64');
|
|
204
204
|
}
|
|
205
205
|
/** The key values a row's `rk` encodes, in key-column order. */
|
|
206
|
-
function keyValues(rk) {
|
|
206
|
+
export function keyValues(rk) {
|
|
207
207
|
return JSON.parse(rk).map((p) => bindable(decodeEnc(p)));
|
|
208
208
|
}
|
|
209
209
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair.js","sourceRoot":"","sources":["../../../src/store/sync/repair.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repair.js","sourceRoot":"","sources":["../../../src/store/sync/repair.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,7 +65,13 @@ export type RebindReason = 'file-identity' | 'foreign-device' | 'nonce-mismatch'
|
|
|
65
65
|
* rules 1 and 3). The old replica is retired at the same path, so it is a
|
|
66
66
|
* retire candidate for S4, unlike a copy (T13109).
|
|
67
67
|
*/
|
|
68
|
-
| 'vault-restore'
|
|
68
|
+
| 'vault-restore'
|
|
69
|
+
/**
|
|
70
|
+
* Undo reached its budget while the replica could not reach the stream
|
|
71
|
+
* (§3.5 Rule 2, D5): the next pull to head rebinds, reconciles and retires
|
|
72
|
+
* the old id (T13278).
|
|
73
|
+
*/
|
|
74
|
+
| 'undo-budget';
|
|
69
75
|
/** What `stat` reports about a store file, in nanoseconds. */
|
|
70
76
|
export interface FileStat {
|
|
71
77
|
readonly ino: bigint;
|
|
@@ -248,6 +254,15 @@ export interface RebindReplicaOptions {
|
|
|
248
254
|
*/
|
|
249
255
|
readonly identityProven?: boolean;
|
|
250
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Work that must commit with the rebind itself: it runs inside the rebind's
|
|
259
|
+
* `BEGIN IMMEDIATE`, after the new replica is bound and the old outbox is
|
|
260
|
+
* marked inherited, and a throw rolls the whole rebind back.
|
|
261
|
+
*/
|
|
262
|
+
export type RebindWithin<T> = (db: DatabaseSync, ctx: {
|
|
263
|
+
readonly previous: ReplicaRow;
|
|
264
|
+
readonly current: ReplicaRow;
|
|
265
|
+
}) => T;
|
|
251
266
|
/**
|
|
252
267
|
* Force a rebind of a bound store: the hook S4 uses when the server answers a
|
|
253
268
|
* push with "seq exists, hash differs" (N6: the server hwm is authoritative).
|
|
@@ -258,6 +273,18 @@ export declare function rebindReplica(db: DatabaseSync, opts: SyncOpenOptions, r
|
|
|
258
273
|
replicaId: string;
|
|
259
274
|
previousReplicaId: string;
|
|
260
275
|
};
|
|
276
|
+
/**
|
|
277
|
+
* {@link rebindReplica}, with `within` run inside the rebind transaction
|
|
278
|
+
* (the T13278 rebind at the next pull to head: its reconcile and retire
|
|
279
|
+
* commit with the rebind, or none of it does).
|
|
280
|
+
*
|
|
281
|
+
* @throws {Error} When the store has no active replica.
|
|
282
|
+
*/
|
|
283
|
+
export declare function rebindReplicaWith<T>(db: DatabaseSync, opts: SyncOpenOptions, reason: RebindReason, rebindOpts: RebindReplicaOptions, within: RebindWithin<T>): {
|
|
284
|
+
replicaId: string;
|
|
285
|
+
previousReplicaId: string;
|
|
286
|
+
result: T;
|
|
287
|
+
};
|
|
261
288
|
/** What {@link rebindAfterVaultRestore} did. */
|
|
262
289
|
export interface VaultRestoreRebind {
|
|
263
290
|
readonly replicaId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replica.d.ts","sourceRoot":"","sources":["../../../src/store/sync/replica.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGnF,gCAAgC;AAChC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,+BAA+B;AAC/B,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,UAAU,GACV,qBAAqB;AACvB;;;;GAIG;GACD,mBAAmB;AACrB;;;;;GAKG;GACD,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"replica.d.ts","sourceRoot":"","sources":["../../../src/store/sync/replica.ts"],"names":[],"mappings":"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"}
|
|
@@ -374,20 +374,34 @@ function bindPass(db, opts) {
|
|
|
374
374
|
* @throws {Error} When the store has no active replica.
|
|
375
375
|
*/
|
|
376
376
|
export function rebindReplica(db, opts, reason = 'server-seq-conflict', rebindOpts = {}) {
|
|
377
|
+
const out = rebindReplicaWith(db, opts, reason, rebindOpts, () => undefined);
|
|
378
|
+
return { replicaId: out.replicaId, previousReplicaId: out.previousReplicaId };
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* {@link rebindReplica}, with `within` run inside the rebind transaction
|
|
382
|
+
* (the T13278 rebind at the next pull to head: its reconcile and retire
|
|
383
|
+
* commit with the rebind, or none of it does).
|
|
384
|
+
*
|
|
385
|
+
* @throws {Error} When the store has no active replica.
|
|
386
|
+
*/
|
|
387
|
+
export function rebindReplicaWith(db, opts, reason, rebindOpts, within) {
|
|
377
388
|
const now = opts.now?.() ?? new Date();
|
|
378
389
|
const { deviceId, registry } = resolveContext(opts);
|
|
379
390
|
const identity = fileIdentity(opts.dbPath, opts.stat);
|
|
380
391
|
const realpath = realpathSync(opts.dbPath);
|
|
381
|
-
const { previous, current, hwm } = withImmediateTransaction(db, () => {
|
|
392
|
+
const { previous, current, hwm, result } = withImmediateTransaction(db, () => {
|
|
382
393
|
const row = activeReplica(db, opts.scope);
|
|
383
394
|
// @sync-invariant none:local-only no active replica to rebind; machine-local bookkeeping
|
|
384
395
|
if (!row)
|
|
385
396
|
throw new Error(`no active ${opts.scope} replica to rebind`);
|
|
386
397
|
const persisted = storeHwm(db, row.replicaId);
|
|
398
|
+
const next = rebindInTransaction(db, row, identity, deviceId, [reason], now);
|
|
399
|
+
const retired = { ...row, retiredAt: now.toISOString(), successor: next.replicaId };
|
|
387
400
|
return {
|
|
388
401
|
previous: row,
|
|
389
402
|
hwm: persisted,
|
|
390
|
-
current:
|
|
403
|
+
current: next,
|
|
404
|
+
result: within(db, { previous: retired, current: next }),
|
|
391
405
|
};
|
|
392
406
|
});
|
|
393
407
|
// The retired replica is a retire candidate (§1.5 "Retirement"; T13109) only
|
|
@@ -409,7 +423,7 @@ export function rebindReplica(db, opts, reason = 'server-seq-conflict', rebindOp
|
|
|
409
423
|
}, now);
|
|
410
424
|
}
|
|
411
425
|
register(registry, db, current, realpath, now);
|
|
412
|
-
return { replicaId: current.replicaId, previousReplicaId: previous.replicaId };
|
|
426
|
+
return { replicaId: current.replicaId, previousReplicaId: previous.replicaId, result };
|
|
413
427
|
}
|
|
414
428
|
/**
|
|
415
429
|
* After a vault restore or pull placed a snapshot at `dbPath`, retire the
|