@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.
Files changed (105) hide show
  1. package/dist/build-provenance.json +2 -2
  2. package/dist/cloud/nexus-link.d.ts +15 -0
  3. package/dist/cloud/nexus-link.d.ts.map +1 -1
  4. package/dist/cloud/nexus-link.js +25 -0
  5. package/dist/cloud/nexus-link.js.map +1 -1
  6. package/dist/cloud/nexus-vault.d.ts +14 -1
  7. package/dist/cloud/nexus-vault.d.ts.map +1 -1
  8. package/dist/cloud/nexus-vault.js +72 -5
  9. package/dist/cloud/nexus-vault.js.map +1 -1
  10. package/dist/cloud/replica-rebind.d.ts +51 -0
  11. package/dist/cloud/replica-rebind.d.ts.map +1 -0
  12. package/dist/cloud/replica-rebind.js +101 -0
  13. package/dist/cloud/replica-rebind.js.map +1 -0
  14. package/dist/doctor/container-reaper.d.ts +107 -0
  15. package/dist/doctor/container-reaper.d.ts.map +1 -0
  16. package/dist/doctor/container-reaper.js +194 -0
  17. package/dist/doctor/container-reaper.js.map +1 -0
  18. package/dist/store/sync/apply/applier.d.ts +3 -0
  19. package/dist/store/sync/apply/applier.d.ts.map +1 -1
  20. package/dist/store/sync/apply/applier.js +208 -85
  21. package/dist/store/sync/apply/applier.js.map +1 -1
  22. package/dist/store/sync/capture.d.ts +23 -3
  23. package/dist/store/sync/capture.d.ts.map +1 -1
  24. package/dist/store/sync/capture.js +31 -3
  25. package/dist/store/sync/capture.js.map +1 -1
  26. package/dist/store/sync/collision-settle.d.ts +62 -0
  27. package/dist/store/sync/collision-settle.d.ts.map +1 -0
  28. package/dist/store/sync/collision-settle.js +156 -0
  29. package/dist/store/sync/collision-settle.js.map +1 -0
  30. package/dist/store/sync/conflicts.d.ts +11 -0
  31. package/dist/store/sync/conflicts.d.ts.map +1 -1
  32. package/dist/store/sync/conflicts.js +18 -0
  33. package/dist/store/sync/conflicts.js.map +1 -1
  34. package/dist/store/sync/inherit.d.ts +15 -8
  35. package/dist/store/sync/inherit.d.ts.map +1 -1
  36. package/dist/store/sync/inherit.js +28 -11
  37. package/dist/store/sync/inherit.js.map +1 -1
  38. package/dist/store/sync/merge/types.d.ts +6 -0
  39. package/dist/store/sync/merge/types.d.ts.map +1 -1
  40. package/dist/store/sync/pull.d.ts +23 -2
  41. package/dist/store/sync/pull.d.ts.map +1 -1
  42. package/dist/store/sync/pull.js +27 -2
  43. package/dist/store/sync/pull.js.map +1 -1
  44. package/dist/store/sync/rebind.d.ts +112 -0
  45. package/dist/store/sync/rebind.d.ts.map +1 -0
  46. package/dist/store/sync/rebind.js +187 -0
  47. package/dist/store/sync/rebind.js.map +1 -0
  48. package/dist/store/sync/reconcile.d.ts +93 -0
  49. package/dist/store/sync/reconcile.d.ts.map +1 -0
  50. package/dist/store/sync/reconcile.js +330 -0
  51. package/dist/store/sync/reconcile.js.map +1 -0
  52. package/dist/store/sync/repair.d.ts +5 -0
  53. package/dist/store/sync/repair.d.ts.map +1 -1
  54. package/dist/store/sync/repair.js +2 -2
  55. package/dist/store/sync/repair.js.map +1 -1
  56. package/dist/store/sync/replica.d.ts +28 -1
  57. package/dist/store/sync/replica.d.ts.map +1 -1
  58. package/dist/store/sync/replica.js +17 -3
  59. package/dist/store/sync/replica.js.map +1 -1
  60. package/dist/store/sync/retire.d.ts +161 -0
  61. package/dist/store/sync/retire.d.ts.map +1 -0
  62. package/dist/store/sync/retire.js +193 -0
  63. package/dist/store/sync/retire.js.map +1 -0
  64. package/dist/store/sync/schema.d.ts +27 -0
  65. package/dist/store/sync/schema.d.ts.map +1 -1
  66. package/dist/store/sync/schema.js +43 -0
  67. package/dist/store/sync/schema.js.map +1 -1
  68. package/dist/store/sync/sealer.d.ts +10 -0
  69. package/dist/store/sync/sealer.d.ts.map +1 -1
  70. package/dist/store/sync/sealer.js +51 -5
  71. package/dist/store/sync/sealer.js.map +1 -1
  72. package/dist/store/sync/segments.d.ts.map +1 -1
  73. package/dist/store/sync/segments.js +6 -2
  74. package/dist/store/sync/segments.js.map +1 -1
  75. package/dist/store/sync/uid-alias.d.ts +100 -0
  76. package/dist/store/sync/uid-alias.d.ts.map +1 -0
  77. package/dist/store/sync/uid-alias.js +169 -0
  78. package/dist/store/sync/uid-alias.js.map +1 -0
  79. package/dist/store/table-classification.d.ts.map +1 -1
  80. package/dist/store/table-classification.js +48 -0
  81. package/dist/store/table-classification.js.map +1 -1
  82. package/dist/tasks/change-set.d.ts.map +1 -1
  83. package/dist/tasks/change-set.js +16 -5
  84. package/dist/tasks/change-set.js.map +1 -1
  85. package/dist/tasks/complete-ci.d.ts.map +1 -1
  86. package/dist/tasks/complete-ci.js +7 -1
  87. package/dist/tasks/complete-ci.js.map +1 -1
  88. package/dist/tasks/done-plan.d.ts.map +1 -1
  89. package/dist/tasks/done-plan.js +24 -17
  90. package/dist/tasks/done-plan.js.map +1 -1
  91. package/dist/tasks/evidence.d.ts.map +1 -1
  92. package/dist/tasks/evidence.js +3 -2
  93. package/dist/tasks/evidence.js.map +1 -1
  94. package/dist/tasks/gate-runner.d.ts +20 -0
  95. package/dist/tasks/gate-runner.d.ts.map +1 -1
  96. package/dist/tasks/gate-runner.js +141 -19
  97. package/dist/tasks/gate-runner.js.map +1 -1
  98. package/dist/validation/engine-ops.d.ts.map +1 -1
  99. package/dist/validation/engine-ops.js +2 -0
  100. package/dist/validation/engine-ops.js.map +1 -1
  101. package/migrations/sync-journal/20261009130000_t13278-replica-retire/migration.sql +29 -0
  102. package/migrations/sync-journal/20261009140000_t13366-retire-confirm/migration.sql +18 -0
  103. package/migrations/sync-journal/20261010150000_t13397-uid-alias/migration.sql +32 -0
  104. package/migrations/sync-journal/20261010160000_t13399-rekey-follow/migration.sql +57 -0
  105. package/package.json +13 -13
@@ -0,0 +1,156 @@
1
+ /**
2
+ * The origin settles a uid collision it lost (T13397; T12341 §6.4 "Re-key",
3
+ * §9.2 origin rule).
4
+ *
5
+ * Apply holds an incoming row whose uid a local row holds with another birth
6
+ * fingerprint (T13394) and records a `uid-collision` conflict naming the
7
+ * loser, the greater fingerprint. When the local row is the loser and this
8
+ * replica authored it, this replica is the authority that re-keys it: the row
9
+ * gets a fresh uid in a local `rekey` frame, so the capture triggers journal
10
+ * the K (and the cascade's K ops) and the next push publishes it. The held
11
+ * winner then places under the freed uid on the next pass, and every receiver
12
+ * holding the loser follows the K through its alias (store/sync/uid-alias).
13
+ *
14
+ * A loser this replica only received (its origin is elsewhere) is never
15
+ * re-keyed here: it waits for its origin's K, which moves it like any re-key.
16
+ *
17
+ * @module store/sync/collision-settle
18
+ * @task T13397
19
+ */
20
+ import { rekeyRowUid } from '../display-id-alias.js';
21
+ import { mintRowUid } from '../row-identity.js';
22
+ import { BIRTH_FP_COLUMN, rowIdentitySpec, UID_COLUMN } from '../row-identity-registry.js';
23
+ import { setRowUidNative } from '../sqlite-data-accessor.js';
24
+ import { captureRekeyAnnouncement, captureTableDef, finishCaptureFrame, openCaptureFrame, } from './capture.js';
25
+ import { stagedTxns } from './inbox.js';
26
+ import { hasTable } from './schema.js';
27
+ import { markAliasAnnounced, owedAnnouncements } from './uid-alias.js';
28
+ const q = (id) => `"${id.replaceAll('"', '""')}"`;
29
+ /** The incoming (winner) fingerprint of each open lost collision, by row. */
30
+ function lostCollisions(db, stream) {
31
+ const open = db
32
+ .prepare(`SELECT seq, txn_idx AS txnIdx, op_idx AS opIdx, tbl, uid FROM _sync_conflict
33
+ WHERE stream = ? AND kind = 'uid-collision' AND rule = 'loser:local' AND resolved_at IS NULL`)
34
+ .all(stream);
35
+ const out = new Map();
36
+ if (open.length === 0)
37
+ return out;
38
+ const staged = stagedTxns(db, stream);
39
+ for (const c of open) {
40
+ const st = staged.find((s) => s.key.seq === c.seq && s.key.txnIdx === c.txnIdx);
41
+ const fp = st?.txn.ops[c.opIdx]?.bfp;
42
+ if (fp)
43
+ out.set(`${c.tbl}\u0000${c.uid}`, { table: c.tbl, uid: c.uid, incomingFp: fp });
44
+ }
45
+ return out;
46
+ }
47
+ /**
48
+ * Whether this replica sealed the insert of the row (table, uid,
49
+ * fingerprint). `_sync_authored` keeps it after the transaction's ops are
50
+ * folded or collected (T13399); a store without it falls back to the ops.
51
+ */
52
+ function authoredHere(db, table, uid, fp, replica) {
53
+ if (hasTable(db, '_sync_authored') &&
54
+ db
55
+ .prepare('SELECT 1 FROM _sync_authored WHERE tbl = ? AND uid = ? AND bfp = ? AND replica = ?')
56
+ .get(table, uid, fp, replica) !== undefined) {
57
+ return true;
58
+ }
59
+ return (hasTable(db, '_sync_op') &&
60
+ db
61
+ .prepare(`SELECT 1 FROM _sync_op o JOIN _sync_txn t ON t.txn = o.txn
62
+ WHERE o.tbl = ? AND o.uid = ? AND o.o = 'I' AND t.replica = ?
63
+ AND json_extract(o.body, '$.bfp') = ? LIMIT 1`)
64
+ .get(table, uid, replica, fp) !== undefined);
65
+ }
66
+ /**
67
+ * Re-key every row this replica lost a uid collision with and authored
68
+ * (module doc). Each re-key is its own local transaction in a `rekey` frame;
69
+ * the caller seals and applies again.
70
+ *
71
+ * @param db - The store; must not be inside a transaction.
72
+ * @param opts - Scope, stream and this replica.
73
+ * @returns The re-keys made.
74
+ */
75
+ export function settleLostUidCollisions(db, opts) {
76
+ if (!hasTable(db, '_sync_conflict'))
77
+ return [];
78
+ const settled = [];
79
+ for (const c of lostCollisions(db, opts.stream).values()) {
80
+ const row = db
81
+ .prepare(`SELECT ${q(BIRTH_FP_COLUMN)} AS fp FROM main.${q(c.table)} WHERE ${q(UID_COLUMN)} = ?`)
82
+ .get(c.uid);
83
+ const fp = row?.fp ?? null;
84
+ // Only the loser (the greater fingerprint) is re-keyed, and only by its origin.
85
+ if (fp === null || !(c.incomingFp < fp))
86
+ continue;
87
+ if (!authoredHere(db, c.table, c.uid, fp, opts.replica))
88
+ continue;
89
+ db.exec('BEGIN IMMEDIATE');
90
+ try {
91
+ const frame = openCaptureFrame(db, 'rekey', null);
92
+ let newUid;
93
+ if (opts.scope === 'project' && rowIdentitySpec('project', c.table)?.kind === 'minted') {
94
+ // The project re-key cascades owned children and natural rows, and
95
+ // writes the portable uid alias (T12341 §6.4).
96
+ newUid = rekeyRowUid(db, c.table, c.uid, { loserBirthFp: fp, winnerBirthFp: c.incomingFp }, { origin: opts.replica }).newUid;
97
+ }
98
+ else {
99
+ // The global store's minted tables (brain) own no children by uid.
100
+ newUid = mintRowUid();
101
+ setRowUidNative(db, c.table, c.uid, fp, newUid);
102
+ }
103
+ finishCaptureFrame(db, frame);
104
+ db.exec('COMMIT');
105
+ settled.push({ table: c.table, oldUid: c.uid, newUid, birthFp: fp });
106
+ }
107
+ catch (err) {
108
+ if (db.isTransaction)
109
+ db.exec('ROLLBACK');
110
+ throw err;
111
+ }
112
+ }
113
+ return settled;
114
+ }
115
+ /**
116
+ * Announce every re-key this replica applied to a loser it had placed
117
+ * (T13399). The loser's origin draws the boundary for its own references with
118
+ * its K; a replica the origin's insert reached before the winner's may also
119
+ * have written references to the old uid that meant the loser. Receivers only
120
+ * read a writer's references through an alias that writer drew, so this
121
+ * replica re-states the re-key under its own name: an alias-only K in a local
122
+ * `rekey` frame (it moves nothing here). The caller seals.
123
+ *
124
+ * @param db - The store; must not be inside a transaction.
125
+ * @param opts - Scope, stream and this replica.
126
+ * @param nowIso - The time.
127
+ * @returns The announcements captured.
128
+ */
129
+ export function announcePlacedRekeys(db, opts, nowIso) {
130
+ const owed = owedAnnouncements(db);
131
+ if (owed.length === 0)
132
+ return 0;
133
+ let n = 0;
134
+ db.exec('BEGIN IMMEDIATE');
135
+ try {
136
+ const frame = openCaptureFrame(db, 'rekey', null);
137
+ // Capture off: nothing can be announced, and the debt stays.
138
+ if (frame !== null) {
139
+ for (const a of owed) {
140
+ const def = captureTableDef(db, opts.scope, a.table);
141
+ if (def)
142
+ n += captureRekeyAnnouncement(db, def, a.oldUid, a.newUid, a.oldBfp);
143
+ markAliasAnnounced(db, a, nowIso);
144
+ }
145
+ finishCaptureFrame(db, frame);
146
+ }
147
+ db.exec('COMMIT');
148
+ }
149
+ catch (err) {
150
+ if (db.isTransaction)
151
+ db.exec('ROLLBACK');
152
+ throw err;
153
+ }
154
+ return n;
155
+ }
156
+ //# sourceMappingURL=collision-settle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collision-settle.js","sourceRoot":"","sources":["../../../src/store/sync/collision-settle.ts"],"names":[],"mappings":"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"}
@@ -80,6 +80,17 @@ export declare function listConflicts(db: DatabaseSync, opts?: {
80
80
  * @returns Whether an open conflict had that id.
81
81
  */
82
82
  export declare function resolveConflict(db: DatabaseSync, id: number, nowIso: string): boolean;
83
+ /**
84
+ * Mark the held-collision conflicts of one inbox transaction resolved, once
85
+ * it has gone through (T13397): the uid collision settled by the loser's
86
+ * re-key, or the local key freed. Other conflicts stay open.
87
+ *
88
+ * @param db - The store, inside the apply frame's transaction.
89
+ * @param key - The inbox transaction.
90
+ * @param nowIso - The time.
91
+ * @returns How many were resolved.
92
+ */
93
+ export declare function resolveHeldConflicts(db: DatabaseSync, key: InboxKey, nowIso: string): number;
83
94
  /**
84
95
  * How many conflicts the store holds, or one stream of it.
85
96
  *
@@ -1 +1 @@
1
- {"version":3,"file":"conflicts.d.ts","sourceRoot":"","sources":["../../../src/store/sync/conflicts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,sEAAsE;AACtE,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,2BAA2B;AAC3B,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,IAAI,CAyBN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAUT;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,YAAY,EAChB,IAAI,GAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,cAAc,EAAE,CA+BlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKrF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOjG"}
1
+ {"version":3,"file":"conflicts.d.ts","sourceRoot":"","sources":["../../../src/store/sync/conflicts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,sEAAsE;AACtE,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,2BAA2B;AAC3B,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,IAAI,CAyBN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAUT;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,YAAY,EAChB,IAAI,GAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,cAAc,EAAE,CA+BlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAS5F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOjG"}
@@ -105,6 +105,24 @@ export function resolveConflict(db, id, nowIso) {
105
105
  .run(nowIso, id);
106
106
  return Number(r.changes) > 0;
107
107
  }
108
+ /**
109
+ * Mark the held-collision conflicts of one inbox transaction resolved, once
110
+ * it has gone through (T13397): the uid collision settled by the loser's
111
+ * re-key, or the local key freed. Other conflicts stay open.
112
+ *
113
+ * @param db - The store, inside the apply frame's transaction.
114
+ * @param key - The inbox transaction.
115
+ * @param nowIso - The time.
116
+ * @returns How many were resolved.
117
+ */
118
+ export function resolveHeldConflicts(db, key, nowIso) {
119
+ const r = db
120
+ .prepare(`UPDATE _sync_conflict SET resolved_at = ?
121
+ WHERE stream = ? AND seq = ? AND txn_idx = ? AND resolution = 'op-held'
122
+ AND kind IN ('uid-collision', 'key-collision') AND resolved_at IS NULL`)
123
+ .run(nowIso, key.stream, key.seq, key.txnIdx);
124
+ return Number(r.changes);
125
+ }
108
126
  /**
109
127
  * How many conflicts the store holds, or one stream of it.
110
128
  *
@@ -1 +1 @@
1
- {"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../../src/store/sync/conflicts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../../src/store/sync/conflicts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiDH;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAgB,EAChB,IAAkB,EAClB,SAAmC,EACnC,MAAc,EACd,MAAc;IAEd,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACnC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB;;uDAEmD,CACpD,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,EACV,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,GAAG,EACL,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EACzB,CAAC,CAAC,IAAI,IAAI,IAAI,EACd,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,QAAQ,IAAI,IAAI,EAClB,MAAM,EACN,MAAM,CACP,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAgB,EAChB,IAAkB,EAClB,QAAuB,EACvB,MAAc,EACd,MAAc;IAEd,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;iFAC2E,CAC5E;SACA,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACvB,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAgB,EAChB,OAA8D,EAAE;IAEhE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN,gCAAgC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,CACrG;SACA,GAAG,CAAC,GAAG,IAAI,CAAkB,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE,CAAC,CAAC,OAAO;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM;QACf,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,GAAG;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAa;QAC/C,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM;QACf,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,UAAU,EAAE,CAAC,CAAC,WAAW;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,EAAgB,EAAE,EAAU,EAAE,MAAc;IAC1E,MAAM,CAAC,GAAG,EAAE;SACT,OAAO,CAAC,gFAAgF,CAAC;SACzF,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAgB,EAAE,GAAa,EAAE,MAAc;IAClF,MAAM,CAAC,GAAG,EAAE;SACT,OAAO,CACN;;iFAE2E,CAC5E;SACA,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,EAAgB,EAAE,MAAe;IAC9D,MAAM,GAAG,GACP,6FAA6F,CAAC;IAChG,MAAM,GAAG,GAAG,CACV,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAC9D,CAAC;IACrC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9D,CAAC"}
@@ -9,10 +9,14 @@
9
9
  * captures, and only non-inherited transactions are ever built or sent, so a
10
10
  * new replica never re-emits the original's rows.
11
11
  *
12
- * What a copy changed and never sent is not lost: the S4 reconcile restores
13
- * the latest checkpoint, diffs it against this store and re-emits those
14
- * fields under the new replica (§1.5 three-way rule). Segmented transactions
15
- * and segments are S4's to mark when they arrive.
12
+ * Segments the old replica built and never pushed are inherited too, with
13
+ * the transactions they carry (S4, T13278): push only ever sends the active
14
+ * replica's segments, and the state says why these never will be. A segment
15
+ * the server already stored must be marked pushed before the rebind (the
16
+ * rebind at head does, from the pull cursor), or it reads as inherited.
17
+ *
18
+ * What a copy changed and never sent is not lost: the reconcile re-emits
19
+ * those fields under the new replica (§1.5 three-way rule, `reconcile.ts`).
16
20
  *
17
21
  * @task T12753
18
22
  * @module store/sync/inherit
@@ -22,13 +26,16 @@ import type { DatabaseSync } from 'node:sqlite';
22
26
  export interface InheritedRows {
23
27
  /** Captures that were still live (unsealed). */
24
28
  readonly captures: number;
25
- /** Sealed transactions not yet carried by a segment. */
29
+ /** Sealed transactions not yet carried by a pushed segment. */
26
30
  readonly txns: number;
31
+ /** Segments built and never pushed. */
32
+ readonly segments: number;
27
33
  }
28
34
  /**
29
- * Mark every live capture and every sealed transaction `inherited`. Runs in
30
- * the caller's (rebind) transaction; a store without the outbox tables has
31
- * nothing to mark.
35
+ * Mark every live capture, every sealed transaction, and every unpushed
36
+ * segment with the transactions it carries `inherited`. Runs in the caller's
37
+ * (rebind) transaction; a store without the outbox tables has nothing to
38
+ * mark.
32
39
  *
33
40
  * @returns How many rows were marked.
34
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"inherit.d.ts","sourceRoot":"","sources":["../../../src/store/sync/inherit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,aAAa,CAajE"}
1
+ {"version":3,"file":"inherit.d.ts","sourceRoot":"","sources":["../../../src/store/sync/inherit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,aAAa,CA+BjE"}
@@ -9,19 +9,24 @@
9
9
  * captures, and only non-inherited transactions are ever built or sent, so a
10
10
  * new replica never re-emits the original's rows.
11
11
  *
12
- * What a copy changed and never sent is not lost: the S4 reconcile restores
13
- * the latest checkpoint, diffs it against this store and re-emits those
14
- * fields under the new replica (§1.5 three-way rule). Segmented transactions
15
- * and segments are S4's to mark when they arrive.
12
+ * Segments the old replica built and never pushed are inherited too, with
13
+ * the transactions they carry (S4, T13278): push only ever sends the active
14
+ * replica's segments, and the state says why these never will be. A segment
15
+ * the server already stored must be marked pushed before the rebind (the
16
+ * rebind at head does, from the pull cursor), or it reads as inherited.
17
+ *
18
+ * What a copy changed and never sent is not lost: the reconcile re-emits
19
+ * those fields under the new replica (§1.5 three-way rule, `reconcile.ts`).
16
20
  *
17
21
  * @task T12753
18
22
  * @module store/sync/inherit
19
23
  */
20
24
  import { hasTable } from './schema.js';
21
25
  /**
22
- * Mark every live capture and every sealed transaction `inherited`. Runs in
23
- * the caller's (rebind) transaction; a store without the outbox tables has
24
- * nothing to mark.
26
+ * Mark every live capture, every sealed transaction, and every unpushed
27
+ * segment with the transactions it carries `inherited`. Runs in the caller's
28
+ * (rebind) transaction; a store without the outbox tables has nothing to
29
+ * mark.
25
30
  *
26
31
  * @returns How many rows were marked.
27
32
  */
@@ -30,9 +35,21 @@ export function markInheritedRows(db) {
30
35
  ? Number(db.prepare("UPDATE _sync_capture SET state = 'inherited' WHERE state = 'live'").run()
31
36
  .changes)
32
37
  : 0;
33
- const txns = hasTable(db, '_sync_txn')
34
- ? Number(db.prepare("UPDATE _sync_txn SET state = 'inherited' WHERE state = 'sealed'").run().changes)
35
- : 0;
36
- return { captures, txns };
38
+ let txns = 0;
39
+ let segments = 0;
40
+ if (hasTable(db, '_sync_txn')) {
41
+ if (hasTable(db, '_sync_segment')) {
42
+ txns += Number(db
43
+ .prepare(`UPDATE _sync_txn SET state = 'inherited' WHERE state = 'segmented' AND txn IN (
44
+ SELECT m.txn FROM _sync_segment_txn m JOIN _sync_segment s
45
+ ON s.stream = m.stream AND s.replica_id = m.replica_id AND s.replica_seq = m.replica_seq
46
+ WHERE s.state = 'sealed')`)
47
+ .run().changes);
48
+ segments = Number(db.prepare("UPDATE _sync_segment SET state = 'inherited' WHERE state = 'sealed'").run()
49
+ .changes);
50
+ }
51
+ txns += Number(db.prepare("UPDATE _sync_txn SET state = 'inherited' WHERE state = 'sealed'").run().changes);
52
+ }
53
+ return { captures, txns, segments };
37
54
  }
38
55
  //# sourceMappingURL=inherit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inherit.js","sourceRoot":"","sources":["../../../src/store/sync/inherit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAUvC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAgB;IAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;QAC5C,CAAC,CAAC,MAAM,CACJ,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,EAAE;aAClF,OAAO,CACX;QACH,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;QACpC,CAAC,CAAC,MAAM,CACJ,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAC5F;QACH,CAAC,CAAC,CAAC,CAAC;IACN,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"inherit.js","sourceRoot":"","sources":["../../../src/store/sync/inherit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAYvC;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAgB;IAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;QAC5C,CAAC,CAAC,MAAM,CACJ,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,EAAE;aAClF,OAAO,CACX;QACH,CAAC,CAAC,CAAC,CAAC;IACN,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9B,IAAI,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC;YAClC,IAAI,IAAI,MAAM,CACZ,EAAE;iBACC,OAAO,CACN;;;0CAG8B,CAC/B;iBACA,GAAG,EAAE,CAAC,OAAO,CACjB,CAAC;YACF,QAAQ,GAAG,MAAM,CACf,EAAE,CAAC,OAAO,CAAC,qEAAqE,CAAC,CAAC,GAAG,EAAE;iBACpF,OAAO,CACX,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,MAAM,CACZ,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC"}
@@ -156,6 +156,12 @@ export type MergeConflictKind =
156
156
  * onto a live uid is voided.
157
157
  */
158
158
  | 'uid-collision'
159
+ /**
160
+ * (applier) An insert's local key (a display id) is held here by a row of
161
+ * another uid (T12341 §6.4 step 7): the insert is held until a re-mint
162
+ * frees the key, never voided by the UNIQUE constraint.
163
+ */
164
+ | 'key-collision'
159
165
  /** (applier) A Gate C post-apply invariant broke: the whole transaction is voided. */
160
166
  | 'post-apply';
161
167
  /** One recorded conflict. Never silently dropped: the applier persists it. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/store/sync/merge/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/store/sync/merge/types.ts"],"names":[],"mappings":"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"}
@@ -23,11 +23,14 @@
23
23
  * from the seen ledger or arrived out of order; the pull stops there, loud,
24
24
  * and never skips it as seen;
25
25
  * - stages the rest (`stageTxns`), schema-ahead ones included (the applier
26
- * holds them `refused-schema` and replays them after an upgrade);
26
+ * holds them `refused-schema` and replays them after an upgrade), and
27
+ * records each `retire` at its stream seq (`_sync_retired`, T13278);
27
28
  * - advances the cursor.
28
29
  *
29
30
  * Then the applier applies what is staged, in stream order, own echoes
30
- * included (they feed the fast path and the scoped rebase, §3.5).
31
+ * included (they feed the fast path and the scoped rebase, §3.5). A pull
32
+ * that reached the head runs the rebind the undo budget scheduled (D5,
33
+ * `rebind.ts`), when the caller passes the store's open options.
31
34
  *
32
35
  * The page source is a port ({@link SegmentPuller}): the journal client in
33
36
  * production (`cloud/nexus-vault.ts`), a fake in tests.
@@ -39,6 +42,9 @@ import type { DatabaseSync } from 'node:sqlite';
39
42
  import type { TableScope } from '@cleocode/contracts';
40
43
  import { LedgerTxn } from '@cleocode/contracts/ledger';
41
44
  import { type ApplyReport, type ApplyStagedOptions } from './apply/applier.js';
45
+ import { type RebindAtHeadReport } from './rebind.js';
46
+ import type { SyncOpenOptions } from './replica.js';
47
+ import { type ServerRetirement } from './retire.js';
42
48
  /** Where a pull stands (the journal client's `PullCursor`). */
43
49
  export interface StreamCursor {
44
50
  /** The last stream seq staged. */
@@ -94,6 +100,19 @@ export interface PullStreamOptions {
94
100
  * refused (`below-floor`), never applied twice. @defaultValue false
95
101
  */
96
102
  readonly pruneSeen?: boolean;
103
+ /**
104
+ * The canonical store's open options: when given and the undo budget
105
+ * scheduled a rebind (`sync.undo_budget_exceeded`, D5), a pull that reaches
106
+ * the stream's head runs it ({@link rebindAtHead}, T13278). A pull that is
107
+ * refused or stops short never does, so the key stays set.
108
+ */
109
+ readonly rebind?: Omit<SyncOpenOptions, 'scope'>;
110
+ /**
111
+ * The server's retirements on this stream (T13366): after staging and
112
+ * before the apply, each recorded retire they match is confirmed
113
+ * ({@link confirmRetirements}). A retire never confirmed changes nothing.
114
+ */
115
+ readonly serverRetirements?: readonly ServerRetirement[];
97
116
  }
98
117
  /**
99
118
  * Why {@link pullStream} stopped short, as a kind callers branch on (the
@@ -128,6 +147,8 @@ export interface PullStreamReport {
128
147
  readonly head: number;
129
148
  /** What the applier did, or null when the pull was refused. */
130
149
  readonly apply: ApplyReport | null;
150
+ /** The rebind this pull ran at head (T13278), or null. */
151
+ readonly rebind: RebindAtHeadReport | null;
131
152
  }
132
153
  /** A segment the store refuses to stage (a malformed body or a bad transaction signature). */
133
154
  export declare class SegmentRefusedError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/store/sync/pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/store/sync/pull.ts"],"names":[],"mappings":"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"}
@@ -23,11 +23,14 @@
23
23
  * from the seen ledger or arrived out of order; the pull stops there, loud,
24
24
  * and never skips it as seen;
25
25
  * - stages the rest (`stageTxns`), schema-ahead ones included (the applier
26
- * holds them `refused-schema` and replays them after an upgrade);
26
+ * holds them `refused-schema` and replays them after an upgrade), and
27
+ * records each `retire` at its stream seq (`_sync_retired`, T13278);
27
28
  * - advances the cursor.
28
29
  *
29
30
  * Then the applier applies what is staged, in stream order, own echoes
30
- * included (they feed the fast path and the scoped rebase, §3.5).
31
+ * included (they feed the fast path and the scoped rebase, §3.5). A pull
32
+ * that reached the head runs the rebind the undo budget scheduled (D5,
33
+ * `rebind.ts`), when the caller passes the store's open options.
31
34
  *
32
35
  * The page source is a port ({@link SegmentPuller}): the journal client in
33
36
  * production (`cloud/nexus-vault.ts`), a fake in tests.
@@ -41,6 +44,8 @@ import { applyStagedTxns } from './apply/applier.js';
41
44
  import { withImmediateTransaction } from './clock-store.js';
42
45
  import { isSyncFlagOn } from './flags.js';
43
46
  import { stageTxns } from './inbox.js';
47
+ import { rebindAtHead } from './rebind.js';
48
+ import { confirmRetirements, recordRetirement } from './retire.js';
44
49
  import { ensureSyncSchema, hasTable, healSyncSchema } from './schema.js';
45
50
  /** The plaintext kind of a vault count-delta segment (`cloud/nexus-vault.ts`). */
46
51
  export const VAULT_DELTA_KIND = 'cleo-vault-delta/v1';
@@ -325,6 +330,7 @@ export async function pullStream(db, o) {
325
330
  after: readStreamCursor(db, o.stream)?.after ?? o.initialCursor.after,
326
331
  head: 0,
327
332
  apply: null,
333
+ rebind: null,
328
334
  };
329
335
  }
330
336
  ensureSeenFloor(db);
@@ -376,6 +382,16 @@ export async function pullStream(db, o) {
376
382
  for (const t of plan.fresh) {
377
383
  seen.run(o.stream, t.txn, seg.seq);
378
384
  bytes += seenBytes(o.stream, t.txn);
385
+ // A retire, emitted by its successor, is recorded at its stream seq:
386
+ // later transactions of the retired replica are history (T13278).
387
+ if (t.kind === 'retire' && t.retire && t.retire.successor === seg.replicaId) {
388
+ recordRetirement(db, o.stream, {
389
+ ...t.retire,
390
+ txn: t.txn,
391
+ hlc: t.hlc,
392
+ seq: seg.seq,
393
+ });
394
+ }
379
395
  }
380
396
  raise.run(o.stream, seg.replicaId, plan.stagedUpto, plan.fresh.length, bytes);
381
397
  staged += stageTxns(db, o.stream, {
@@ -405,6 +421,8 @@ export async function pullStream(db, o) {
405
421
  }
406
422
  if (o.pruneSeen === true)
407
423
  pruneSeenTxns(db, o.stream);
424
+ if (o.serverRetirements !== undefined)
425
+ confirmRetirements(db, o.stream, o.serverRetirements);
408
426
  const apply = applyStagedTxns(db, {
409
427
  scope: o.scope,
410
428
  stream: o.stream,
@@ -413,6 +431,12 @@ export async function pullStream(db, o) {
413
431
  seal: o.seal,
414
432
  ...(o.apply ?? {}),
415
433
  });
434
+ // D5: the rebind the undo budget scheduled runs only once the stream's
435
+ // head is reached and nothing was refused (T13278).
436
+ const atHead = refused === null && cursor.after >= head;
437
+ const rebind = o.rebind !== undefined && atHead
438
+ ? rebindAtHead(db, { ...o.rebind, scope: o.scope, stream: o.stream, cursor })
439
+ : null;
416
440
  return {
417
441
  stream: o.stream,
418
442
  refused,
@@ -424,6 +448,7 @@ export async function pullStream(db, o) {
424
448
  after: cursor.after,
425
449
  head,
426
450
  apply,
451
+ rebind,
427
452
  };
428
453
  }
429
454
  //# sourceMappingURL=pull.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/store/sync/pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/store/sync/pull.ts"],"names":[],"mappings":"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"}