Skip to content

Commit da443bd

Browse files
committed
docs(releases): tighten the 17.5.0 additions after a read-through
Attribute the /import entry to the import door's cell reader rather than the record validator, state the 0.1 + 0.2 result only for the faces the changeset measured, note that remote Turso's count answered 500 rather than [] before, keep the index-skip warning the lint changeset describes, point the checklist preface at the Also-shipped migration note, and reflow the lines the additions left long. Claude-Session: https://claude.ai/code/session_014VGCS11YUtYAiinRcdqQwL Co-authored-by: Claude <noreply@anthropic.com>
1 parent 0fdd47f commit da443bd

1 file changed

Lines changed: 27 additions & 22 deletions

File tree

‎content/docs/releases/v17/17-5.mdx‎

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ description: "Release notes and upgrade checklist for 17.5.0 of the v17 line."
1717
- **An edge-branched `decision` takes only its first matching branch**
1818
(`0283cb9`, #20344). A decision with no `config.conditions` used to run every
1919
out-edge whose condition held; it now runs the first one in declaration
20-
order, and `mode: 'inclusive'` keeps every true branch. `os migrate meta --from 17`
21-
writes `mode: 'inclusive'` into authored sources, but ⚠️ **a flow stored in
22-
`sys_metadata` is not rewritten** and switches to first-match on upgrade.
20+
order, and `mode: 'inclusive'` keeps every true branch.
21+
`os migrate meta --from 17` writes `mode: 'inclusive'` into authored sources,
22+
but ⚠️ **a flow stored in `sys_metadata` is not rewritten** and switches to
23+
first-match on upgrade.
2324
- **Row-level security stops admitting what it cannot enforce.** A policy with
2425
no `check` now holds inserts and updates to its `using` (`b7c792b`, #19952) —
2526
the documented default that the write gate never applied. Predicates that
@@ -103,8 +104,7 @@ description: "Release notes and upgrade checklist for 17.5.0 of the v17 line."
103104
The 69 package `CHANGELOG.md` files that carry a 17.5.0 section list them as
104105
1,372 per-package entries (703 minor, 669 patch) in 56 of those files, because
105106
a changeset that bumps several packages is listed in each; the entries
106-
de-duplicate to the same 958. The bundled Console
107-
advances four pins,
107+
de-duplicate to the same 958. The bundled Console advances four pins,
108108
`53ded82bf7a4 → 87af769e9a3e → 62597c588072 → f8a9d0fb0596 → dd3f7e1be356`.
109109
The npm packages also carry eight commits that landed after the version
110110
commit and are in no 17.5.0 `CHANGELOG.md` entry — see [Also shipped in
@@ -261,8 +261,8 @@ hook. Compare a field only with a field of the same class — a number with a
261261
number, text with text, a date with a date — or with a literal or a
262262
`current_user` value; test a file field with `!= null`; and where the two
263263
columns really hold comparable values, correct the declaration of the one
264-
declared with the wrong type. A `using`-only policy that relied on writes landing outside its scope
265-
declares a `check` that admits them. Remove `check` from every `select` /
264+
declared with the wrong type. A `using`-only policy that relied on writes
265+
landing outside its scope declares a `check` that admits them. Remove `check` from every `select` /
266266
`delete` policy — AND it into `using`, or move it to an `insert` / `update` /
267267
`all` policy. A hook that deliberately writes outside the caller's policy does
268268
that write separately under a system context.
@@ -320,11 +320,12 @@ into a logged warning for a migration window.
320320

321321
#### Written values are held to the field's declared type
322322

323-
Each entry below narrows what a record write accepts. The record validator
324-
judges it on insert, update, a multi-row update and `engine.validate` (the dry
325-
run), before any driver write, and answers `400 VALIDATION_FAILED` with a field
326-
code; nothing is stored. Only new writes are judged — a stored value is never
327-
re-read — but an update that sends an old value back is refused.
323+
Each entry below narrows what a record write accepts. All but the last are
324+
judged by the record validator on insert, update, a multi-row update and
325+
`engine.validate` (the dry run), before any driver write, and answered
326+
`400 VALIDATION_FAILED` with a field code; nothing is stored. Only new writes
327+
are judged — a stored value is never re-read — but an update that sends an old
328+
value back is refused. The last is the `/import` door's own cell reader.
328329

329330
- **A `date` string must lead with a real `YYYY-MM-DD` day** (`b2b6a06`,
330331
#20524; `92ea760`, #20547). `"2026/07/15"`, `"07/15/2026"` or
@@ -617,9 +618,9 @@ rules. Each refusal is `INVALID_FILTER` / `400` at run time and
617618
strings treats them as numbers. `sum` over a fractional column and every
618619
`avg` now also accumulate in double there, as on SQLite, and the engine's
619620
in-memory rows path adds with SQLite's compensated summation (`fc0db22`,
620-
#20486; `8538edf`, #20543): `0.1 + 0.2` is `0.30000000000000004` on every
621-
face, so compare a fractional sum with a range, not `$eq`. On MySQL this
622-
needs 8.0.17 or later.
621+
#20486; `8538edf`, #20543): `0.1 + 0.2` is `0.30000000000000004` on SQLite,
622+
PostgreSQL, MySQL and the rows path alike, so compare a fractional sum with a
623+
range, not `$eq`. On MySQL this needs 8.0.17 or later.
623624

624625
**Migration.**
625626

@@ -1056,8 +1057,9 @@ Sibling flows still register. Check boot logs after upgrading.
10561057
`url: 'file:./data/replica.db'` with the remote in `syncUrl` and no `mode`.
10571058
- **Remote-mode Turso refuses a missing table or column as local mode does**
10581059
(`3e8b492`, #20461): `DATABASE_ERROR` / `500` for an absent table, and
1059-
`INVALID_FIELD` or `INVALID_FILTER` / `400` for an absent column, where it
1060-
answered `[]` or `null` and schema drift read as "no data". Run schema sync,
1060+
`INVALID_FIELD` or `INVALID_FILTER` / `400` for an absent column, where most
1061+
of those reads answered `[]` or `null` and schema drift read as "no data".
1062+
Run schema sync,
10611063
or name a column the table has. Remote mode now also reads a federated
10621064
object's `external.remoteName` table, which it ignored, and refuses an
10631065
`external.columnMap` that renames a column with `NOT_IMPLEMENTED` / `501`
@@ -1160,7 +1162,8 @@ on metadata that ran — often wrongly — on 17.4.0:
11601162
`indexes[].fields` (`4b2d904`, #20479): `error` in `os validate`,
11611163
`os build` and `os lint`, and `422` at the runtime publish door on an object
11621164
write. A misspelt name used to surface only when a user opened the view or
1163-
picker, and a misspelt index column skipped a `unique` index without a word.
1165+
picker, and a misspelt index column made the SQL driver skip the whole
1166+
index, a `unique` one included, with only a warning.
11641167
- `os validate` and `os build` refuse a `views:` container whose own `name`
11651168
disagrees with the object it binds to (`c5d6b2b`, #20391; `acd0095`,
11661169
#20459) — a stack the server already refused at boot, and which `os build`
@@ -1493,8 +1496,8 @@ on the Invite user dialog among them (`9bf5e67`, #20490; `6427e2c`, #20530).
14931496
(`ca31ff6`), and `nodemailer` a major, to `^10.0.2` (`f572a7e`, #20564), for
14941497
GHSA-6vj9-mwq6-2f5v — nodemailer's process-global DNS cache could give a
14951498
second SMTPS transport to the same host the first one's SNI and certificate
1496-
identity, sending its credentials to the wrong TLS virtual host. Every release from
1497-
5.0.0 through 10.0.1 is affected, so the 9.x line has no fix. ⚠️ From
1499+
identity, sending its credentials to the wrong TLS virtual host. Every release
1500+
from 5.0.0 through 10.0.1 is affected, so the 9.x line has no fix. ⚠️ From
14981501
nodemailer 10.0.12, the version a fresh install resolves, `requireTLS` wins
14991502
over `ignoreTLS` / `opportunisticTLS`, and `SmtpTransport` sets `requireTLS`
15001503
whenever TLS is on and the port is not 465. A
@@ -1650,8 +1653,10 @@ walked](/docs/releases/v17#upgrade-checklists).
16501653

16511654
⛔ **Nobody has walked 17.4.0 → 17.5.0.** Every line below is derived from a
16521655
change's own **Migration** note in [Breaking changes & migration in
1653-
17.5.0](#breaking-changes--migration-in-1750) and is marked **not exercised**:
1654-
accurate about what changed, unproven about what it costs to cross. A step
1656+
17.5.0](#breaking-changes--migration-in-1750) — or, for the cube member
1657+
`name`, in [Also shipped in 17.5.0](#also-shipped-in-1750--not-in-its-changelog)
1658+
— and is marked **not exercised**: accurate about what changed, unproven about
1659+
what it costs to cross. A step
16551660
nobody has run, presented beside steps that were, is how a reader finishes a
16561661
checklist and believes they are done — so this list claims nothing it has not
16571662
been given.

0 commit comments

Comments
 (0)