@objectstack/driver-sqlite-wasm 17.0.0-rc.0 → 17.0.0-rc.2

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/CHANGELOG.md ADDED
@@ -0,0 +1,1766 @@
1
+ # @objectstack/driver-sqlite-wasm
2
+
3
+ ## 17.0.0-rc.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 9b43ee2: test(drivers): the filter-logic standard now covers the backend it was counted without (#4405)
8
+
9
+ `FILTER_LOGIC_CASES` (#3774) opens by calling itself the standard "the four
10
+ independent FilterCondition backends are each checked against". Five backends
11
+ exist. `driver-mongodb`'s `translateFilter` was missed, not excluded — an
12
+ independent implementation whose `$and`/`$or`/`$not` translation shares no line
13
+ of code with the SQL compiler or the in-memory matcher, and the only one whose
14
+ target language cannot spell the standard directly: MongoDB has no
15
+ document-level `$not` at all (the server answers `unknown top level operator:
16
+ $not`), so a negation has to leave as `$nor`, and a branch's own keys have to
17
+ stay in one document while `$and`/`$or` clauses are lifted beside them. That
18
+ route was never checked against the shared cases. Both DEBT rows the #4363 gate
19
+ recorded are now cleared, and `scripts/check-driver-conformance.mjs` reports
20
+ `ok` for every cell of the matrix.
21
+
22
+ **`driver-mongodb` runs the table twice, and the split is deliberate.**
23
+ `mongodb-filter-logic-translation.test.ts` drives every shared case through
24
+ `translateFilter` and evaluates the emitted MongoDB _document_ over the shared
25
+ fixture — a pure function, no server, so it always runs. That matters here more
26
+ than anywhere: `mongodb-memory-server` downloads a ~123 MB binary from
27
+ fastdl.mongodb.org, and a defect only a downloadable binary can catch is a
28
+ defect nobody catches on a restricted network. Its in-process reader is strict
29
+ by construction — every shape it does not model throws instead of evaluating to
30
+ true, a document-level `$not` included — and its own discrimination is pinned by
31
+ cases that require a widened document to FAIL the case it widens, so "all green"
32
+ cannot mean "the reader says yes to everything".
33
+ `mongodb-filter-logic-conformance.test.ts` runs the same table against a real
34
+ mongod and answers the one question the first half cannot — does MongoDB agree?
35
+ — skipping cleanly (never silently) when the binary is unreachable.
36
+
37
+ **`driver-sqlite-wasm` runs the table through its own engine.** It inherits
38
+ `SqlDriver`'s filter compiler, so nothing is re-implemented; what the suite pins
39
+ is that a nested `(… AND …) OR (… AND …)` survives the custom sql.js dialect
40
+ that compiles, binds and marshals it — the same seam its temporal and pagination
41
+ suites cover for their clauses. Tracked as DEBT rather than EXEMPT because
42
+ "inherits, therefore fine" is the assumption those suites exist to disprove; the
43
+ suite is what disproves it.
44
+
45
+ **No divergence was found.** `translateFilter` answers all seventeen shared
46
+ cases correctly today, `$not`-inside-a-branch and nested `$and`-inside-`$or`
47
+ included, so no translation change ships here — what changes is that the next
48
+ edit to it cannot quietly widen a filter. Both suites were verified to be
49
+ discriminating rather than decorative by reintroducing the #3774 miscompile
50
+ (propagating `or` into a branch's own contents): 15 of the mongodb translation
51
+ suite's 26 tests fail, and 13 of the wasm suite's 18.
52
+
53
+ `packages/spec`'s `filter-logic-conformance.ts` header now says five and names
54
+ the fifth — a code comment; no schema, export or generated artifact moved.
55
+
56
+ - 24915d2: fix(driver-sqlite-wasm): a `RETURNING` write is a write — persist it (#4518)
57
+
58
+ A file-backed `sqlite-wasm` database flushed its schema at boot and then
59
+ recorded nothing else. Every table was on disk; every row written after schema
60
+ sync lived only in the WASM heap and died with the process. Reopening the file
61
+ found a complete, empty database.
62
+
63
+ **Cause.** The Knex dialect picked its execution branch from _"does this
64
+ statement return rows"_ — and then marked the database dirty only on the other,
65
+ row-less branch. `INSERT … RETURNING *` returns rows, so it executed on the
66
+ row-returning branch and never set the flag. Since the `on-disconnect` flush is
67
+ gated on the same flag, nothing rescued it afterwards either: **both** persist
68
+ strategies dropped the write. ObjectQL writes through `RETURNING *` (it hands
69
+ the stored row back to the caller), so this covered essentially all business
70
+ data, along with `knex.raw('INSERT …')` and any other mutation arriving without
71
+ a Knex `method`.
72
+
73
+ **Fix.** "Does this statement change the database?" is now one exported
74
+ predicate — `statementMutatesDatabase(sql, method)` — classifying by Knex method
75
+ _and_ SQL text, applied at a single funnel after execution. It is independent of
76
+ which branch executed the statement, so a mutation can no longer slip through by
77
+ returning rows, by arriving without a method, or by taking a branch that forgot
78
+ to say so. Transaction control still routes to `noteTransactionControl`, which
79
+ keeps deferring flushes until the transaction closes (#1494), and mutating
80
+ `PRAGMA` assignments (`auto_vacuum`, `user_version`) now count as writes too.
81
+
82
+ **What changes for you.** Nothing to author. File-backed wasm SQLite now
83
+ actually persists under `on-write` / `debounced:*`, and `disconnect()` is a real
84
+ durability boundary: when it returns, committed data is on disk. This is what
85
+ `bootStack({ databaseFile })` in `@objectstack/verify` needed to make `stop()` →
86
+ second `bootStack` a genuine cold boot — the suspended-run restart proof
87
+ ADR-0019 promises is now asserted end to end in the dogfood gate. Expect more
88
+ disk writes than before on a file-backed dev database, because previously there
89
+ were almost none.
90
+
91
+ **One internal signature moved.** `WasmSqliteConnection.markDirty(method?)` is
92
+ now `markDirty()`. It used to re-filter the caller's Knex method against its own
93
+ allowlist, which made "did this mutate?" a decision taken in two places that
94
+ could — and did — disagree. If you call it directly, drop the argument; the
95
+ dialect classifies, the connection obeys.
96
+
97
+ - Updated dependencies [430dcc2]
98
+ - Updated dependencies [e6ac4bd]
99
+ - Updated dependencies [80334c7]
100
+ - Updated dependencies [ce5242c]
101
+ - Updated dependencies [a7163ea]
102
+ - Updated dependencies [e6e9379]
103
+ - Updated dependencies [98877c9]
104
+ - Updated dependencies [98877c9]
105
+ - Updated dependencies [e6b1b69]
106
+ - Updated dependencies [ad047d2]
107
+ - Updated dependencies [2826d1e]
108
+ - Updated dependencies [5a84d41]
109
+ - Updated dependencies [20b1a9e]
110
+ - Updated dependencies [203a449]
111
+ - Updated dependencies [ac37fc6]
112
+ - Updated dependencies [4820f55]
113
+ - Updated dependencies [462d9c4]
114
+ - Updated dependencies [7d21581]
115
+ - Updated dependencies [f2445c9]
116
+ - Updated dependencies [23338c3]
117
+ - Updated dependencies [5b843fb]
118
+ - Updated dependencies [b4487aa]
119
+ - Updated dependencies [65ca83a]
120
+ - Updated dependencies [67bf2e2]
121
+ - Updated dependencies [c6d1cb4]
122
+ - Updated dependencies [36030ff]
123
+ - Updated dependencies [6117f7b]
124
+ - Updated dependencies [e533b0b]
125
+ - Updated dependencies [cdf4d9a]
126
+ - Updated dependencies [aee1806]
127
+ - Updated dependencies [c13350b]
128
+ - Updated dependencies [c13350b]
129
+ - Updated dependencies [9ca2d85]
130
+ - Updated dependencies [c13350b]
131
+ - Updated dependencies [891d345]
132
+ - Updated dependencies [a52e2ef]
133
+ - Updated dependencies [5293114]
134
+ - Updated dependencies [20bc357]
135
+ - Updated dependencies [5966c2a]
136
+ - Updated dependencies [2382580]
137
+ - Updated dependencies [d9fa683]
138
+ - Updated dependencies [3c7bcc0]
139
+ - Updated dependencies [4b6cac7]
140
+ - Updated dependencies [7631964]
141
+ - Updated dependencies [ac471a0]
142
+ - Updated dependencies [60ae58e]
143
+ - Updated dependencies [ce92674]
144
+ - Updated dependencies [9f601e8]
145
+ - Updated dependencies [51c5227]
146
+ - Updated dependencies [a4a85c8]
147
+ - Updated dependencies [07a4e26]
148
+ - Updated dependencies [ec975f1]
149
+ - Updated dependencies [eb4204b]
150
+ - Updated dependencies [4f13be2]
151
+ - Updated dependencies [61cc079]
152
+ - Updated dependencies [0e96e46]
153
+ - Updated dependencies [d52d4fe]
154
+ - Updated dependencies [742cebb]
155
+ - Updated dependencies [ce92674]
156
+ - Updated dependencies [cf2c9b7]
157
+ - Updated dependencies [833b512]
158
+ - Updated dependencies [0f9faa2]
159
+ - Updated dependencies [7cf42fe]
160
+ - Updated dependencies [5966c2a]
161
+ - Updated dependencies [f78dd83]
162
+ - Updated dependencies [a2cd18a]
163
+ - Updated dependencies [4638aaa]
164
+ - Updated dependencies [0222d3c]
165
+ - Updated dependencies [071d0dc]
166
+ - Updated dependencies [0a936ea]
167
+ - Updated dependencies [023c00b]
168
+ - Updated dependencies [155507e]
169
+ - Updated dependencies [7bba90b]
170
+ - Updated dependencies [7e05d8e]
171
+ - Updated dependencies [061406d]
172
+ - Updated dependencies [c1f344b]
173
+ - Updated dependencies [9c93465]
174
+ - Updated dependencies [ebb209c]
175
+ - Updated dependencies [63b33e6]
176
+ - Updated dependencies [2a44c1d]
177
+ - Updated dependencies [695cfbd]
178
+ - Updated dependencies [7445149]
179
+ - Updated dependencies [071d0dc]
180
+ - Updated dependencies [0848bea]
181
+ - Updated dependencies [d51bed2]
182
+ - Updated dependencies [b8b3c64]
183
+ - Updated dependencies [0c0fbd9]
184
+ - Updated dependencies [f3141d8]
185
+ - Updated dependencies [5a84d41]
186
+ - Updated dependencies [fd3013a]
187
+ - Updated dependencies [21676eb]
188
+ - Updated dependencies [e336549]
189
+ - Updated dependencies [d40f43a]
190
+ - Updated dependencies [e5e7ee0]
191
+ - Updated dependencies [a2ebea2]
192
+ - Updated dependencies [800bdb0]
193
+ - Updated dependencies [04f1182]
194
+ - Updated dependencies [5647006]
195
+ - Updated dependencies [38f7e4f]
196
+ - Updated dependencies [c57f3cf]
197
+ - Updated dependencies [97faca3]
198
+ - Updated dependencies [ad5fe25]
199
+ - Updated dependencies [ea90179]
200
+ - Updated dependencies [ce92674]
201
+ - Updated dependencies [5ef0b5b]
202
+ - Updated dependencies [48fbacb]
203
+ - Updated dependencies [355e951]
204
+ - Updated dependencies [dadb43f]
205
+ - @objectstack/spec@17.0.0-rc.2
206
+ - @objectstack/core@17.0.0-rc.2
207
+ - @objectstack/driver-sql@17.0.0-rc.2
208
+
209
+ ## 17.0.0-rc.1
210
+
211
+ ### Patch Changes
212
+
213
+ - 0af50a3: fix(driver-sql,service-analytics): a bare-day upper bound covers the whole day on `Field.datetime` (#3777)
214
+
215
+ A bare `YYYY-MM-DD` comparand anchors to midnight UTC. That is right for a
216
+ lower bound and was silently wrong for an upper one: the dashboard date-range
217
+ filter compiles `{ $gte: from, $lte: to }` with bare-day bounds, so on a
218
+ `datetime` column every row created after 00:00 of the `to` day vanished from
219
+ the result — no error, the chart renders, the numbers are just smaller. The
220
+ default configuration hit it: the filter's default field is `created_at`
221
+ (a system-injected `Field.datetime`) and 7 of the 13 presets end "today".
222
+
223
+ The translation is operator-sensitive and half-open, applied at every
224
+ comparison emitter:
225
+
226
+ - `SqlDriver` (and `SqliteWasmDriver` by inheritance): `$lte`/`<=` with a
227
+ bare-day comparand on a `datetime` column compiles to `< next-day-midnight`
228
+ in the column's storage form; `$between [min, max]` with a bare-day max
229
+ decomposes to `>= min AND < next-day(max)`. Both the plain and the
230
+ legacy-repair (mixed-storage) column paths, both `where` spellings.
231
+ - `NativeSQLStrategy`: `dateRange` windows and `lte` filters bind `< next-day`
232
+ instead of an inclusive `BETWEEN`/`<=` when the bound is a bare day.
233
+ - The `/analytics/sql` rendering and the dataset preview evaluator apply the
234
+ same rule, so the echoed SQL and drafted numbers reproduce execution.
235
+
236
+ `@objectstack/core` gains the shared primitive `nextUtcCalendarDay(value)`:
237
+ the next calendar day of a valid bare `YYYY-MM-DD` (else `null` — instants,
238
+ `Date`s and impossible days are never widened).
239
+
240
+ Unchanged on purpose, per the semantics table on #3777: `date`/`time` columns
241
+ (`<= day` is already whole-day-correct there), full-ISO/`Date` comparands
242
+ (instant semantics), and `$gte`/`$gt`/`$lt` (midnight anchoring is correct for
243
+ those). No authored metadata changes: a dashboard's existing
244
+ `{ $gte, $lte }` window now simply includes its final day.
245
+
246
+ - 2e836de: chore(packaging): CHANGELOG.md ships in every npm tarball (#4261)
247
+
248
+ The AGENTS.md post-task checklist requires breaking changesets to carry their
249
+ FROM → TO migration because "this text ships to consumers as `CHANGELOG.md`
250
+ inside the npm package and is what an upgrading agent greps after the tombstone
251
+ error." That delivery path was severed for 68 of the 69 publishable packages:
252
+ npm packs `package.json` / `README*` / `LICENSE*` unconditionally but — unlike
253
+ older npm versions — not `CHANGELOG.md`, and the canonical
254
+ `"files": ["dist", "README.md"]` whitelist never named it. Measured on npm
255
+ 10.9.7: `npm pack --dry-run` on `@objectstack/types` shipped 3 files while its
256
+ 70KB `CHANGELOG.md` stayed behind. Only `@objectstack/spec` listed it
257
+ explicitly.
258
+
259
+ The tombstone-error scenario is precisely the one where the repo is out of
260
+ reach — the upgrading agent has `node_modules` and nothing else — so the
261
+ migration text has to ride in the tarball. Every publishable package now
262
+ declares `CHANGELOG.md` in `files`, and the canonical whitelist is
263
+ `["dist", "README.md", "CHANGELOG.md"]`.
264
+
265
+ The other half is the gate: `check:published-files` gains a fifth invariant,
266
+ COMPLETE — a whitelist that fails to cover `CHANGELOG.md` fails the
267
+ always-required lint job, so the next package cannot silently sever the path
268
+ again. `@objectstack/spec`'s per-package EXTRA_ENTRIES exemption dissolves
269
+ into the canonical set.
270
+
271
+ Consumer-visible change: one more file per install (the package's changelog,
272
+ e.g. 70.8KB for `@objectstack/types`), and `grep -r "removed key"
273
+ node_modules/@objectstack/*/CHANGELOG.md` now finds the migration it was
274
+ promised.
275
+
276
+ - 9881074: test(drivers): the "held to by a gate" claim now has a gate behind it (#4363)
277
+
278
+ Three changesets — filter combinator semantics (#3774), temporal storage form
279
+ (ADR-0053), deterministic paged reads (objectui#3106 / #4363) — each introduced
280
+ a shared case-set in `@objectstack/spec/data` with some version of the claim
281
+ that a future driver "is held to this by a gate rather than by remembering it".
282
+
283
+ There was no gate. The case-sets are exports sitting in a package; nothing
284
+ obliged a driver to import them. Measured on `main`, the matrix had three holes:
285
+ `driver-sqlite-wasm` ran neither pagination case-set, and neither it nor
286
+ `driver-mongodb` ran the filter-logic one — including a hole in the very
287
+ case-set whose changeset made the claim.
288
+
289
+ `scripts/check-driver-conformance.mjs` (`pnpm check:driver-conformance`, wired
290
+ into lint.yml's required job) makes the hole the failure. Every
291
+ (driver × case-set) cell is covered — some file under the package's `src/`
292
+ imports _and drives_ the case-set's marker export — or carries a measured
293
+ DEBT/EXEMPT entry, reconciled in both directions. A third direction, CLASSIFIED,
294
+ holds the other end: a new `*-conformance.ts` fixture nobody classified fails
295
+ the run rather than starting life uncovered, which is the direction that
296
+ actually rots (#4203). It caught an unclassified `TEMPORAL_TIME_CASES` on its
297
+ first run.
298
+
299
+ `driver-sqlite-wasm` gains the pagination suite the gate found missing. It
300
+ inherits `SqlDriver`'s ORDER BY construction, so nothing is re-implemented —
301
+ what the suite pins is that the clause survives a different _engine_: this
302
+ driver swaps knex's transport for a custom sql.js dialect that compiles,
303
+ executes and marshals every row through its own path, and a dialect that
304
+ reordered or dropped the trailing `ORDER BY id` would fail in no other suite.
305
+
306
+ The two filter-logic holes are ledgered as DEBT rather than fixed here, with
307
+ their reasons printed on every run and tracked in #4405. The mongodb row is the
308
+ substantive one: `translateFilter` is an independent FilterCondition backend —
309
+ the fifth, and the one #3774 never enrolled when it counted "the four".
310
+
311
+ - 4384921: fix(spec,drivers): `bypassTenantAudit` becomes a declared driver option, and `findOne` stops accepting a bare id (#4311)
312
+
313
+ Three drivers built with `tsup` and tested with `vitest`, so no `tsc` had ever
314
+ read them. Onboarding them to the #4311 type-check ratchet surfaced 292 errors,
315
+ and most of what looked like sloppy test fixtures was the types being wrong.
316
+
317
+ **`DriverOptions.bypassTenantAudit` is now declared.** It has been live for a
318
+ long time without being on the schema: `SqlDriver.auditMissingTenant` reads it
319
+ to suppress the "tenant-scoped write without `tenantId`" warning, the driver's
320
+ own warning text tells callers to set it, `ObjectQLEngine` sets it for
321
+ system-context calls, and `service-settings` / `service-datasource` pass it on
322
+ every global-scope write. Because the schema never had it, the driver read it
323
+ through `(options as any)` and no caller was type-checked. The declaration
324
+ states the limit as well: it silences a diagnostic and MUST NOT change which
325
+ rows a write touches — suppressing an audit warning is not a permission.
326
+
327
+ The same cast covered `timezone`, `tenantId`, `tenantIds` and `preserveAudit`,
328
+ all long since declared. Those reads now go through `DriverOptions`, so the next
329
+ undeclared option fails the build instead of hiding behind an existing cast.
330
+
331
+ **`SqlDriver.findOne(object, id)` is removed.** An undeclared
332
+ `typeof query === 'string' | 'number'` branch accepted a bare id. It was on no
333
+ contract, nothing outside that package's own tests used it, and the other two
334
+ drivers answered the identical call differently — `MemoryDriver` spreads the
335
+ string into `{0:'t',1:'1'}`, `MongoDBDriver` reads `query.where` as `undefined`
336
+ and returns an arbitrary row. It also bypassed the shared `findRows()` path, so
337
+ it skipped field selection, temporal coercion, unknown-column recovery and the
338
+ `singleRowLookup` ORDER BY decision. Spell an id lookup as the query it is:
339
+
340
+ ```ts
341
+ -(await driver.findOne("task", "t1"));
342
+ +(await driver.findOne("task", { object: "task", where: { id: "t1" } }));
343
+ ```
344
+
345
+ **`SqlDriver.initObjects` declares the `tenancy` it consumes.** Each object is
346
+ fed to `computeAndRecordTenantField`, which reads `obj.tenancy` to pick the
347
+ tenant column and to set or clear the sticky explicit-opt-out — but the
348
+ parameter type listed only `{ name, fields }`, so a caller that spelled the key
349
+ correctly was rejected while the driver read it anyway.
350
+ `registerExternalObject` already had it.
351
+
352
+ **`AnalyticsQueryInput` joins `AnalyticsQuery`.** `timezone` is
353
+ `.default('UTC')`, so the parsed type requires it and an authored literal does
354
+ not have it — the same two-tier split `QueryInput`/`QueryAST` already names on
355
+ the query side. `InMemoryDriver.create`/`bulkCreate` also declare their
356
+ `IDataDriver` return types; without them TS inferred the literal the method
357
+ builds and every other column of the created row disappeared from the caller's
358
+ view.
359
+
360
+ One silent runtime bug fell out of the same pass: a driver test asked for
361
+ `orderBy: [['id', 'asc']]`, the driver reads `item.field`, a tuple has none, and
362
+ the sort never reached SQL. The tuple spelling appears nowhere else.
363
+
364
+ - c53aa53: File-backed SQLite now runs `journal_mode = WAL` (#3941).
365
+
366
+ `SqlDriver.connect()` set `auto_vacuum` and left the journal mode alone, so
367
+ every ObjectStack SQLite database ran SQLite's built-in default — a rollback
368
+ journal. That is the worst mode for the shape this platform actually has, which
369
+ is **several processes on one file**: a dev server, `os migrate`,
370
+ `os meta resync`, a test run. Measured, on the same file:
371
+
372
+ | | rollback journal | WAL |
373
+ | :--------------------------------------------- | :------------------------------------------------- | :---------------------------------------------------------------- |
374
+ | writer while another process holds a read open | `SQLITE_BUSY` — committing needs an exclusive lock | proceeds |
375
+ | idle attached connection visible to SQL | no — a lock lasts only as long as its transaction | yes (`locking_mode = EXCLUSIVE` + `BEGIN IMMEDIATE` reports busy) |
376
+
377
+ The second row is why the `os migrate` occupancy check had to inspect file
378
+ descriptors to see a live server at all (#3940): under a rollback journal there
379
+ was nothing in the database to see. That signal stays — it names the process,
380
+ which WAL's lock probe cannot — but the SQL probe is now authoritative for
381
+ databases ObjectStack created rather than a fallback that was blind in practice.
382
+ Concurrent _writers_ still serialize; SQLite allows one at a time in any mode.
383
+
384
+ Journal mode is a persistent property of the file, so an existing database is
385
+ converted in place on the next connect (a header change — no rows are touched)
386
+ and stays converted. Two consequences to plan for:
387
+
388
+ - `app.db-wal` / `app.db-shm` exist beside the database while a connection is
389
+ attached, and `app.db-wal` can hold committed transactions. A clean shutdown
390
+ checkpoints them away; a naive copy of `app.db` alone while a server runs does
391
+ not. Use `sqlite3 app.db ".backup …"`.
392
+ - **WAL does not work on network filesystems** (NFS/SMB). Opt out with
393
+ `OS_DATABASE_SQLITE_JOURNAL_MODE=delete`, or per datasource with
394
+ `sqliteJournalMode: 'delete'` in the driver config (which outranks the env
395
+ var). Either form _applies_ `delete`, so it also converts a database that
396
+ already adopted WAL back — skipping would have stranded it.
397
+
398
+ Nothing here fails a boot, and nothing is assumed: `PRAGMA journal_mode = X`
399
+ answers with the mode actually in force rather than raising on refusal, so the
400
+ reply is read back; and because a filesystem can accept WAL and then fail the
401
+ first read _through_ it, the mode is proven with a read and rolled back to
402
+ `delete` if that fails — with a warning naming the file and the escape hatch.
403
+ `synchronous` is untouched, so durability is exactly what it was. `:memory:`
404
+ databases are left alone, as is `auto_vacuum = INCREMENTAL`, which keeps
405
+ reclaiming under WAL (ADR-0057).
406
+
407
+ `os db clean` now counts `-wal` / `-shm` as part of the database when it measures
408
+ what a `VACUUM` reclaimed, so bytes that were sitting in the log do not read as a
409
+ reclaim of zero.
410
+
411
+ `@objectstack/driver-sqlite-wasm` deliberately stays out of WAL. Its live
412
+ database is in the WASM heap and what reaches disk is a byte image it exports, so
413
+ nothing reads the database across processes and the pragma buys it nothing —
414
+ while still being a persistent header change in the operator's file. sql.js
415
+ _accepts_ the pragma (its VFS is memory-backed), so this had to be declared
416
+ rather than discovered.
417
+
418
+ It also now parks a `-wal` left behind by an unclean native-driver exit rather
419
+ than loading the image beside it: wasm SQLite cannot read that log, and leaving
420
+ it next to a freshly rewritten image would let a later real SQLite replay frames
421
+ that no longer belong to it. The warning names the file it parked and how to
422
+ recover what was in it.
423
+
424
+ - Updated dependencies [6a67d7a]
425
+ - Updated dependencies [0ecc656]
426
+ - Updated dependencies [06772eb]
427
+ - Updated dependencies [270650f]
428
+ - Updated dependencies [3aef718]
429
+ - Updated dependencies [1ea6bce]
430
+ - Updated dependencies [c1dcacd]
431
+ - Updated dependencies [ad303ed]
432
+ - Updated dependencies [32ccb23]
433
+ - Updated dependencies [f5a4ef0]
434
+ - Updated dependencies [2d3e255]
435
+ - Updated dependencies [7d7521f]
436
+ - Updated dependencies [5dc4d02]
437
+ - Updated dependencies [05154a1]
438
+ - Updated dependencies [9b6fe7c]
439
+ - Updated dependencies [8c711fb]
440
+ - Updated dependencies [09e4547]
441
+ - Updated dependencies [91f4c78]
442
+ - Updated dependencies [820eff9]
443
+ - Updated dependencies [8d895ff]
444
+ - Updated dependencies [f6472d7]
445
+ - Updated dependencies [78caf51]
446
+ - Updated dependencies [62a789b]
447
+ - Updated dependencies [789ad63]
448
+ - Updated dependencies [2af1988]
449
+ - Updated dependencies [0af50a3]
450
+ - Updated dependencies [2e836de]
451
+ - Updated dependencies [12a19a8]
452
+ - Updated dependencies [41dcda3]
453
+ - Updated dependencies [42e3b01]
454
+ - Updated dependencies [c8124e5]
455
+ - Updated dependencies [39eb01b]
456
+ - Updated dependencies [a1a4140]
457
+ - Updated dependencies [217e2e6]
458
+ - Updated dependencies [86a71d1]
459
+ - Updated dependencies [d5c75e2]
460
+ - Updated dependencies [03d26f7]
461
+ - Updated dependencies [4384921]
462
+ - Updated dependencies [3c628ce]
463
+ - Updated dependencies [7cb922e]
464
+ - Updated dependencies [1d22114]
465
+ - Updated dependencies [b5f9397]
466
+ - Updated dependencies [ed77493]
467
+ - Updated dependencies [58a03d2]
468
+ - Updated dependencies [dc530b4]
469
+ - Updated dependencies [e59786e]
470
+ - Updated dependencies [bcf1112]
471
+ - Updated dependencies [9774b78]
472
+ - Updated dependencies [6f98c2d]
473
+ - Updated dependencies [b07d829]
474
+ - Updated dependencies [a648e96]
475
+ - Updated dependencies [a47ac06]
476
+ - Updated dependencies [e4c61a7]
477
+ - Updated dependencies [cc60165]
478
+ - Updated dependencies [081aa6f]
479
+ - Updated dependencies [91f4c78]
480
+ - Updated dependencies [e8d0c21]
481
+ - Updated dependencies [45dc446]
482
+ - Updated dependencies [c1d44f7]
483
+ - Updated dependencies [ab9fb5c]
484
+ - Updated dependencies [f985b3f]
485
+ - Updated dependencies [9a4932a]
486
+ - Updated dependencies [f9fc874]
487
+ - Updated dependencies [011b386]
488
+ - Updated dependencies [7777e8f]
489
+ - Updated dependencies [507b92a]
490
+ - Updated dependencies [7309c81]
491
+ - Updated dependencies [20bc1ec]
492
+ - Updated dependencies [90c2b15]
493
+ - Updated dependencies [33a5ff4]
494
+ - Updated dependencies [9e01213]
495
+ - Updated dependencies [42eeb7d]
496
+ - Updated dependencies [01e124d]
497
+ - Updated dependencies [7ce02eb]
498
+ - Updated dependencies [a13827e]
499
+ - Updated dependencies [7733604]
500
+ - Updated dependencies [40e420f]
501
+ - Updated dependencies [d13004a]
502
+ - Updated dependencies [be7360c]
503
+ - Updated dependencies [3fe0ff1]
504
+ - Updated dependencies [5b47ab5]
505
+ - Updated dependencies [b09d8d9]
506
+ - Updated dependencies [b09d8d9]
507
+ - Updated dependencies [8675db6]
508
+ - Updated dependencies [b09d8d9]
509
+ - Updated dependencies [3eb1b2b]
510
+ - Updated dependencies [59b85c0]
511
+ - Updated dependencies [6e357ed]
512
+ - Updated dependencies [d6938bf]
513
+ - Updated dependencies [31e0be9]
514
+ - Updated dependencies [4bfd455]
515
+ - Updated dependencies [ffd2ce2]
516
+ - Updated dependencies [62f8017]
517
+ - Updated dependencies [a831df1]
518
+ - Updated dependencies [f752ee3]
519
+ - Updated dependencies [a1b61e0]
520
+ - Updated dependencies [cd6b9f2]
521
+ - Updated dependencies [2cb6d3c]
522
+ - Updated dependencies [af2a095]
523
+ - Updated dependencies [ec796d5]
524
+ - Updated dependencies [e87fea1]
525
+ - Updated dependencies [c65e529]
526
+ - Updated dependencies [3ca34c1]
527
+ - Updated dependencies [239c3a3]
528
+ - Updated dependencies [94a0bbc]
529
+ - Updated dependencies [d6bfb3d]
530
+ - Updated dependencies [a2266a6]
531
+ - Updated dependencies [d25a0ec]
532
+ - Updated dependencies [667b83e]
533
+ - Updated dependencies [627b188]
534
+ - Updated dependencies [8d4eae7]
535
+ - Updated dependencies [857a6cf]
536
+ - Updated dependencies [65a3a84]
537
+ - Updated dependencies [ccd9397]
538
+ - Updated dependencies [bca935b]
539
+ - Updated dependencies [d92c72d]
540
+ - Updated dependencies [c54c822]
541
+ - Updated dependencies [8dcc0f5]
542
+ - Updated dependencies [75b9e51]
543
+ - Updated dependencies [0a2f233]
544
+ - Updated dependencies [8621cdd]
545
+ - Updated dependencies [c53aa53]
546
+ - Updated dependencies [6f23667]
547
+ - Updated dependencies [5d21a48]
548
+ - Updated dependencies [19365b7]
549
+ - Updated dependencies [b7ed26d]
550
+ - Updated dependencies [b3a3d83]
551
+ - Updated dependencies [7a55913]
552
+ - Updated dependencies [35accbf]
553
+ - Updated dependencies [6038de7]
554
+ - Updated dependencies [eb95d97]
555
+ - Updated dependencies [e4c2dc8]
556
+ - Updated dependencies [1bd2795]
557
+ - Updated dependencies [8186a70]
558
+ - Updated dependencies [a329cca]
559
+ - Updated dependencies [6eec18c]
560
+ - Updated dependencies [4d7bebf]
561
+ - Updated dependencies [821ac7a]
562
+ - Updated dependencies [8f81731]
563
+ - Updated dependencies [8b50cb3]
564
+ - Updated dependencies [8c2db68]
565
+ - Updated dependencies [22b5e54]
566
+ - Updated dependencies [0166bd5]
567
+ - Updated dependencies [9b702dc]
568
+ - Updated dependencies [ab16331]
569
+ - @objectstack/spec@17.0.0-rc.1
570
+ - @objectstack/driver-sql@17.0.0-rc.1
571
+ - @objectstack/core@17.0.0-rc.1
572
+
573
+ ## 17.0.0-rc.0
574
+
575
+ ### Patch Changes
576
+
577
+ - Updated dependencies [50616d9]
578
+ - Updated dependencies [08b5a3d]
579
+ - Updated dependencies [d99aeb3]
580
+ - Updated dependencies [4727eb8]
581
+ - Updated dependencies [f63cd09]
582
+ - Updated dependencies [fa3d0cf]
583
+ - Updated dependencies [af5a224]
584
+ - Updated dependencies [71f76e1]
585
+ - Updated dependencies [37b1346]
586
+ - Updated dependencies [99736a0]
587
+ - Updated dependencies [fe67e34]
588
+ - Updated dependencies [fdb4f50]
589
+ - Updated dependencies [1bd5652]
590
+ - Updated dependencies [14252d3]
591
+ - Updated dependencies [7fb436c]
592
+ - Updated dependencies [879ea13]
593
+ - Updated dependencies [201b31f]
594
+ - Updated dependencies [c7f4417]
595
+ - Updated dependencies [e2616e0]
596
+ - Updated dependencies [6fdc5c6]
597
+ - Updated dependencies [8b9d71e]
598
+ - Updated dependencies [33f5e23]
599
+ - Updated dependencies [259af21]
600
+ - Updated dependencies [587fc91]
601
+ - Updated dependencies [1986594]
602
+ - Updated dependencies [ad4af62]
603
+ - Updated dependencies [d44dbfa]
604
+ - Updated dependencies [474fe39]
605
+ - Updated dependencies [0bc685a]
606
+ - Updated dependencies [b949059]
607
+ - Updated dependencies [be1c52c]
608
+ - Updated dependencies [c5ff96d]
609
+ - Updated dependencies [84e7be9]
610
+ - Updated dependencies [a6c3f38]
611
+ - Updated dependencies [debc23a]
612
+ - Updated dependencies [0f8ad09]
613
+ - Updated dependencies [8f9689f]
614
+ - Updated dependencies [57a3bb3]
615
+ - Updated dependencies [5f9a987]
616
+ - Updated dependencies [db02d47]
617
+ - Updated dependencies [0bfdf46]
618
+ - Updated dependencies [376a061]
619
+ - Updated dependencies [7c7e246]
620
+ - Updated dependencies [f35cdc5]
621
+ - Updated dependencies [9ea2bc5]
622
+ - Updated dependencies [32d3800]
623
+ - Updated dependencies [cf5e033]
624
+ - Updated dependencies [c2d9098]
625
+ - Updated dependencies [a227ed7]
626
+ - Updated dependencies [9613396]
627
+ - Updated dependencies [e47b342]
628
+ - Updated dependencies [4ed7ed4]
629
+ - Updated dependencies [2fa4ca1]
630
+ - Updated dependencies [f5a2320]
631
+ - Updated dependencies [deb538f]
632
+ - Updated dependencies [5b89711]
633
+ - Updated dependencies [0c8a22f]
634
+ - Updated dependencies [763931e]
635
+ - Updated dependencies [de9af8a]
636
+ - Updated dependencies [c4df271]
637
+ - Updated dependencies [a41ba5c]
638
+ - Updated dependencies [189854c]
639
+ - Updated dependencies [5d4de37]
640
+ - Updated dependencies [0e3a226]
641
+ - Updated dependencies [1d4756e]
642
+ - Updated dependencies [720c5ad]
643
+ - Updated dependencies [a8d1e24]
644
+ - Updated dependencies [41642b0]
645
+ - Updated dependencies [4cca74c]
646
+ - Updated dependencies [88ef03e]
647
+ - Updated dependencies [9e2caf3]
648
+ - Updated dependencies [81ce41a]
649
+ - Updated dependencies [85e1e4e]
650
+ - Updated dependencies [dac6a08]
651
+ - Updated dependencies [394b7a1]
652
+ - Updated dependencies [677b591]
653
+ - Updated dependencies [d77d1b7]
654
+ - Updated dependencies [5b79a34]
655
+ - Updated dependencies [c757854]
656
+ - Updated dependencies [0045682]
657
+ - Updated dependencies [2a5f04a]
658
+ - Updated dependencies [4f740b0]
659
+ - Updated dependencies [67452d1]
660
+ - Updated dependencies [0fc6219]
661
+ - Updated dependencies [605e190]
662
+ - Updated dependencies [c6c59f1]
663
+ - Updated dependencies [b0e78a8]
664
+ - Updated dependencies [f31cc8d]
665
+ - Updated dependencies [f343dc4]
666
+ - Updated dependencies [8269e32]
667
+ - Updated dependencies [74f7339]
668
+ - Updated dependencies [a6c35a2]
669
+ - Updated dependencies [c2f1002]
670
+ - Updated dependencies [f163028]
671
+ - Updated dependencies [f07808c]
672
+ - Updated dependencies [7ffc3d3]
673
+ - Updated dependencies [88346ba]
674
+ - Updated dependencies [4631592]
675
+ - Updated dependencies [32ff033]
676
+ - Updated dependencies [5ac93d4]
677
+ - Updated dependencies [93f267f]
678
+ - Updated dependencies [0024abf]
679
+ - Updated dependencies [acbf364]
680
+ - Updated dependencies [7687f7b]
681
+ - Updated dependencies [1659072]
682
+ - Updated dependencies [abceb0d]
683
+ - Updated dependencies [0c302a7]
684
+ - Updated dependencies [6633337]
685
+ - Updated dependencies [f00d8d4]
686
+ - Updated dependencies [503be86]
687
+ - Updated dependencies [647ec8b]
688
+ - Updated dependencies [7457a09]
689
+ - Updated dependencies [5f0852f]
690
+ - Updated dependencies [cde1975]
691
+ - Updated dependencies [0bc685a]
692
+ - Updated dependencies [11949fc]
693
+ - Updated dependencies [b098b0e]
694
+ - Updated dependencies [4d00b13]
695
+ - Updated dependencies [57bab76]
696
+ - Updated dependencies [b90086a]
697
+ - Updated dependencies [b95577a]
698
+ - Updated dependencies [83c161f]
699
+ - Updated dependencies [d8c4957]
700
+ - Updated dependencies [f24cb83]
701
+ - Updated dependencies [5dbbb92]
702
+ - Updated dependencies [69f1dfd]
703
+ - @objectstack/spec@17.0.0-rc.0
704
+ - @objectstack/driver-sql@17.0.0-rc.0
705
+ - @objectstack/core@17.0.0-rc.0
706
+
707
+ ## 16.1.0
708
+
709
+ ### Patch Changes
710
+
711
+ - Updated dependencies [9e45b63]
712
+ - Updated dependencies [b20201f]
713
+ - @objectstack/spec@16.1.0
714
+ - @objectstack/core@16.1.0
715
+ - @objectstack/driver-sql@16.1.0
716
+
717
+ ## 16.0.0
718
+
719
+ ### Patch Changes
720
+
721
+ - Updated dependencies [f972574]
722
+ - Updated dependencies [6289ec3]
723
+ - Updated dependencies [22013aa]
724
+ - Updated dependencies [3ad3dd5]
725
+ - Updated dependencies [8efa395]
726
+ - Updated dependencies [3a18b60]
727
+ - Updated dependencies [a8aa34c]
728
+ - Updated dependencies [e057f42]
729
+ - Updated dependencies [a3823b2]
730
+ - Updated dependencies [43a3efb]
731
+ - Updated dependencies [524696a]
732
+ - Updated dependencies [bfa3c3f]
733
+ - Updated dependencies [5e3301d]
734
+ - Updated dependencies [dd9f223]
735
+ - Updated dependencies [47d923c]
736
+ - Updated dependencies [46e876c]
737
+ - Updated dependencies [5f05de2]
738
+ - Updated dependencies [021ba4c]
739
+ - Updated dependencies [158aa14]
740
+ - Updated dependencies [62a2117]
741
+ - Updated dependencies [d2723e2]
742
+ - Updated dependencies [fefcd54]
743
+ - Updated dependencies [efbcfe1]
744
+ - Updated dependencies [beaf2de]
745
+ - Updated dependencies [369eb6e]
746
+ - Updated dependencies [06ff734]
747
+ - Updated dependencies [b659111]
748
+ - Updated dependencies [5754a23]
749
+ - Updated dependencies [6c270a6]
750
+ - Updated dependencies [290e2f0]
751
+ - Updated dependencies [668dd17]
752
+ - Updated dependencies [8abf133]
753
+ - Updated dependencies [e0859b1]
754
+ - Updated dependencies [ce468c8]
755
+ - Updated dependencies [04ecd4e]
756
+ - Updated dependencies [4d5a892]
757
+ - Updated dependencies [16cebeb]
758
+ - Updated dependencies [86d30af]
759
+ - Updated dependencies [8923843]
760
+ - Updated dependencies [a2795f6]
761
+ - Updated dependencies [f16b492]
762
+ - Updated dependencies [4b6fde8]
763
+ - Updated dependencies [2018df9]
764
+ - Updated dependencies [fc5a3a2]
765
+ - Updated dependencies [8ff9210]
766
+ - @objectstack/spec@16.0.0
767
+ - @objectstack/core@16.0.0
768
+ - @objectstack/driver-sql@16.0.0
769
+
770
+ ## 16.0.0-rc.1
771
+
772
+ ### Patch Changes
773
+
774
+ - Updated dependencies [6289ec3]
775
+ - Updated dependencies [8efa395]
776
+ - Updated dependencies [bfa3c3f]
777
+ - Updated dependencies [62a2117]
778
+ - Updated dependencies [06ff734]
779
+ - @objectstack/spec@16.0.0-rc.1
780
+ - @objectstack/core@16.0.0-rc.1
781
+ - @objectstack/driver-sql@16.0.0-rc.1
782
+
783
+ ## 16.0.0-rc.0
784
+
785
+ ### Patch Changes
786
+
787
+ - Updated dependencies [f972574]
788
+ - Updated dependencies [22013aa]
789
+ - Updated dependencies [3ad3dd5]
790
+ - Updated dependencies [3a18b60]
791
+ - Updated dependencies [a8aa34c]
792
+ - Updated dependencies [e057f42]
793
+ - Updated dependencies [a3823b2]
794
+ - Updated dependencies [43a3efb]
795
+ - Updated dependencies [524696a]
796
+ - Updated dependencies [5e3301d]
797
+ - Updated dependencies [dd9f223]
798
+ - Updated dependencies [47d923c]
799
+ - Updated dependencies [46e876c]
800
+ - Updated dependencies [5f05de2]
801
+ - Updated dependencies [021ba4c]
802
+ - Updated dependencies [158aa14]
803
+ - Updated dependencies [d2723e2]
804
+ - Updated dependencies [fefcd54]
805
+ - Updated dependencies [efbcfe1]
806
+ - Updated dependencies [beaf2de]
807
+ - Updated dependencies [369eb6e]
808
+ - Updated dependencies [b659111]
809
+ - Updated dependencies [5754a23]
810
+ - Updated dependencies [6c270a6]
811
+ - Updated dependencies [290e2f0]
812
+ - Updated dependencies [668dd17]
813
+ - Updated dependencies [8abf133]
814
+ - Updated dependencies [e0859b1]
815
+ - Updated dependencies [ce468c8]
816
+ - Updated dependencies [04ecd4e]
817
+ - Updated dependencies [4d5a892]
818
+ - Updated dependencies [16cebeb]
819
+ - Updated dependencies [86d30af]
820
+ - Updated dependencies [8923843]
821
+ - Updated dependencies [a2795f6]
822
+ - Updated dependencies [f16b492]
823
+ - Updated dependencies [4b6fde8]
824
+ - Updated dependencies [2018df9]
825
+ - Updated dependencies [fc5a3a2]
826
+ - @objectstack/spec@16.0.0-rc.0
827
+ - @objectstack/core@16.0.0-rc.0
828
+ - @objectstack/driver-sql@16.0.0-rc.0
829
+
830
+ ## 15.1.1
831
+
832
+ ### Patch Changes
833
+
834
+ - @objectstack/spec@15.1.1
835
+ - @objectstack/core@15.1.1
836
+ - @objectstack/driver-sql@15.1.1
837
+
838
+ ## 15.1.0
839
+
840
+ ### Patch Changes
841
+
842
+ - Updated dependencies [f531a26]
843
+ - Updated dependencies [f531a26]
844
+ - Updated dependencies [f531a26]
845
+ - Updated dependencies [f531a26]
846
+ - Updated dependencies [f531a26]
847
+ - Updated dependencies [f531a26]
848
+ - Updated dependencies [3fe9df1]
849
+ - Updated dependencies [f531a26]
850
+ - Updated dependencies [f531a26]
851
+ - Updated dependencies [f531a26]
852
+ - Updated dependencies [f531a26]
853
+ - Updated dependencies [f531a26]
854
+ - Updated dependencies [f531a26]
855
+ - Updated dependencies [f531a26]
856
+ - Updated dependencies [f531a26]
857
+ - Updated dependencies [f531a26]
858
+ - Updated dependencies [f531a26]
859
+ - Updated dependencies [f531a26]
860
+ - Updated dependencies [f531a26]
861
+ - Updated dependencies [4109153]
862
+ - Updated dependencies [f531a26]
863
+ - Updated dependencies [f531a26]
864
+ - Updated dependencies [f531a26]
865
+ - Updated dependencies [f531a26]
866
+ - Updated dependencies [f531a26]
867
+ - Updated dependencies [f531a26]
868
+ - Updated dependencies [627f225]
869
+ - Updated dependencies [f531a26]
870
+ - Updated dependencies [f531a26]
871
+ - Updated dependencies [f531a26]
872
+ - @objectstack/spec@15.1.0
873
+ - @objectstack/core@15.1.0
874
+ - @objectstack/driver-sql@15.1.0
875
+
876
+ ## 15.0.0
877
+
878
+ ### Patch Changes
879
+
880
+ - Updated dependencies [28b7c28]
881
+ - Updated dependencies [13749ec]
882
+ - Updated dependencies [e62c233]
883
+ - Updated dependencies [ed61c9b]
884
+ - Updated dependencies [31d04d4]
885
+ - @objectstack/spec@15.0.0
886
+ - @objectstack/core@15.0.0
887
+ - @objectstack/driver-sql@15.0.0
888
+
889
+ ## 14.8.0
890
+
891
+ ### Patch Changes
892
+
893
+ - a199626: Harden the wasm SQLite driver (the dev fallback used when native `better-sqlite3` has an ABI mismatch) against three failure modes that spammed `pnpm dev`:
894
+
895
+ - **Atomic flushes.** The database was persisted with a plain `writeFile` that truncates-then-streams in place, so a process killed mid-write (a dev-server restart, Ctrl-C, or crash — likely under `on-write`, where every dispatcher tick flushes) left a torn file that sql.js rejected on the next boot with `database disk image is malformed`. Flushes now write to a sibling temp file, `fsync`, and atomically `rename()` over the target, so a reader always sees a complete image.
896
+ - **Corruption self-heal.** When an on-disk image is already corrupt, the driver now detects it at open (via `PRAGMA quick_check`), quarantines the bad file to `<db>.corrupt-<timestamp>`, and boots on a fresh database — instead of failing every query forever with no path to recovery.
897
+ - **`undefined` bindings.** A raw `undefined` binding made sql.js `throw` a plain string (`Wrong API use : tried to bind a value of an unknown type (undefined).`), which aborted the write and logged as a garbled char-indexed object. `undefined` is now coerced to SQL `NULL`, matching the driver's `useNullAsDefault` semantics and the native better-sqlite3 path.
898
+
899
+ - Updated dependencies [16b4bf6]
900
+ - Updated dependencies [16b4bf6]
901
+ - Updated dependencies [10e8983]
902
+ - Updated dependencies [84650c5]
903
+ - Updated dependencies [607aaf4]
904
+ - Updated dependencies [bb71321]
905
+ - @objectstack/spec@14.8.0
906
+ - @objectstack/driver-sql@14.8.0
907
+ - @objectstack/core@14.8.0
908
+
909
+ ## 14.7.0
910
+
911
+ ### Patch Changes
912
+
913
+ - Updated dependencies [d6a72eb]
914
+ - @objectstack/spec@14.7.0
915
+ - @objectstack/core@14.7.0
916
+ - @objectstack/driver-sql@14.7.0
917
+
918
+ ## 14.6.0
919
+
920
+ ### Patch Changes
921
+
922
+ - Updated dependencies [609cb13]
923
+ - Updated dependencies [ce6d151]
924
+ - @objectstack/spec@14.6.0
925
+ - @objectstack/driver-sql@14.6.0
926
+ - @objectstack/core@14.6.0
927
+
928
+ ## 14.5.0
929
+
930
+ ### Patch Changes
931
+
932
+ - Updated dependencies [526805e]
933
+ - Updated dependencies [d79ca07]
934
+ - Updated dependencies [33ebd34]
935
+ - Updated dependencies [c044f08]
936
+ - Updated dependencies [01274eb]
937
+ - @objectstack/spec@14.5.0
938
+ - @objectstack/core@14.5.0
939
+ - @objectstack/driver-sql@14.5.0
940
+
941
+ ## 14.4.0
942
+
943
+ ### Minor Changes
944
+
945
+ - 7953832: ADR-0057 data lifecycle P1–P4 (#2786): platform-generated data is now bounded by construction.
946
+
947
+ - **P1 — contract**: new `lifecycle` object property (`class: record | audit | telemetry | transient | event` + `retention` / `ttl` / `storage(rotation)` / `archive` / `reclaim`), enforced by the platform-owned **LifecycleService** registered by `ObjectQLPlugin` (default-on; disable via `OS_LIFECYCLE_DISABLED=1` or plugin `lifecycle.enabled=false`). The Reaper batch-deletes rows past `retention.maxAge` / `ttl` under a system context and reclaims space (`SqlDriver.reclaimSpace()` → SQLite `PRAGMA incremental_vacuum`). Non-`record` classes must declare a bounding policy (parse-time invariant + spec-liveness gate + dogfood storage-growth gate).
948
+ - **P2 — rotation**: `storage: { strategy: 'rotation', shards, unit }` physically time-shards the table on SQLite — writes land in the current shard, reads go through a UNION-ALL view under the base name, expiry is an O(1) `DROP` of shards past the window. A legacy table is adopted as the first shard on upgrade. Other dialects fall back to an equivalent age-based reap.
949
+ - **P3 — separation + Archiver**: registering a datasource named `telemetry` routes telemetry/event/audit objects to it (opt-in by existence; `transient` deliberately stays on the primary). Audit objects with `archive` declared get retain → archive → delete once the archive datasource exists; without it rows are retained, never dropped unarchived.
950
+ - **P4 — governance**: new `lifecycle` settings namespace — runtime enable switch, per-object retention overrides (tenant-scoped: regulated tenants set years, dev sets days), per-object/per-class row quotas and growth alerts (observe-and-alert only).
951
+
952
+ **Behavior change**: 11 platform objects now carry lifecycle declarations and their telemetry is bounded by default — `sys_activity` 14d (rotated), `sys_audit_log` 90d hot → archive (retained forever until an `archive` datasource is registered), `sys_metadata_audit` 365d → archive, `sys_job_run` / `sys_automation_run` / `sys_http_delivery` 30d, notification pipeline (`sys_notification`, delivery, receipt, inbox) 90d, `sys_device_code` expires_at + 1d. Extend windows per environment/tenant via the `lifecycle.retention_overrides` setting.
953
+
954
+ ### Patch Changes
955
+
956
+ - Updated dependencies [7953832]
957
+ - Updated dependencies [82e745e]
958
+ - Updated dependencies [f3035bd]
959
+ - Updated dependencies [82c0d94]
960
+ - Updated dependencies [7449476]
961
+ - @objectstack/spec@14.4.0
962
+ - @objectstack/driver-sql@14.4.0
963
+ - @objectstack/core@14.4.0
964
+
965
+ ## 14.3.0
966
+
967
+ ### Patch Changes
968
+
969
+ - Updated dependencies [2a71f48]
970
+ - Updated dependencies [02f6af4]
971
+ - Updated dependencies [c1064f1]
972
+ - @objectstack/spec@14.3.0
973
+ - @objectstack/core@14.3.0
974
+ - @objectstack/driver-sql@14.3.0
975
+
976
+ ## 14.2.0
977
+
978
+ ### Patch Changes
979
+
980
+ - Updated dependencies [ac8f029]
981
+ - Updated dependencies [4ab9958]
982
+ - @objectstack/spec@14.2.0
983
+ - @objectstack/core@14.2.0
984
+ - @objectstack/driver-sql@14.2.0
985
+
986
+ ## 14.1.0
987
+
988
+ ### Patch Changes
989
+
990
+ - Updated dependencies [5a8465f]
991
+ - Updated dependencies [7f8620b]
992
+ - Updated dependencies [82ba3a6]
993
+ - @objectstack/spec@14.1.0
994
+ - @objectstack/core@14.1.0
995
+ - @objectstack/driver-sql@14.1.0
996
+
997
+ ## 14.0.0
998
+
999
+ ### Patch Changes
1000
+
1001
+ - Updated dependencies [0a8e685]
1002
+ - Updated dependencies [afa8115]
1003
+ - Updated dependencies [80f12ca]
1004
+ - Updated dependencies [e2fa074]
1005
+ - Updated dependencies [23c8668]
1006
+ - Updated dependencies [29f017d]
1007
+ - Updated dependencies [afa8115]
1008
+ - Updated dependencies [216fa9a]
1009
+ - Updated dependencies [6c22b12]
1010
+ - @objectstack/spec@14.0.0
1011
+ - @objectstack/driver-sql@14.0.0
1012
+ - @objectstack/core@14.0.0
1013
+
1014
+ ## 13.0.0
1015
+
1016
+ ### Patch Changes
1017
+
1018
+ - Updated dependencies [6d83431]
1019
+ - Updated dependencies [01917c2]
1020
+ - Updated dependencies [b271691]
1021
+ - Updated dependencies [a5a1e41]
1022
+ - Updated dependencies [466adf6]
1023
+ - Updated dependencies [5be00c3]
1024
+ - Updated dependencies [466adf6]
1025
+ - Updated dependencies [2bee609]
1026
+ - Updated dependencies [fc7e7f7]
1027
+ - @objectstack/spec@13.0.0
1028
+ - @objectstack/core@13.0.0
1029
+ - @objectstack/driver-sql@13.0.0
1030
+
1031
+ ## 12.6.0
1032
+
1033
+ ### Patch Changes
1034
+
1035
+ - Updated dependencies [6cebf22]
1036
+ - Updated dependencies [21420d9]
1037
+ - @objectstack/spec@12.6.0
1038
+ - @objectstack/core@12.6.0
1039
+ - @objectstack/driver-sql@12.6.0
1040
+
1041
+ ## 12.5.0
1042
+
1043
+ ### Patch Changes
1044
+
1045
+ - Updated dependencies [8b3d363]
1046
+ - @objectstack/spec@12.5.0
1047
+ - @objectstack/core@12.5.0
1048
+ - @objectstack/driver-sql@12.5.0
1049
+
1050
+ ## 12.4.0
1051
+
1052
+ ### Patch Changes
1053
+
1054
+ - Updated dependencies [60dc3ba]
1055
+ - @objectstack/spec@12.4.0
1056
+ - @objectstack/core@12.4.0
1057
+ - @objectstack/driver-sql@12.4.0
1058
+
1059
+ ## 12.3.0
1060
+
1061
+ ### Patch Changes
1062
+
1063
+ - Updated dependencies [e7eceec]
1064
+ - @objectstack/spec@12.3.0
1065
+ - @objectstack/core@12.3.0
1066
+ - @objectstack/driver-sql@12.3.0
1067
+
1068
+ ## 12.2.0
1069
+
1070
+ ### Patch Changes
1071
+
1072
+ - Updated dependencies [fce8ff4]
1073
+ - Updated dependencies [3962023]
1074
+ - Updated dependencies [2bb193d]
1075
+ - Updated dependencies [0426d27]
1076
+ - Updated dependencies [da807f7]
1077
+ - Updated dependencies [4f5b791]
1078
+ - @objectstack/spec@12.2.0
1079
+ - @objectstack/core@12.2.0
1080
+ - @objectstack/driver-sql@12.2.0
1081
+
1082
+ ## 12.1.0
1083
+
1084
+ ### Patch Changes
1085
+
1086
+ - Updated dependencies [93e6d02]
1087
+ - @objectstack/spec@12.1.0
1088
+ - @objectstack/core@12.1.0
1089
+ - @objectstack/driver-sql@12.1.0
1090
+
1091
+ ## 12.0.0
1092
+
1093
+ ### Patch Changes
1094
+
1095
+ - Updated dependencies [a8df396]
1096
+ - Updated dependencies [e695fe0]
1097
+ - Updated dependencies [7c09621]
1098
+ - Updated dependencies [7709db4]
1099
+ - Updated dependencies [2082109]
1100
+ - Updated dependencies [7c09621]
1101
+ - Updated dependencies [9860de4]
1102
+ - Updated dependencies [069c205]
1103
+ - @objectstack/spec@12.0.0
1104
+ - @objectstack/core@12.0.0
1105
+ - @objectstack/driver-sql@12.0.0
1106
+
1107
+ ## 11.10.0
1108
+
1109
+ ### Patch Changes
1110
+
1111
+ - Updated dependencies [6a9397e]
1112
+ - Updated dependencies [c0efe5d]
1113
+ - @objectstack/spec@11.10.0
1114
+ - @objectstack/core@11.10.0
1115
+ - @objectstack/driver-sql@11.10.0
1116
+
1117
+ ## 11.9.0
1118
+
1119
+ ### Patch Changes
1120
+
1121
+ - Updated dependencies [d3595d9]
1122
+ - Updated dependencies [8d87930]
1123
+ - @objectstack/spec@11.9.0
1124
+ - @objectstack/driver-sql@11.9.0
1125
+ - @objectstack/core@11.9.0
1126
+
1127
+ ## 11.8.0
1128
+
1129
+ ### Patch Changes
1130
+
1131
+ - @objectstack/spec@11.8.0
1132
+ - @objectstack/core@11.8.0
1133
+ - @objectstack/driver-sql@11.8.0
1134
+
1135
+ ## 11.7.0
1136
+
1137
+ ### Patch Changes
1138
+
1139
+ - Updated dependencies [5178906]
1140
+ - @objectstack/spec@11.7.0
1141
+ - @objectstack/core@11.7.0
1142
+ - @objectstack/driver-sql@11.7.0
1143
+
1144
+ ## 11.6.0
1145
+
1146
+ ### Patch Changes
1147
+
1148
+ - @objectstack/spec@11.6.0
1149
+ - @objectstack/core@11.6.0
1150
+ - @objectstack/driver-sql@11.6.0
1151
+
1152
+ ## 11.5.0
1153
+
1154
+ ### Patch Changes
1155
+
1156
+ - Updated dependencies [6ee4f04]
1157
+ - Updated dependencies [c1e3a65]
1158
+ - @objectstack/spec@11.5.0
1159
+ - @objectstack/core@11.5.0
1160
+ - @objectstack/driver-sql@11.5.0
1161
+
1162
+ ## 11.4.0
1163
+
1164
+ ### Patch Changes
1165
+
1166
+ - Updated dependencies [5821c51]
1167
+ - Updated dependencies [a0fce3f]
1168
+ - @objectstack/spec@11.4.0
1169
+ - @objectstack/core@11.4.0
1170
+ - @objectstack/driver-sql@11.4.0
1171
+
1172
+ ## 11.3.0
1173
+
1174
+ ### Patch Changes
1175
+
1176
+ - Updated dependencies [58e8e31]
1177
+ - Updated dependencies [b4a5df0]
1178
+ - @objectstack/spec@11.3.0
1179
+ - @objectstack/core@11.3.0
1180
+ - @objectstack/driver-sql@11.3.0
1181
+
1182
+ ## 11.2.0
1183
+
1184
+ ### Patch Changes
1185
+
1186
+ - Updated dependencies [d0f4b13]
1187
+ - Updated dependencies [302bdab]
1188
+ - @objectstack/spec@11.2.0
1189
+ - @objectstack/core@11.2.0
1190
+ - @objectstack/driver-sql@11.2.0
1191
+
1192
+ ## 11.1.0
1193
+
1194
+ ### Patch Changes
1195
+
1196
+ - Updated dependencies [ce0b4f6]
1197
+ - Updated dependencies [9ccfcd6]
1198
+ - Updated dependencies [ecf193f]
1199
+ - Updated dependencies [51bec81]
1200
+ - Updated dependencies [3e593a7]
1201
+ - Updated dependencies [63d5403]
1202
+ - @objectstack/core@11.1.0
1203
+ - @objectstack/spec@11.1.0
1204
+ - @objectstack/driver-sql@11.1.0
1205
+
1206
+ ## 11.0.0
1207
+
1208
+ ### Patch Changes
1209
+
1210
+ - Updated dependencies [ab5718a]
1211
+ - Updated dependencies [4845c12]
1212
+ - Updated dependencies [c1a754a]
1213
+ - Updated dependencies [6fbe91f]
1214
+ - Updated dependencies [715d667]
1215
+ - Updated dependencies [5eef4cf]
1216
+ - Updated dependencies [72759e1]
1217
+ - Updated dependencies [6c4fbd9]
1218
+ - Updated dependencies [ef3ed67]
1219
+ - Updated dependencies [cd51229]
1220
+ - Updated dependencies [7697a0e]
1221
+ - Updated dependencies [e7e04f1]
1222
+ - Updated dependencies [cfd5ac4]
1223
+ - Updated dependencies [2be5c1f]
1224
+ - Updated dependencies [ad143ce]
1225
+ - Updated dependencies [5c4a8c8]
1226
+ - Updated dependencies [3afaeed]
1227
+ - Updated dependencies [8801c02]
1228
+ - Updated dependencies [3d04e06]
1229
+ - Updated dependencies [98a1535]
1230
+ - Updated dependencies [bc22a89]
1231
+ - Updated dependencies [8a7e9f1]
1232
+ - Updated dependencies [4a84c98]
1233
+ - Updated dependencies [c715d25]
1234
+ - Updated dependencies [aa33b02]
1235
+ - Updated dependencies [d980f0d]
1236
+ - Updated dependencies [a658523]
1237
+ - Updated dependencies [82ff91c]
1238
+ - Updated dependencies [638f472]
1239
+ - @objectstack/spec@11.0.0
1240
+ - @objectstack/driver-sql@11.0.0
1241
+ - @objectstack/core@11.0.0
1242
+
1243
+ ## 10.3.0
1244
+
1245
+ ### Patch Changes
1246
+
1247
+ - Updated dependencies [5ba52b0]
1248
+ - @objectstack/driver-sql@10.3.0
1249
+ - @objectstack/spec@10.3.0
1250
+ - @objectstack/core@10.3.0
1251
+
1252
+ ## 10.2.0
1253
+
1254
+ ### Patch Changes
1255
+
1256
+ - Updated dependencies [b496498]
1257
+ - @objectstack/spec@10.2.0
1258
+ - @objectstack/core@10.2.0
1259
+ - @objectstack/driver-sql@10.2.0
1260
+
1261
+ ## 10.1.0
1262
+
1263
+ ### Patch Changes
1264
+
1265
+ - Updated dependencies [49da36e]
1266
+ - Updated dependencies [ac79f16]
1267
+ - Updated dependencies [517dad9]
1268
+ - @objectstack/spec@10.1.0
1269
+ - @objectstack/driver-sql@10.1.0
1270
+ - @objectstack/core@10.1.0
1271
+
1272
+ ## 10.0.0
1273
+
1274
+ ### Patch Changes
1275
+
1276
+ - Updated dependencies [d7ff626]
1277
+ - Updated dependencies [92db3e5]
1278
+ - Updated dependencies [2a1b16b]
1279
+ - Updated dependencies [e16f2a8]
1280
+ - Updated dependencies [e411a82]
1281
+ - Updated dependencies [a581385]
1282
+ - Updated dependencies [d5f6d29]
1283
+ - Updated dependencies [220ce5b]
1284
+ - Updated dependencies [3efe334]
1285
+ - Updated dependencies [feead7e]
1286
+ - Updated dependencies [6ca20b3]
1287
+ - Updated dependencies [5f875fe]
1288
+ - Updated dependencies [b469950]
1289
+ - @objectstack/spec@10.0.0
1290
+ - @objectstack/driver-sql@10.0.0
1291
+ - @objectstack/core@10.0.0
1292
+
1293
+ ## 9.11.0
1294
+
1295
+ ### Patch Changes
1296
+
1297
+ - Updated dependencies [e7f6539]
1298
+ - Updated dependencies [2365d07]
1299
+ - Updated dependencies [6595b53]
1300
+ - Updated dependencies [fa8964d]
1301
+ - Updated dependencies [36138c7]
1302
+ - Updated dependencies [a8e4f3b]
1303
+ - Updated dependencies [4c213c2]
1304
+ - Updated dependencies [2afb612]
1305
+ - @objectstack/spec@9.11.0
1306
+ - @objectstack/driver-sql@9.11.0
1307
+ - @objectstack/core@9.11.0
1308
+
1309
+ ## 9.10.0
1310
+
1311
+ ### Patch Changes
1312
+
1313
+ - Updated dependencies [db02bd5]
1314
+ - Updated dependencies [641675d]
1315
+ - Updated dependencies [d9508d1]
1316
+ - Updated dependencies [1d352d3]
1317
+ - Updated dependencies [94e9040]
1318
+ - Updated dependencies [1f88fd9]
1319
+ - Updated dependencies [1f88fd9]
1320
+ - @objectstack/driver-sql@9.10.0
1321
+ - @objectstack/spec@9.10.0
1322
+ - @objectstack/core@9.10.0
1323
+
1324
+ ## 9.9.1
1325
+
1326
+ ### Patch Changes
1327
+
1328
+ - @objectstack/spec@9.9.1
1329
+ - @objectstack/core@9.9.1
1330
+ - @objectstack/driver-sql@9.9.1
1331
+
1332
+ ## 9.9.0
1333
+
1334
+ ### Patch Changes
1335
+
1336
+ - Updated dependencies [84249a4]
1337
+ - Updated dependencies [796f0d6]
1338
+ - Updated dependencies [11af299]
1339
+ - Updated dependencies [d5774b5]
1340
+ - Updated dependencies [bfa3102]
1341
+ - Updated dependencies [134043a]
1342
+ - Updated dependencies [90108e0]
1343
+ - Updated dependencies [9afeb2d]
1344
+ - Updated dependencies [6bec07e]
1345
+ - Updated dependencies [601cc11]
1346
+ - Updated dependencies [575448d]
1347
+ - @objectstack/spec@9.9.0
1348
+ - @objectstack/driver-sql@9.9.0
1349
+ - @objectstack/core@9.9.0
1350
+
1351
+ ## 9.8.0
1352
+
1353
+ ### Patch Changes
1354
+
1355
+ - Updated dependencies [97c55b3]
1356
+ - Updated dependencies [1b1f490]
1357
+ - @objectstack/spec@9.8.0
1358
+ - @objectstack/core@9.8.0
1359
+ - @objectstack/driver-sql@9.8.0
1360
+
1361
+ ## 9.7.0
1362
+
1363
+ ### Patch Changes
1364
+
1365
+ - @objectstack/spec@9.7.0
1366
+ - @objectstack/core@9.7.0
1367
+ - @objectstack/driver-sql@9.7.0
1368
+
1369
+ ## 9.6.0
1370
+
1371
+ ### Patch Changes
1372
+
1373
+ - Updated dependencies [d1e930a]
1374
+ - Updated dependencies [71578f2]
1375
+ - Updated dependencies [5e3a301]
1376
+ - Updated dependencies [5db2742]
1377
+ - @objectstack/spec@9.6.0
1378
+ - @objectstack/core@9.6.0
1379
+ - @objectstack/driver-sql@9.6.0
1380
+
1381
+ ## 9.5.1
1382
+
1383
+ ### Patch Changes
1384
+
1385
+ - Updated dependencies [ee72aae]
1386
+ - @objectstack/spec@9.5.1
1387
+ - @objectstack/core@9.5.1
1388
+ - @objectstack/driver-sql@9.5.1
1389
+
1390
+ ## 9.5.0
1391
+
1392
+ ### Patch Changes
1393
+
1394
+ - Updated dependencies [d08551c]
1395
+ - Updated dependencies [707aeed]
1396
+ - Updated dependencies [7a103d4]
1397
+ - Updated dependencies [4b01250]
1398
+ - @objectstack/spec@9.5.0
1399
+ - @objectstack/core@9.5.0
1400
+ - @objectstack/driver-sql@9.5.0
1401
+
1402
+ ## 9.4.0
1403
+
1404
+ ### Patch Changes
1405
+
1406
+ - Updated dependencies [060467a]
1407
+ - Updated dependencies [0856476]
1408
+ - Updated dependencies [b678d8c]
1409
+ - Updated dependencies [b678d8c]
1410
+ - Updated dependencies [b678d8c]
1411
+ - Updated dependencies [b678d8c]
1412
+ - @objectstack/spec@9.4.0
1413
+ - @objectstack/driver-sql@9.4.0
1414
+ - @objectstack/core@9.4.0
1415
+
1416
+ ## 9.3.0
1417
+
1418
+ ### Patch Changes
1419
+
1420
+ - Updated dependencies [1ada658]
1421
+ - Updated dependencies [3219191]
1422
+ - Updated dependencies [290f631]
1423
+ - Updated dependencies [50b7b47]
1424
+ - Updated dependencies [f15d6f6]
1425
+ - Updated dependencies [f8684ea]
1426
+ - Updated dependencies [b4765be]
1427
+ - @objectstack/spec@9.3.0
1428
+ - @objectstack/core@9.3.0
1429
+ - @objectstack/driver-sql@9.3.0
1430
+
1431
+ ## 9.2.0
1432
+
1433
+ ### Patch Changes
1434
+
1435
+ - Updated dependencies [2f57b75]
1436
+ - Updated dependencies [2f57b75]
1437
+ - @objectstack/spec@9.2.0
1438
+ - @objectstack/core@9.2.0
1439
+ - @objectstack/driver-sql@9.2.0
1440
+
1441
+ ## 9.1.0
1442
+
1443
+ ### Patch Changes
1444
+
1445
+ - Updated dependencies [b9062c9]
1446
+ - @objectstack/spec@9.1.0
1447
+ - @objectstack/core@9.1.0
1448
+ - @objectstack/driver-sql@9.1.0
1449
+
1450
+ ## 9.0.1
1451
+
1452
+ ### Patch Changes
1453
+
1454
+ - Updated dependencies [1817845]
1455
+ - @objectstack/spec@9.0.1
1456
+ - @objectstack/core@9.0.1
1457
+ - @objectstack/driver-sql@9.0.1
1458
+
1459
+ ## 9.0.0
1460
+
1461
+ ### Patch Changes
1462
+
1463
+ - Updated dependencies [4c3f693]
1464
+ - Updated dependencies [0bf39f1]
1465
+ - Updated dependencies [f533f42]
1466
+ - Updated dependencies [1c83ee8]
1467
+ - @objectstack/spec@9.0.0
1468
+ - @objectstack/core@9.0.0
1469
+ - @objectstack/driver-sql@9.0.0
1470
+
1471
+ ## 8.0.1
1472
+
1473
+ ### Patch Changes
1474
+
1475
+ - @objectstack/spec@8.0.1
1476
+ - @objectstack/core@8.0.1
1477
+ - @objectstack/driver-sql@8.0.1
1478
+
1479
+ ## 8.0.0
1480
+
1481
+ ### Patch Changes
1482
+
1483
+ - Updated dependencies [a46c017]
1484
+ - Updated dependencies [b990b89]
1485
+ - Updated dependencies [99111ec]
1486
+ - Updated dependencies [d5a8161]
1487
+ - Updated dependencies [5cf1f1b]
1488
+ - Updated dependencies [9ef89d4]
1489
+ - Updated dependencies [1e8b680]
1490
+ - Updated dependencies [3306d2f]
1491
+ - Updated dependencies [c262301]
1492
+ - Updated dependencies [bc44195]
1493
+ - Updated dependencies [9e2e229]
1494
+ - @objectstack/spec@8.0.0
1495
+ - @objectstack/driver-sql@8.0.0
1496
+ - @objectstack/core@8.0.0
1497
+
1498
+ ## 7.9.0
1499
+
1500
+ ### Patch Changes
1501
+
1502
+ - @objectstack/spec@7.9.0
1503
+ - @objectstack/core@7.9.0
1504
+ - @objectstack/driver-sql@7.9.0
1505
+
1506
+ ## 7.8.0
1507
+
1508
+ ### Patch Changes
1509
+
1510
+ - Updated dependencies [06f2bbb]
1511
+ - Updated dependencies [36719db]
1512
+ - Updated dependencies [424ab26]
1513
+ - @objectstack/spec@7.8.0
1514
+ - @objectstack/core@7.8.0
1515
+ - @objectstack/driver-sql@7.8.0
1516
+
1517
+ ## 7.7.0
1518
+
1519
+ ### Patch Changes
1520
+
1521
+ - Updated dependencies [b391955]
1522
+ - Updated dependencies [f06b64e]
1523
+ - Updated dependencies [023bf93]
1524
+ - Updated dependencies [764c747]
1525
+ - @objectstack/spec@7.7.0
1526
+ - @objectstack/driver-sql@7.7.0
1527
+ - @objectstack/core@7.7.0
1528
+
1529
+ ## 7.6.0
1530
+
1531
+ ### Patch Changes
1532
+
1533
+ - be20aa4: Fix `COMMIT; - cannot commit - no transaction is active` under `persist: 'on-write'` (#1494).
1534
+
1535
+ sql.js's `Database.export()` closes and reopens the database (it has no in-place
1536
+ serialize), which rolls back any open transaction. The fire-and-forget flush
1537
+ triggered after a write inside a Knex transaction (e.g. the autonumber sequence
1538
+ `BEGIN…COMMIT`) could therefore abort that transaction, leaving the trailing
1539
+ `COMMIT` to fail. The connection is now transaction-aware: `flush()` is deferred
1540
+ while a transaction is open and runs once it fully closes, so committed data is
1541
+ still persisted without aborting in-flight transactions.
1542
+
1543
+ - Updated dependencies [955d4c8]
1544
+ - Updated dependencies [c4a4cbd]
1545
+ - Updated dependencies [b046ec2]
1546
+ - Updated dependencies [2170ad9]
1547
+ - Updated dependencies [02d6359]
1548
+ - Updated dependencies [7648242]
1549
+ - Updated dependencies [8fa1e7f]
1550
+ - Updated dependencies [55866f5]
1551
+ - Updated dependencies [60f9c45]
1552
+ - @objectstack/spec@7.6.0
1553
+ - @objectstack/core@7.6.0
1554
+ - @objectstack/driver-sql@7.6.0
1555
+
1556
+ ## 7.5.0
1557
+
1558
+ ### Patch Changes
1559
+
1560
+ - @objectstack/spec@7.5.0
1561
+ - @objectstack/core@7.5.0
1562
+ - @objectstack/driver-sql@7.5.0
1563
+
1564
+ ## 7.4.1
1565
+
1566
+ ### Patch Changes
1567
+
1568
+ - @objectstack/spec@7.4.1
1569
+ - @objectstack/core@7.4.1
1570
+ - @objectstack/driver-sql@7.4.1
1571
+
1572
+ ## 7.4.0
1573
+
1574
+ ### Patch Changes
1575
+
1576
+ - Updated dependencies [23c7107]
1577
+ - Updated dependencies [c72daad]
1578
+ - Updated dependencies [f115182]
1579
+ - Updated dependencies [24c9013]
1580
+ - Updated dependencies [2faf9f2]
1581
+ - Updated dependencies [2faf9f2]
1582
+ - Updated dependencies [2faf9f2]
1583
+ - Updated dependencies [58b450b]
1584
+ - Updated dependencies [82eb6cf]
1585
+ - Updated dependencies [13d8653]
1586
+ - Updated dependencies [ff3d006]
1587
+ - Updated dependencies [5e831de]
1588
+ - @objectstack/spec@7.4.0
1589
+ - @objectstack/driver-sql@7.4.0
1590
+ - @objectstack/core@7.4.0
1591
+
1592
+ ## 7.3.0
1593
+
1594
+ ### Patch Changes
1595
+
1596
+ - Updated dependencies [5e7c554]
1597
+ - @objectstack/spec@7.3.0
1598
+ - @objectstack/core@7.3.0
1599
+ - @objectstack/driver-sql@7.3.0
1600
+
1601
+ ## 7.2.1
1602
+
1603
+ ### Patch Changes
1604
+
1605
+ - @objectstack/spec@7.2.1
1606
+ - @objectstack/core@7.2.1
1607
+ - @objectstack/driver-sql@7.2.1
1608
+
1609
+ ## 7.2.0
1610
+
1611
+ ### Patch Changes
1612
+
1613
+ - @objectstack/spec@7.2.0
1614
+ - @objectstack/core@7.2.0
1615
+ - @objectstack/driver-sql@7.2.0
1616
+
1617
+ ## 7.1.0
1618
+
1619
+ ### Patch Changes
1620
+
1621
+ - Updated dependencies [47a92f4]
1622
+ - @objectstack/spec@7.1.0
1623
+ - @objectstack/core@7.1.0
1624
+ - @objectstack/driver-sql@7.1.0
1625
+
1626
+ ## 7.0.0
1627
+
1628
+ ### Patch Changes
1629
+
1630
+ - Updated dependencies [74470ad]
1631
+ - Updated dependencies [d29617e]
1632
+ - Updated dependencies [dc72172]
1633
+ - @objectstack/spec@7.0.0
1634
+ - @objectstack/core@7.0.0
1635
+ - @objectstack/driver-sql@7.0.0
1636
+
1637
+ ## 6.9.0
1638
+
1639
+ ### Patch Changes
1640
+
1641
+ - @objectstack/spec@6.9.0
1642
+ - @objectstack/core@6.9.0
1643
+ - @objectstack/driver-sql@6.9.0
1644
+
1645
+ ## 6.8.1
1646
+
1647
+ ### Patch Changes
1648
+
1649
+ - @objectstack/spec@6.8.1
1650
+ - @objectstack/core@6.8.1
1651
+ - @objectstack/driver-sql@6.8.1
1652
+
1653
+ ## 6.8.0
1654
+
1655
+ ### Patch Changes
1656
+
1657
+ - Updated dependencies [6e88f77]
1658
+ - Updated dependencies [c8b9f57]
1659
+ - @objectstack/spec@6.8.0
1660
+ - @objectstack/core@6.8.0
1661
+ - @objectstack/driver-sql@6.8.0
1662
+
1663
+ ## 6.7.1
1664
+
1665
+ ### Patch Changes
1666
+
1667
+ - @objectstack/spec@6.7.1
1668
+ - @objectstack/core@6.7.1
1669
+ - @objectstack/driver-sql@6.7.1
1670
+
1671
+ ## 6.7.0
1672
+
1673
+ ### Patch Changes
1674
+
1675
+ - Updated dependencies [4944f3a]
1676
+ - Updated dependencies [430067b]
1677
+ - Updated dependencies [4f9e9d4]
1678
+ - @objectstack/driver-sql@6.7.0
1679
+ - @objectstack/spec@6.7.0
1680
+ - @objectstack/core@6.7.0
1681
+
1682
+ ## 6.6.0
1683
+
1684
+ ### Patch Changes
1685
+
1686
+ - Updated dependencies [a49cfc2]
1687
+ - @objectstack/spec@6.6.0
1688
+ - @objectstack/core@6.6.0
1689
+ - @objectstack/driver-sql@6.6.0
1690
+
1691
+ ## 6.5.1
1692
+
1693
+ ### Patch Changes
1694
+
1695
+ - @objectstack/spec@6.5.1
1696
+ - @objectstack/core@6.5.1
1697
+ - @objectstack/driver-sql@6.5.1
1698
+
1699
+ ## 6.5.0
1700
+
1701
+ ### Patch Changes
1702
+
1703
+ - @objectstack/spec@6.5.0
1704
+ - @objectstack/core@6.5.0
1705
+ - @objectstack/driver-sql@6.5.0
1706
+
1707
+ ## 6.4.0
1708
+
1709
+ ### Patch Changes
1710
+
1711
+ - Updated dependencies [f8651cc]
1712
+ - Updated dependencies [f8651cc]
1713
+ - Updated dependencies [0bf6f9a]
1714
+ - @objectstack/spec@6.4.0
1715
+ - @objectstack/core@6.4.0
1716
+ - @objectstack/driver-sql@6.4.0
1717
+
1718
+ ## 6.3.0
1719
+
1720
+ ### Patch Changes
1721
+
1722
+ - @objectstack/spec@6.3.0
1723
+ - @objectstack/core@6.3.0
1724
+ - @objectstack/driver-sql@6.3.0
1725
+
1726
+ ## 6.2.0
1727
+
1728
+ ### Patch Changes
1729
+
1730
+ - Updated dependencies [b4c74a9]
1731
+ - @objectstack/spec@6.2.0
1732
+ - @objectstack/core@6.2.0
1733
+ - @objectstack/driver-sql@6.2.0
1734
+
1735
+ ## 6.1.1
1736
+
1737
+ ### Patch Changes
1738
+
1739
+ - 084ee2f: Sync `@objectstack/driver-sqlite-wasm` into the v6 fixed-version group so it
1740
+ releases in lockstep with the rest of the framework. The package was
1741
+ previously stuck at 5.2.1 on npm while every other `@objectstack/*` package
1742
+ moved to 6.0.0, which broke StackBlitz/WebContainer installs of templates
1743
+ that pin `^6.0.0`.
1744
+ - @objectstack/spec@6.1.1
1745
+ - @objectstack/core@6.1.1
1746
+ - @objectstack/driver-sql@6.1.1
1747
+
1748
+ ## 5.2.2
1749
+
1750
+ ### Patch Changes
1751
+
1752
+ - Updated dependencies [93c0589]
1753
+ - @objectstack/spec@6.1.0
1754
+ - @objectstack/core@6.1.0
1755
+ - @objectstack/driver-sql@6.1.0
1756
+
1757
+ ## 5.2.1
1758
+
1759
+ ### Patch Changes
1760
+
1761
+ - Updated dependencies [629a716]
1762
+ - Updated dependencies [dbc4f7d]
1763
+ - Updated dependencies [944f187]
1764
+ - @objectstack/spec@6.0.0
1765
+ - @objectstack/core@6.0.0
1766
+ - @objectstack/driver-sql@6.0.0