|
| 1 | +--- |
| 2 | +'@objectstack/cli': patch |
| 3 | +--- |
| 4 | + |
| 5 | +Correct the remaining out-of-package comments that still described |
| 6 | +`SqlDriver#formatOutput`'s two timestamp passes as gated on `if (this.isSqlite)`. |
| 7 | + |
| 8 | +Since ADR-0053 D-F1 (#13973) both passes — the `AUDIT_TIMESTAMP_COLUMNS` pass and the |
| 9 | +`normalizeSqliteDatetimeOutput` pass over `datetimeFields` — run on every dialect, so the |
| 10 | +record read door presents the builtin audit columns and every declared `Field.datetime` |
| 11 | +as canonical ISO-8601-`Z` text on Postgres and MySQL as well as SQLite. Measured on the |
| 12 | +tree rather than recalled: in `packages/drivers/driver-sql/src/sql-driver.ts` the |
| 13 | +`if (this.isSqlite)` arm inside `formatOutput` opens at line 16965 and closes at 17026, |
| 14 | +covering only the JSON codec and the numeric-scalar repair, while the audit-column loop |
| 15 | +(17046) and the `normalizeSqliteDatetimeOutput` loop (17061) both sit at the method's top |
| 16 | +level, below that closing brace. |
| 17 | + |
| 18 | +Two of the corrected comments were load-bearing rather than merely stale. The |
| 19 | +`service-storage` one drew a conclusion for a live read door from the false premise, and |
| 20 | +it also claimed that folding at the driver's read boundary "would reverse the deliberate |
| 21 | +`withPostgresCalendarDayAsText` decision" — which is what #13973 ruled and did. The two |
| 22 | +`packages/cli` ones attached the wrong reason to a true fact: the holder probe reads |
| 23 | +through the raw-SQL seam, so `formatOutput` never runs on that path at all, and the |
| 24 | +dialect divergence there survives the ruling for that reason and not because of a gate. |
| 25 | + |
| 26 | +Comments only — no runtime behaviour, no exported symbol and no public type changes. |
| 27 | +`@objectstack/cli` is the one package named here because its per-file build carries the |
| 28 | +amended text verbatim into `dist/commands/migrate/duplicates.js` and |
| 29 | +`dist/commands/migrate/duplicates.d.ts`, so its published output changes. |
| 30 | +`@objectstack/metadata-protocol` is deliberately NOT named: its edits are all in test |
| 31 | +files, which are not published. `@objectstack/service-storage` and `@objectstack/metadata` |
| 32 | +are deliberately NOT named either: their source edits are JSDoc blocks on the internal |
| 33 | +`usableCreatedAt` and `canonicalTimestampText`, and both bundles strip them — measured |
| 34 | +absent from `dist/`, with each package's identifier found in the same `dist/` (and the |
| 35 | +exported `StrandedOrphanInventoryEngine` docblock present in `dist/index.d.ts`) as the |
| 36 | +firing control that the probe works. |
| 37 | + |
| 38 | +Three carve-outs are preserved rather than flattened: `withPostgresCalendarDayAsText` is |
| 39 | +untouched by that ruling (D-F2 — the client library still materialises `timestamptz` / |
| 40 | +`DATETIME(3)` as a `Date`); the Invalid `Date` residue still stands (D-F3 — the one `Date` |
| 41 | +shape with no canonical text leaves the read door unchanged, so no sentence claims the |
| 42 | +read door never hands out a `Date`); and the ruled-B consumer arms stay, with only the |
| 43 | +prose explaining why they exist corrected. |
0 commit comments