Skip to content

Commit 69f54e9

Browse files
committed
fix(driver-sql): grade the SQLITE_NOTADB changeset minor, as a declared narrowing ships in the launch window
The PR declares Clause-② as no (narrowing), which the Check Changeset level axis reads as a breaking change. A breaking change takes minor during the launch window, so both packages move from patch to minor and the banner sentence states that level and where the breaking-ness is carried. Claude-Session: https://claude.ai/code/session_01QK6pdbxKZiHdFApL8RYVh9 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6d3dd62 commit 69f54e9

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

‎.changeset/24960-sqlite-notadb-connect.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
'@objectstack/driver-sql': patch
3-
'@objectstack/service-datasource': patch
2+
'@objectstack/driver-sql': minor
3+
'@objectstack/service-datasource': minor
44
---
55

66
fix(driver-sql): a SQLite file whose bytes are not a SQLite database fails `connect()` at once, naming the file, and a development boot no longer moves it aside and replaces it with an empty database (#24960)
@@ -13,7 +13,7 @@ Clause-②: no (narrowing)
1313

1414
<!-- adr-0087: not-required (no-migration-prescription) No metadata moves: no spec key, authorable spelling, object definition or stored shape is added, removed, renamed or re-shaped, and no exported declaration is removed or narrowed (`SqliteDatabaseFileError` keeps its shape; only the set of codes it is raised with grows by one), so there is nothing for `objectstack migrate meta` to rewrite. What changes is the answer `SqlDriver.connect()` gives for a SQLite file that is not a database: a rejection where it resolved. The remedy is the datasource's file, never a rewrite of a package source or a stored row. The other categories are closed on facts: both packages publish (not unpublished); no ADR-0087 id is named or touched (not registered or already-registered); and nothing exported is removed or narrowed (not runtime-interface-only, type-surface-only or runtime-export-retired). -->
1515

16-
**BREAKING** (`SqlDriver.connect()`'s accept set narrows): a connect that resolved over a SQLite file that is not a database now rejects. It ships as `patch`: no public surface changes, and during the launch window breaking-ness is carried by this banner and the disposition above, not by the level.
16+
**BREAKING** (`SqlDriver.connect()`'s accept set narrows): a connect that resolved over a SQLite file that is not a database now rejects. It ships as `minor` under the launch-window convention for accept-set narrowings: during the launch window a breaking change does not take `major`, so the level does not say it breaks, and breaking-ness is carried by this banner and the disposition above.
1717

1818
- **Before:** `connect()` resolved; in production the first query failed with `DATABASE_ERROR`, and on a development boot the file was renamed to `<file>.corrupt-<timestamp>` and an empty database was written in its place.
1919
- **Now:** `connect()` rejects with `SqliteDatabaseFileError`, `code: 'SQLITE_NOTADB'`, naming the file; the file is untouched.

0 commit comments

Comments
 (0)