@microdelta/history 0.2.0 → 0.3.0
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/README.md +5 -4
- package/dist/api/history.alpha.d.ts +2 -2
- package/dist/api/history.root.raw.alpha.d.ts +50 -4
- package/dist/api/history.root.raw.beta.d.ts +6 -0
- package/dist/api/history.root.raw.public.d.ts +6 -0
- package/dist/api/history.root.raw.untrimmed.d.ts +50 -4
- package/dist/api/history.shared.alpha.d.ts +50 -4
- package/dist/api/history.shared.beta.d.ts +6 -0
- package/dist/api/history.shared.public.d.ts +6 -0
- package/dist/api/history.shared.untrimmed.d.ts +50 -4
- package/dist/api/history.untrimmed.d.ts +2 -2
- package/dist/src/durable/contracts.d.ts +4 -2
- package/dist/src/durable/contracts.d.ts.map +1 -1
- package/dist/src/durable/errors.d.ts +20 -4
- package/dist/src/durable/errors.d.ts.map +1 -1
- package/dist/src/durable/errors.js +13 -8
- package/dist/src/durable/errors.js.map +1 -1
- package/dist/src/durable/index.d.ts.map +1 -1
- package/dist/src/durable/index.js +80 -72
- package/dist/src/durable/index.js.map +1 -1
- package/dist/src/durable/schema.d.ts +13 -11
- package/dist/src/durable/schema.d.ts.map +1 -1
- package/dist/src/durable/schema.js +32 -23
- package/dist/src/durable/schema.js.map +1 -1
- package/dist/src/durable/selected-index.d.ts.map +1 -1
- package/dist/src/durable/selected-index.js +16 -4
- package/dist/src/durable/selected-index.js.map +1 -1
- package/dist/src/durable/sqlite-boundary.d.ts +11 -0
- package/dist/src/durable/sqlite-boundary.d.ts.map +1 -0
- package/dist/src/durable/sqlite-boundary.js +79 -0
- package/dist/src/durable/sqlite-boundary.js.map +1 -0
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* storage failure for Value's rejection of a selection's shape.
|
|
9
|
-
* @packageDocumentation
|
|
2
|
+
* A History-owned SQLite operation exhausted Machine's bounded busy wait.
|
|
3
|
+
* The exact host failure is retained as `cause`, so callers can distinguish
|
|
4
|
+
* contention from corruption or a stale writer without losing host detail.
|
|
5
|
+
* History wraps only failures raised at its SQLite capability boundary, never
|
|
6
|
+
* an application callback that happened to throw a Machine busy error.
|
|
7
|
+
* @alpha
|
|
10
8
|
*/
|
|
9
|
+
export class HistoryBusyError extends Error {
|
|
10
|
+
/** Create History's boundary failure while retaining the original host error. */
|
|
11
|
+
constructor(message, cause) {
|
|
12
|
+
super(message, { cause });
|
|
13
|
+
this.name = 'HistoryBusyError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
11
16
|
/**
|
|
12
17
|
* The store's contents contradict History's invariants or the caller's exact
|
|
13
18
|
* reference: a malformed, missing or wrong-scope reference, a dangling
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/durable/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/durable/errors.ts"],"names":[],"mappings":"AAaA;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAIzC,iFAAiF;IACjF,YAAmB,OAAe,EAAE,KAAsB;QACxD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,6DAA6D;IAC7D,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,2DAA2D;IAC3D,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,oEAAoE;IACpE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,uEAAuE;IACvE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,wEAAwE;IACxE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,wDAAwD;IACxD,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,oEAAoE;IACpE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,sEAAsE;IACtE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/durable/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/durable/index.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAQV,eAAe,EACf,sBAAsB,EAiBvB,MAAM,gBAAgB,CAAC;AA2DxB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAwwBnF"}
|
|
@@ -1,46 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* History's durable SQLite authority: the single consistency owner for
|
|
3
|
-
* attempts, the single logical writer, atomic publication, current pointers,
|
|
4
|
-
* immutable completed results, separate acceptance records, recorded
|
|
5
|
-
* promotions and Run Supervision's operation journal (PUB-001–004,
|
|
6
|
-
* RES-002–007, ARC-007, RUN-011/012/017). It owns every SQL statement and
|
|
7
|
-
* lifecycle decision over injected Machine capabilities; Node access stays in
|
|
8
|
-
* the host adapter.
|
|
9
|
-
*
|
|
10
|
-
* Every record lives in one environment namespace of one analysis. A result
|
|
11
|
-
* is admissible in the environment that published it and, only through a
|
|
12
|
-
* recorded promotion, in another environment of the same analysis: there it
|
|
13
|
-
* may be a candidate, a dependency or an acceptance target, while keeping its
|
|
14
|
-
* own exact reference, and nothing else crosses environments.
|
|
15
|
-
*
|
|
16
|
-
* Transition and recovery outcomes (each row is one IMMEDIATE transaction):
|
|
17
|
-
*
|
|
18
|
-
* | Transition | Durable change | Death before commit | Death after commit |
|
|
19
|
-
* | --- | --- | --- | --- |
|
|
20
|
-
* | acquire | new holder, fence + 1, expiry | no change | lease held until expiry |
|
|
21
|
-
* | renew | later expiry; fence unchanged | lease unchanged | lease extended |
|
|
22
|
-
* | release | no holder; fence unchanged | lease held until expiry | next grant needs no expiry |
|
|
23
|
-
* | allocate | attempt counter + 1, `allocated` attempt with key and intent | identity never issued | identity consumed, no result |
|
|
24
|
-
* | stage | `staged` content and dependencies | attempt stays `allocated` | candidate evidence only, never a result |
|
|
25
|
-
* | publish | result, index, provenance, `completed`, current pointer | attempt stays `staged` | complete result; recover by key |
|
|
26
|
-
* | abandon | `failed`/`interrupted` with evidence | attempt unchanged | attempt ended without result |
|
|
27
|
-
* | accept | acceptance record in the accepting environment naming an existing result | no change | record retained; result untouched |
|
|
28
|
-
* | promote | promotion record naming exact results for a target environment | no change, identity never issued | results admitted there; nothing else changes |
|
|
29
|
-
* | journal commit | one immutable revision per write (see `journal.ts`) | no revision, no sequence issued | every revision durable |
|
|
30
|
-
*
|
|
31
|
-
* It decides no reuse eligibility or freshness and interprets no provenance,
|
|
32
|
-
* promotion evidence or journal record.
|
|
33
|
-
* This is single-file process-termination scope, not a concurrency, power-loss
|
|
34
|
-
* or distributed-time guarantee.
|
|
35
|
-
* @packageDocumentation
|
|
36
|
-
*/
|
|
37
|
-
import { SqliteBusyError } from '@microdelta/machine';
|
|
38
1
|
import { decodeSnapshot, encodeSnapshot } from '@microdelta/value';
|
|
39
|
-
import { AttemptConflictError, AttemptStateError, HistoryClockError, HistoryIntegrityError, StaleWriterError, } from './errors.js';
|
|
2
|
+
import { AttemptConflictError, AttemptStateError, HistoryClockError, HistoryBusyError, HistoryIntegrityError, StaleWriterError, } from './errors.js';
|
|
40
3
|
import { parseReference, referenceFor } from './locator.js';
|
|
41
4
|
import { createJournalStore } from './journal.js';
|
|
42
5
|
import { historyScope, integer, loadRecord, requireName, requireNonnegative, requirePositive, safeSum, storeRecord, text } from './records.js';
|
|
43
6
|
import { initializeSchema } from './schema.js';
|
|
7
|
+
import { isHistorySqliteBoundaryBusy, openHistorySqlite } from './sqlite-boundary.js';
|
|
44
8
|
import { buildIndex, createSelectedIndex, indexVersion } from './selected-index.js';
|
|
45
9
|
/** Identity tag for embedded SQL; the text is passed through unchanged. */
|
|
46
10
|
const sql = String.raw;
|
|
@@ -79,15 +43,22 @@ function attemptState(row) {
|
|
|
79
43
|
export function openDurableHistory(options) {
|
|
80
44
|
const logicalStore = requireName(options.logicalStore, 'logicalStore');
|
|
81
45
|
const clock = options.clock;
|
|
82
|
-
const connection = options.sqlite
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
46
|
+
const connection = openHistorySqlite(options.sqlite, options.location);
|
|
47
|
+
/** Close a partly opened History handle without hiding the original opening failure. */
|
|
48
|
+
function duringOpening(operation) {
|
|
49
|
+
try {
|
|
50
|
+
return operation();
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
try {
|
|
54
|
+
connection.close();
|
|
55
|
+
}
|
|
56
|
+
catch { /* The opening failure is the diagnostic owed to the caller. */ }
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
89
59
|
}
|
|
90
|
-
|
|
60
|
+
duringOpening(() => initializeSchema(connection, logicalStore));
|
|
61
|
+
const statements = duringOpening(() => ({
|
|
91
62
|
writer: connection.prepare(sql `/* writer */ SELECT last_fence, holder, expires_at, time_high_water FROM history_writer WHERE singleton = 1`),
|
|
92
63
|
observeTime: connection.prepare(sql `/* writer */ UPDATE history_writer SET time_high_water = ? WHERE singleton = 1`),
|
|
93
64
|
// Only a grant writes the fence. Renewal and release leave last_fence as
|
|
@@ -126,13 +97,23 @@ export function openDurableHistory(options) {
|
|
|
126
97
|
FROM history_results r LEFT JOIN history_attempts a ON a.attempt_id = r.result_id WHERE r.result_id = ?`),
|
|
127
98
|
envelope: connection.prepare(sql `/* envelope */ SELECT result_id, analysis, environment, subject, version, publication, encoding, index_version,
|
|
128
99
|
provenance_format, provenance_version, provenance FROM history_results WHERE result_id = ?`),
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
100
|
+
// The local arm seeks the complete subject index. The promotion arm must
|
|
101
|
+
// visit target promotions before their results: its CROSS JOIN order avoids
|
|
102
|
+
// an analysis-wide result scan when no promotion exists. UNION removes a
|
|
103
|
+
// result admitted twice while retaining every distinct eligible result.
|
|
104
|
+
candidates: connection.prepare(sql `/* candidates */ WITH requested(analysis, environment, subject, version) AS (VALUES (?, ?, ?, ?))
|
|
105
|
+
SELECT * FROM (
|
|
106
|
+
SELECT r.result_id, r.analysis, r.environment, r.subject, r.version, r.publication, r.encoding, r.index_version,
|
|
107
|
+
r.provenance_format, r.provenance_version, r.provenance FROM requested s JOIN history_results r
|
|
108
|
+
ON r.analysis = s.analysis AND r.environment = s.environment AND r.subject = s.subject AND r.version = s.version
|
|
109
|
+
UNION
|
|
110
|
+
SELECT r.result_id, r.analysis, r.environment, r.subject, r.version, r.publication, r.encoding, r.index_version,
|
|
111
|
+
r.provenance_format, r.provenance_version, r.provenance FROM requested s CROSS JOIN history_promotions p
|
|
112
|
+
CROSS JOIN history_promotion_results pr CROSS JOIN history_results r
|
|
113
|
+
WHERE p.analysis = s.analysis AND p.environment = s.environment
|
|
114
|
+
AND pr.promotion_id = p.promotion_id AND r.result_id = pr.result_id
|
|
115
|
+
AND r.analysis = s.analysis AND r.subject = s.subject AND r.version = s.version
|
|
116
|
+
) ORDER BY publication DESC`),
|
|
136
117
|
dependencies: connection.prepare(sql `/* envelope */ SELECT d.position, d.dependency_id, r.result_id AS present, r.analysis, r.environment
|
|
137
118
|
FROM history_dependencies d LEFT JOIN history_results r ON r.result_id = d.dependency_id WHERE d.attempt_id = ? ORDER BY d.position`),
|
|
138
119
|
current: connection.prepare(sql `/* current */ SELECT c.result_id, r.result_id AS present
|
|
@@ -141,6 +122,10 @@ export function openDurableHistory(options) {
|
|
|
141
122
|
insertAcceptance: connection.prepare(sql `/* accept */ INSERT INTO history_acceptances (acceptance_id, result_id, environment, fence, evidence_format, evidence_version, evidence)
|
|
142
123
|
VALUES (?, ?, ?, ?, ?, ?, ?)`),
|
|
143
124
|
insertAcceptanceDependency: connection.prepare(sql `/* accept */ INSERT INTO history_acceptance_dependencies (acceptance_id, position, dependency_id) VALUES (?, ?, ?)`),
|
|
125
|
+
// An insertion is acknowledged by its exact identity within the intended result and environment, never by a history scan or newest-row guess.
|
|
126
|
+
acceptanceById: connection.prepare(sql `/* acceptance */ SELECT acceptance_id, result_id, environment, fence, evidence_format, evidence_version, evidence FROM history_acceptances
|
|
127
|
+
WHERE acceptance_id = ? AND result_id = ? AND environment = ?`),
|
|
128
|
+
// Explicit historical inspection remains complete and ordered, independently of the acknowledgement hot path.
|
|
144
129
|
acceptances: connection.prepare(sql `/* acceptance */ SELECT acceptance_id, environment, fence, evidence_format, evidence_version, evidence FROM history_acceptances
|
|
145
130
|
WHERE result_id = ? AND environment = ? ORDER BY acceptance_id`),
|
|
146
131
|
acceptanceDependencies: connection.prepare(sql `/* acceptance */ SELECT d.position, d.dependency_id, r.result_id AS present, r.analysis, r.environment
|
|
@@ -157,7 +142,7 @@ export function openDurableHistory(options) {
|
|
|
157
142
|
ORDER BY p.promotion_id`),
|
|
158
143
|
promotionResults: connection.prepare(sql `/* promotion */ SELECT pr.position, pr.result_id, r.result_id AS present, r.analysis, r.environment
|
|
159
144
|
FROM history_promotion_results pr LEFT JOIN history_results r ON r.result_id = pr.result_id WHERE pr.promotion_id = ? ORDER BY pr.position`),
|
|
160
|
-
};
|
|
145
|
+
}));
|
|
161
146
|
/**
|
|
162
147
|
* Resolve an exact reference to a completed result of this store: the
|
|
163
148
|
* locator grammar, logical store, analysis, environment, existence,
|
|
@@ -187,7 +172,7 @@ export function openDurableHistory(options) {
|
|
|
187
172
|
}
|
|
188
173
|
return { resultId: parts.resultId, scope: { analysis: parts.analysis, environment: parts.environment } };
|
|
189
174
|
}
|
|
190
|
-
const index = createSelectedIndex(connection, options.sha256, (reference) => resolveResult(reference).resultId);
|
|
175
|
+
const index = duringOpening(() => createSelectedIndex(connection, options.sha256, (reference) => resolveResult(reference).resultId));
|
|
191
176
|
/** Issue the exact reference for a stored result row. */
|
|
192
177
|
function referenceOf(resultId, scope) {
|
|
193
178
|
return referenceFor({ logicalStore, analysis: scope.analysis, environment: scope.environment, resultId });
|
|
@@ -242,8 +227,8 @@ export function openDurableHistory(options) {
|
|
|
242
227
|
* of a valid host reading and the persisted high-water, which is then
|
|
243
228
|
* persisted. A host failure or invalid reading aborts the transaction.
|
|
244
229
|
*/
|
|
245
|
-
function observeTime(writer) {
|
|
246
|
-
const reading =
|
|
230
|
+
function observeTime(writer, readClock = () => clock.currentEpochMilliseconds()) {
|
|
231
|
+
const reading = readClock();
|
|
247
232
|
if (!Number.isSafeInteger(reading) || reading < 0) {
|
|
248
233
|
throw new HistoryClockError(`Clock reading ${String(reading)} is not a nonnegative safe integer of epoch milliseconds`);
|
|
249
234
|
}
|
|
@@ -267,7 +252,7 @@ export function openDurableHistory(options) {
|
|
|
267
252
|
writer = recorded.holder === null ? undefined : Object.freeze({ holder: recorded.holder, fence: recorded.lastFence, expiresAt: recorded.expiresAt });
|
|
268
253
|
}
|
|
269
254
|
catch (error) {
|
|
270
|
-
if (!(error
|
|
255
|
+
if (!isHistorySqliteBoundaryBusy(error)) {
|
|
271
256
|
throw error;
|
|
272
257
|
}
|
|
273
258
|
}
|
|
@@ -275,15 +260,28 @@ export function openDurableHistory(options) {
|
|
|
275
260
|
}
|
|
276
261
|
/**
|
|
277
262
|
* Run a lease operation that a waiter repeats, reporting SQLite contention
|
|
278
|
-
* as History's typed outcome.
|
|
279
|
-
*
|
|
263
|
+
* as History's typed outcome. A clock callback's exact exception remains a
|
|
264
|
+
* callback failure even if it contains a busy error from this or another
|
|
265
|
+
* History handle; only boundary errors outside that callback qualify.
|
|
280
266
|
*/
|
|
281
267
|
function orContended(operation) {
|
|
268
|
+
let callbackFailed = false;
|
|
269
|
+
let callbackError;
|
|
270
|
+
const readClock = () => {
|
|
271
|
+
try {
|
|
272
|
+
return clock.currentEpochMilliseconds();
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
callbackFailed = true;
|
|
276
|
+
callbackError = error;
|
|
277
|
+
throw error;
|
|
278
|
+
}
|
|
279
|
+
};
|
|
282
280
|
try {
|
|
283
|
-
return operation();
|
|
281
|
+
return operation(readClock);
|
|
284
282
|
}
|
|
285
283
|
catch (error) {
|
|
286
|
-
if (
|
|
284
|
+
if ((callbackFailed && error === callbackError) || !isHistorySqliteBoundaryBusy(error)) {
|
|
287
285
|
throw error;
|
|
288
286
|
}
|
|
289
287
|
return contention(error);
|
|
@@ -295,13 +293,13 @@ export function openDurableHistory(options) {
|
|
|
295
293
|
* `operation` runs. A stale lease commits only the time observation and then
|
|
296
294
|
* fails with {@link StaleWriterError}; any other failure rolls everything back.
|
|
297
295
|
*/
|
|
298
|
-
function asHolder(presented, operation) {
|
|
296
|
+
function asHolder(presented, operation, readClock = () => clock.currentEpochMilliseconds()) {
|
|
299
297
|
const lease = leaseArgument(presented);
|
|
300
298
|
let outcome;
|
|
301
299
|
let stale;
|
|
302
300
|
connection.transaction(() => {
|
|
303
301
|
const writer = readWriter();
|
|
304
|
-
const now = observeTime(writer);
|
|
302
|
+
const now = observeTime(writer, readClock);
|
|
305
303
|
if (writer.holder !== lease.holder || writer.lastFence !== lease.fence) {
|
|
306
304
|
stale = `Writer lease ${lease.holder}/${String(lease.fence)} is not the current holder`;
|
|
307
305
|
}
|
|
@@ -319,7 +317,7 @@ export function openDurableHistory(options) {
|
|
|
319
317
|
return outcome.value;
|
|
320
318
|
}
|
|
321
319
|
/** Run Supervision's journal ports share this connection and writer check. */
|
|
322
|
-
const journals = createJournalStore(connection, asHolder);
|
|
320
|
+
const journals = duringOpening(() => createJournalStore(connection, asHolder));
|
|
323
321
|
/** Read one attempt row by identity inside the caller's transaction. */
|
|
324
322
|
function requireAttemptRow(attemptId) {
|
|
325
323
|
const row = statements.attemptById.get(attemptId);
|
|
@@ -521,9 +519,9 @@ export function openDurableHistory(options) {
|
|
|
521
519
|
const holder = requireName(request.holder, 'holder');
|
|
522
520
|
const leaseMilliseconds = requirePositive(request.leaseMilliseconds, 'leaseMilliseconds');
|
|
523
521
|
let acquisition;
|
|
524
|
-
const busy = orContended(() => connection.transaction(() => {
|
|
522
|
+
const busy = orContended((readClock) => connection.transaction(() => {
|
|
525
523
|
const writer = readWriter();
|
|
526
|
-
const now = observeTime(writer);
|
|
524
|
+
const now = observeTime(writer, readClock);
|
|
527
525
|
if (writer.holder !== null && writer.expiresAt > now) {
|
|
528
526
|
acquisition = Object.freeze({ kind: 'held', holder: writer.holder, expiresAt: writer.expiresAt });
|
|
529
527
|
return undefined;
|
|
@@ -544,11 +542,13 @@ export function openDurableHistory(options) {
|
|
|
544
542
|
},
|
|
545
543
|
renewWriter(lease, leaseMilliseconds) {
|
|
546
544
|
const duration = requirePositive(leaseMilliseconds, 'leaseMilliseconds');
|
|
547
|
-
|
|
545
|
+
// Read caller-owned lease properties before classifying storage contention.
|
|
546
|
+
const presented = leaseArgument(lease);
|
|
547
|
+
return orContended((readClock) => asHolder(presented, (now) => {
|
|
548
548
|
const expiresAt = safeSum(now, duration, 'lease expiry');
|
|
549
549
|
statements.extendHolder.run(expiresAt);
|
|
550
|
-
return Object.freeze({ kind: 'renewed', lease: Object.freeze({ holder:
|
|
551
|
-
}));
|
|
550
|
+
return Object.freeze({ kind: 'renewed', lease: Object.freeze({ holder: presented.holder, fence: presented.fence, expiresAt }) });
|
|
551
|
+
}, readClock));
|
|
552
552
|
},
|
|
553
553
|
releaseWriter(lease) {
|
|
554
554
|
asHolder(lease, (now) => {
|
|
@@ -657,7 +657,7 @@ export function openDurableHistory(options) {
|
|
|
657
657
|
},
|
|
658
658
|
findCandidates(presented) {
|
|
659
659
|
const subject = versionedSubject(presented);
|
|
660
|
-
return Object.freeze(statements.candidates.all(subject.analysis, subject.
|
|
660
|
+
return Object.freeze(statements.candidates.all(subject.analysis, subject.environment, subject.subject, subject.version).map(envelopeOf));
|
|
661
661
|
},
|
|
662
662
|
readCurrent(presented) {
|
|
663
663
|
const subject = scopedSubject(presented);
|
|
@@ -700,10 +700,18 @@ export function openDurableHistory(options) {
|
|
|
700
700
|
dependencies.forEach((dependencyId, position) => {
|
|
701
701
|
statements.insertAcceptanceDependency.run(acceptanceId, position, dependencyId);
|
|
702
702
|
});
|
|
703
|
-
const row = statements.
|
|
703
|
+
const row = statements.acceptanceById.get(acceptanceId, resultId, scope.environment);
|
|
704
704
|
if (row === undefined) {
|
|
705
705
|
throw new HistoryIntegrityError('Recorded acceptance is not readable');
|
|
706
706
|
}
|
|
707
|
+
// The returned row must attest to this transaction's inserted identity, scope, fence, and evidence;
|
|
708
|
+
// a stale or mis-scoped row is not a successful acceptance even if the backend returned one row.
|
|
709
|
+
if (integer(row, 'acceptance_id') !== acceptanceId || integer(row, 'result_id') !== resultId
|
|
710
|
+
|| text(row, 'environment') !== scope.environment || integer(row, 'fence') !== lease.fence
|
|
711
|
+
|| text(row, 'evidence_format') !== evidence.format || integer(row, 'evidence_version') !== evidence.formatVersion
|
|
712
|
+
|| text(row, 'evidence') !== evidence.content) {
|
|
713
|
+
throw new HistoryIntegrityError('Recorded acceptance readback does not match the inserted record');
|
|
714
|
+
}
|
|
707
715
|
return acceptanceOf(row, referenceOf(resultId, published), scope);
|
|
708
716
|
});
|
|
709
717
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/durable/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/durable/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,24 +9,26 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Immutability of completed history is enforced in storage by triggers:
|
|
11
11
|
* results, their generated index, dependencies, acceptance records, promotion
|
|
12
|
-
* records, journal revisions and the identity row cannot be updated
|
|
13
|
-
* deleted
|
|
14
|
-
* deleted. No reclamation exists (RES-006).
|
|
12
|
+
* records, journal revisions and the identity row cannot be updated,
|
|
13
|
+
* deleted or replaced through insert conflicts. Attempts, current pointers
|
|
14
|
+
* and writer/sequence rows cannot be deleted. No reclamation exists (RES-006).
|
|
15
15
|
*
|
|
16
|
-
* Version
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
16
|
+
* Version 3 adds insert-conflict guards to every immutable table, including
|
|
17
|
+
* primary and secondary unique identities. They reject SQLite REPLACE before
|
|
18
|
+
* its implicit deletion, independently of recursive_triggers. Composite-key
|
|
19
|
+
* immutable tables have no hidden rowid that could bypass their declared keys.
|
|
20
|
+
* Version 2 added
|
|
21
|
+
* environment-scoped acceptances, promotions and the operation journal; both
|
|
22
|
+
* version 1 and version 2 files are now rejected by their recorded version.
|
|
23
|
+
* No migration is authorized: incompatible formats are rejected explicitly
|
|
24
|
+
* rather than guessed (execution.md PUB-004, experiments.md EXP-2 gate).
|
|
23
25
|
* @packageDocumentation
|
|
24
26
|
*/
|
|
25
27
|
import type { ISqliteConnection } from '@microdelta/machine';
|
|
26
28
|
/** The schema identity recorded in every durable History file. */
|
|
27
29
|
export declare const schemaName = "microdelta.history.durable";
|
|
28
30
|
/** The only schema version this implementation reads or writes. */
|
|
29
|
-
export declare const schemaVersion =
|
|
31
|
+
export declare const schemaVersion = 3;
|
|
30
32
|
/**
|
|
31
33
|
* Create the schema in one transaction when the database has no objects,
|
|
32
34
|
* then validate it. Validation requires exactly the expected objects with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/durable/schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/durable/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAc,MAAM,qBAAqB,CAAC;AAOzE,kEAAkE;AAClE,eAAO,MAAM,UAAU,+BAA+B,CAAC;AAEvD,mEAAmE;AACnE,eAAO,MAAM,aAAa,IAAI,CAAC;AAuQ/B;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAsB1F"}
|
|
@@ -4,21 +4,27 @@ const sql = String.raw;
|
|
|
4
4
|
/** The schema identity recorded in every durable History file. */
|
|
5
5
|
export const schemaName = 'microdelta.history.durable';
|
|
6
6
|
/** The only schema version this implementation reads or writes. */
|
|
7
|
-
export const schemaVersion =
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
]
|
|
7
|
+
export const schemaVersion = 3;
|
|
8
|
+
/**
|
|
9
|
+
* Unique identities that could displace immutable history during INSERT OR
|
|
10
|
+
* REPLACE. Every primary key and independent secondary UNIQUE key must appear:
|
|
11
|
+
* SQLite's implicit replacement deletes do not run delete triggers unless the
|
|
12
|
+
* caller enables recursive_triggers. BEFORE INSERT therefore owns this guard.
|
|
13
|
+
* The result scope UNIQUE includes result_id and is covered by its primary key.
|
|
14
|
+
*/
|
|
15
|
+
const immutableKeys = {
|
|
16
|
+
history_identity: [['singleton']],
|
|
17
|
+
history_results: [['result_id'], ['publication']],
|
|
18
|
+
history_dependencies: [['attempt_id', 'position']],
|
|
19
|
+
history_nodes: [['result_id', 'node_id']],
|
|
20
|
+
history_edges: [['result_id', 'parent_node', 'edge_kind', 'edge_key']],
|
|
21
|
+
history_addresses: [['result_id', 'address']],
|
|
22
|
+
history_acceptances: [['acceptance_id']],
|
|
23
|
+
history_acceptance_dependencies: [['acceptance_id', 'position']],
|
|
24
|
+
history_promotions: [['promotion_id']],
|
|
25
|
+
history_promotion_results: [['promotion_id', 'position'], ['promotion_id', 'result_id']],
|
|
26
|
+
history_journal: [['analysis', 'environment', 'collection', 'journal_key', 'revision'], ['sequence']],
|
|
27
|
+
};
|
|
22
28
|
/** Tables whose rows may change state but are never deleted. */
|
|
23
29
|
const retainedTables = ['history_writer', 'history_sequences', 'history_attempts', 'history_current'];
|
|
24
30
|
/**
|
|
@@ -109,7 +115,7 @@ const schemaObjects = [
|
|
|
109
115
|
position INTEGER NOT NULL CHECK (position >= 0),
|
|
110
116
|
dependency_id INTEGER NOT NULL REFERENCES history_results (result_id),
|
|
111
117
|
PRIMARY KEY (attempt_id, position)
|
|
112
|
-
) STRICT`,
|
|
118
|
+
) STRICT, WITHOUT ROWID`,
|
|
113
119
|
// The generated selected index: one row per node of the canonical payload.
|
|
114
120
|
// Only `scalar` holds author data; everything else is shape or digest.
|
|
115
121
|
sql `CREATE TABLE history_nodes (
|
|
@@ -130,7 +136,7 @@ const schemaObjects = [
|
|
|
130
136
|
AND prototype IS NULL AND prototype_node IS NULL AND terminal IS NULL)
|
|
131
137
|
OR (kind = 'record' AND scalar IS NULL AND array_length IS NULL AND own_keys IS NOT NULL
|
|
132
138
|
AND prototype IS NOT NULL AND terminal IS NOT NULL AND (prototype = 'custom') = (prototype_node IS NOT NULL)))
|
|
133
|
-
) STRICT`,
|
|
139
|
+
) STRICT, WITHOUT ROWID`,
|
|
134
140
|
// Structural slots: own record members and present array elements.
|
|
135
141
|
sql `CREATE TABLE history_edges (
|
|
136
142
|
result_id INTEGER NOT NULL REFERENCES history_results (result_id),
|
|
@@ -140,7 +146,7 @@ const schemaObjects = [
|
|
|
140
146
|
position INTEGER NOT NULL,
|
|
141
147
|
child_node INTEGER NOT NULL,
|
|
142
148
|
PRIMARY KEY (result_id, parent_node, edge_kind, edge_key)
|
|
143
|
-
) STRICT`,
|
|
149
|
+
) STRICT, WITHOUT ROWID`,
|
|
144
150
|
// Every reachable structured address, with its node and MDO1 value digest.
|
|
145
151
|
sql `CREATE TABLE history_addresses (
|
|
146
152
|
result_id INTEGER NOT NULL REFERENCES history_results (result_id),
|
|
@@ -150,7 +156,7 @@ const schemaObjects = [
|
|
|
150
156
|
value_fingerprint TEXT,
|
|
151
157
|
PRIMARY KEY (result_id, address),
|
|
152
158
|
CHECK ((address = '[]') = (value_fingerprint IS NULL))
|
|
153
|
-
) STRICT`,
|
|
159
|
+
) STRICT, WITHOUT ROWID`,
|
|
154
160
|
// The latest publication of each scoped subject; acceptance never moves it.
|
|
155
161
|
sql `CREATE TABLE history_current (
|
|
156
162
|
analysis TEXT NOT NULL,
|
|
@@ -178,7 +184,7 @@ const schemaObjects = [
|
|
|
178
184
|
position INTEGER NOT NULL CHECK (position >= 0),
|
|
179
185
|
dependency_id INTEGER NOT NULL REFERENCES history_results (result_id),
|
|
180
186
|
PRIMARY KEY (acceptance_id, position)
|
|
181
|
-
) STRICT`,
|
|
187
|
+
) STRICT, WITHOUT ROWID`,
|
|
182
188
|
// Recorded promotions (RUN-017): each admits exact results of other
|
|
183
189
|
// environments into its target environment, with the promoter's evidence.
|
|
184
190
|
sql `CREATE TABLE history_promotions (
|
|
@@ -197,7 +203,7 @@ const schemaObjects = [
|
|
|
197
203
|
result_id INTEGER NOT NULL REFERENCES history_results (result_id),
|
|
198
204
|
PRIMARY KEY (promotion_id, position),
|
|
199
205
|
UNIQUE (promotion_id, result_id)
|
|
200
|
-
) STRICT`,
|
|
206
|
+
) STRICT, WITHOUT ROWID`,
|
|
201
207
|
sql `CREATE INDEX history_promotion_results_by_result ON history_promotion_results (result_id, promotion_id)`,
|
|
202
208
|
// Run Supervision's operation journal: immutable revisions of opaque owner
|
|
203
209
|
// records per environment namespace, owner-named collection and key. The
|
|
@@ -216,8 +222,11 @@ const schemaObjects = [
|
|
|
216
222
|
format_version INTEGER NOT NULL CHECK (format_version > 0),
|
|
217
223
|
content TEXT NOT NULL,
|
|
218
224
|
PRIMARY KEY (analysis, environment, collection, journal_key, revision)
|
|
219
|
-
) STRICT`,
|
|
220
|
-
...
|
|
225
|
+
) STRICT, WITHOUT ROWID`,
|
|
226
|
+
...Object.entries(immutableKeys).flatMap(([table, keys]) => [
|
|
227
|
+
sql `CREATE TRIGGER ${table}_immutable_insert BEFORE INSERT ON ${table}
|
|
228
|
+
WHEN EXISTS (SELECT 1 FROM ${table} WHERE ${keys.map((key) => `(${key.map((column) => `${column} = NEW.${column}`).join(' AND ')})`).join(' OR ')})
|
|
229
|
+
BEGIN SELECT RAISE(ABORT, '${table} rows are immutable history'); END`,
|
|
221
230
|
sql `CREATE TRIGGER ${table}_immutable_update BEFORE UPDATE ON ${table}
|
|
222
231
|
BEGIN SELECT RAISE(ABORT, '${table} rows are immutable history'); END`,
|
|
223
232
|
sql `CREATE TRIGGER ${table}_immutable_delete BEFORE DELETE ON ${table}
|