Skip to content

Commit 3c6d187

Browse files
committed
docs(releases): correct the 17.6.0 fixes, console and shipped-in-17.5.0 claims
- 7a1faf1 is not breaking: it makes `os validate --strict` fail on a live conversion (the aftercare changeset files it under "Also shipped"), on both the 17.6.0 page and the 17.5.0 correction line; - the shipped-in-17.5.0 groups are told apart by ancestry, not clock time; - four objectui retirements mirror 17.5.0 keys (quickAdd included), and the previous pin's second zod was objectui's 4.6.5; - the notable-fixes intro no longer calls them all patch-level, and the flow-read, export-year, all-NULL sum, explain and checklist lines carry the scope and qualifiers their changesets state. Clause-②: no Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014VGCS11YUtYAiinRcdqQwL
1 parent 2946dce commit 3c6d187

2 files changed

Lines changed: 41 additions & 34 deletions

File tree

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1608,9 +1608,10 @@ will be listed again in 17.6.0's `CHANGELOG.md`. The release-pipeline defect
16081608
that let the publish run past its version commit is tracked in #20613.
16091609
**Correction (2026-10-02):** seven more commits shipped in 17.5.0 with no
16101610
17.5.0 `CHANGELOG.md` entry — they landed before the version commit but were
1611-
not in the version PR when it merged. Three are breaking: `e73ee2d` (#20567,
1612-
`RealtimeEventType`), `c876a74` (#20504, a forced Turso replica with no
1613-
`syncUrl`) and `7a1faf1` (#20579, `os validate --strict` and conversions). See
1611+
not in the version PR when it merged. Two are breaking, `e73ee2d` (#20567,
1612+
`RealtimeEventType`) and `c876a74` (#20504, a forced Turso replica with no
1613+
`syncUrl`), and `7a1faf1` (#20579) makes `os validate --strict` fail on a
1614+
live conversion. See
16141615
[Shipped in
16151616
17.5.0](/docs/releases/v17/17-6#shipped-in-1750--listed-again-in-1760s-changelog)
16161617
on the 17.6.0 page.

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

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,8 +1201,7 @@ inline rows (`c4c68ca`, #20660).
12011201

12021202
### Notable fixes in 17.6.0
12031203

1204-
These are the patch-level entries an upgrading deployment is most likely to
1205-
notice. Everything else is in the per-package `CHANGELOG.md` files, which is
1204+
These are the fixes an upgrading deployment is most likely to notice. Everything else is in the per-package `CHANGELOG.md` files, which is
12061205
what they are for.
12071206

12081207
**Security.**
@@ -1242,10 +1241,10 @@ what they are for.
12421241
restart, and re-enabling the ledger bit of a flow whose `status` is still
12431242
`obsolete` / `invalid` no longer arms it (`defc7f7`, #20702). A trigger-fired
12441243
run refused because its flow is disabled logs at `info`, not `ERROR`.
1245-
- For a flow name a managed package ships, `GET /api/v1/meta/flow/:name`, its
1246-
`/layers` and `/published` reads and startup hydration all serve the
1247-
package's flow (`25f2e64`, #20994; `94990a2`, #21043; `514001a`, #21116;
1248-
`75519e1`, #20942).
1244+
- For a flow name a managed package ships, the flow list and the by-name,
1245+
`/layers` and `/published` reads all serve the package's flow, and every
1246+
startup step arms it (`25f2e64`, #20994; `94990a2`, #21043; `514001a`,
1247+
#21116; `75519e1`, #20942).
12491248

12501249
**Drivers and databases.**
12511250

@@ -1268,8 +1267,9 @@ what they are for.
12681267
(`f8178ff`, #20984), and `sum` / `avg` use compensated summation
12691268
(`b785c3b`, #20739).
12701269
- **Dates before year 100** are read as written, not as 1900–1999, wherever the
1271-
platform builds a UTC instant from parts (`a6866da`, #20746), and exports
1272-
write four-digit years so such rows re-import (`67c1b11`, #20688).
1270+
platform builds a UTC instant from parts (`a6866da`, #20746). Exports write
1271+
four-digit years, so a `date` in 0001–0999 re-imports; a `datetime` before
1272+
1000 is still refused (`67c1b11`, #20688).
12731273
- The first boot of a new SQL database, and `os migrate plan` on a database
12741274
that does not exist yet, no longer print spurious `DATABASE_ERROR` lines
12751275
(`810d42b`, #20818; `cf0346e`, #21093).
@@ -1278,8 +1278,8 @@ what they are for.
12781278
whenever the statement joins a related object, fixing ambiguous-column `500`s
12791279
on cubes that declare no join (`2791138`, #21266). On PostgreSQL, measures come
12801280
back as JSON numbers, not strings (`d1633f3`, #21040), `sum` / `avg` accumulate
1281-
in double, a boolean aggregand no longer answers `500`, and an all-NULL `sum`
1282-
answers `0` (`097ef80`, #21209). `$not`, `$notContains` and null tests over a
1281+
in double, and a boolean aggregand no longer answers `500`; on every dialect an
1282+
all-NULL `sum` answers `0` (`097ef80`, #21209). `$not`, `$notContains` and null tests over a
12831283
multi-valued lookup return rows on the engine-aggregate path instead of `400`
12841284
(`5dbeb7d`, #21036). Date-bucket keys spell four-digit years at every
12851285
granularity (`856321f`, #20865; `525b813`, #20971).
@@ -1313,8 +1313,8 @@ converts objects built with `ObjectSchema.create(…)` instead of stopping at lo
13131313
platform labels that contradicted their English source are re-translated
13141314
(`f4ce10c`, #20652; `5757463`, #20707; `7184436`, #20684).
13151315
- `security/explain` resolves the explained user in the organization
1316-
enforcement resolves them in, refuses a cross-class field-to-field policy as
1317-
enforcement does, and answers a classified refusal with its own 4xx instead of
1316+
enforcement resolves them in, refuses a cross-class field-to-field policy at
1317+
the object level too, as enforcement does, and answers a classified refusal with its own 4xx instead of
13181318
`500 EXPLAIN_FAILED` (`889139c`, #20614; `cd901d7`, #20629; `72f8c38`,
13191319
#20858).
13201320
- Setup and Studio carry navigation entries for the Audit Log Browser and
@@ -1337,12 +1337,13 @@ per-commit lists are in `packages/console/CHANGELOG.md` under `## 17.6.0`.
13371337
⚠️ **Console hosts and authors:** 23 of those entries are declared breaking
13381338
upstream (6, 5 and 12). They are objectui's own surfaces — they matter to a host
13391339
that builds on `@object-ui/*` packages or authors objectui page JSON directly.
1340-
Three of them mirror ObjectStack keys already retired in 17.5.0
1341-
(`assignedProfiles` on a page, `chartConfig.aria`, `aria` on an action), and
1342-
none registers a new ADR-0087 migration.
1340+
Four of them mirror ObjectStack keys already retired in 17.5.0
1341+
(`assignedProfiles` on a page, `chartConfig.aria`, `aria` on an action,
1342+
`quickAdd` on `object-kanban`), and none registers a new ADR-0087 migration.
13431343

1344-
- **Studio works again with the 17.6.0 spec.** The previous pin bundled
1345-
objectui's zod 4.4.3 beside the injected spec's 4.6.1, which broke Studio's
1344+
- **Studio works again with the 17.6.0 spec.** The previous pin bundled a
1345+
second zod instance (objectui's 4.6.5) beside the injected spec's 4.6.1,
1346+
which broke Studio's
13461347
spec-derived forms: the New Package dialog could not create a package and the
13471348
dashboard and report inspectors showed no schema. The console now bundles one
13481349
zod instance (objectui#11353, in `0d42104`).
@@ -1417,19 +1418,20 @@ on 17.5.0 already runs them, and nothing here changes when it moves to 17.6.0.
14171418
They are listed again because the 17.5.0 version commit `8c87d26a` did not
14181419
consume their changesets:
14191420

1420-
- **Eight commits landed after the version commit** and before the publish ran
1421-
from `0f6dcac5`: `6e3aa75` (#20584), `a093ce3` (#20582), `92fe081` (#20458),
1421+
- **Eight commits follow the version commit** in first-parent order, before
1422+
the publish ran from `0f6dcac5`: `6e3aa75` (#20584), `a093ce3` (#20582), `92fe081` (#20458),
14221423
`3a89d45` (#20591), `7001918` (#20598), `c96beb2` (#20585), `ba4648d`
14231424
(#20605) and `0f6dcac` (#20606). The 17.5.0 notes already describe them under
14241425
[Also shipped in
14251426
17.5.0](/docs/releases/v17/17-5#also-shipped-in-1750--not-in-its-changelog),
14261427
including the migration for the retired cube member `name`. The pipeline
14271428
defect that let a publish run past its version commit is fixed in this
14281429
release (#20625, #20613).
1429-
- **Seven commits landed on `main` between 04:09 and 05:37 UTC on 2026-09-29,
1430-
before the version commit at 06:17**, but were not yet in the version PR when
1431-
it merged, so their changesets stayed unconsumed. The 17.5.0 notes do not mention them.
1432-
Three are breaking:
1430+
- **Seven commits are ancestors of the version commit** — they landed on
1431+
`main` between 04:09 and 05:36 UTC on 2026-09-29 — but were not yet in the
1432+
version PR when it merged, so their changesets stayed unconsumed. The 17.5.0
1433+
notes do not mention them. Two are breaking, and one makes `os validate
1434+
--strict` fail:
14331435
- **`RealtimeEventType` lists only the events the engine publishes**
14341436
(`e73ee2d`, #20567): `data.record.created`, `data.record.updated`,
14351437
`data.record.deleted`, `data.records.updated` and `data.records.deleted`.
@@ -1467,8 +1469,9 @@ walked](/docs/releases/v17#upgrade-checklists).
14671469
### 17.6.0
14681470

14691471
⛔ **Nobody has walked 17.5.0 → 17.6.0.** Every line below is derived from a
1470-
change's own **Migration** note in [Breaking changes & migration in
1471-
17.6.0](#breaking-changes--migration-in-1760) and is marked **not exercised**:
1472+
**Migration** note in [Breaking changes & migration in
1473+
17.6.0](#breaking-changes--migration-in-1760) or from a changeset of this
1474+
release, and is marked **not exercised**:
14721475
accurate about what changed, unproven about what it costs to cross. A step
14731476
nobody has run, presented beside steps that were, is how a reader finishes a
14741477
checklist and believes they are done — so this list claims nothing it has not
@@ -1534,8 +1537,9 @@ been given.
15341537
- **Fix the new author-time refusals:** a `picklist` or `picklistExtensions`
15351538
entry naming no declared list, an `api` flow with no `config.secret`, action
15361539
translation keys for undeclared outcomes or result fields, dimensions over
1537-
JSON-stored or multi-value fields, and multi-measure `pie` / `donut` /
1538-
`funnel` / `scatter` / `radar` / `treemap` / `sankey` widgets. *Not
1540+
JSON-stored or multi-value fields, and dimensionless `pie` / `donut` /
1541+
`funnel` / `scatter` / `radar` / `treemap` / `sankey` widgets with two or
1542+
more `values`. *Not
15391543
exercised.*
15401544
- **Write `time` defaults and values as a bare wall clock** (`"10:00"`); rewrite
15411545
by hand the stored `time` defaults with a non-zero offset that
@@ -1567,8 +1571,8 @@ been given.
15671571
an html page that gained a plugin component are refused from Studio; use the
15681572
metadata API or source for them. *Not exercised.*
15691573
- **If you override `validation.field.invalid_date` or `invalid_datetime`,**
1570-
also define `invalid_date_range` / `invalid_datetime_range`. *Not
1571-
exercised.*
1574+
also define `invalid_date_range` / `invalid_datetime_range` (`f6ccca4`,
1575+
#20952). *Not exercised.*
15721576

15731577
**Application code, hooks and flows**
15741578

@@ -1578,15 +1582,17 @@ been given.
15781582
with `_`. *Not exercised.*
15791583
- **Make sure every `http` node's `signingSecret` renders to a value**, or
15801584
write `signingSecret: ''` to send unsigned on purpose. *Not exercised.*
1581-
- **Stop sending `formula` values**, read a submitted formula value from
1585+
- **Stop sending `formula` values when you pass `strictReadonlyWrites`**
1586+
(otherwise they are stripped), read a submitted formula value from
15821587
`ctx.submitted`, and handle `reason: 'computed'` in `DroppedFieldsEvent`
15831588
branches. *Not exercised.*
15841589
- **Import the migration-chain names from `@objectstack/spec/migrations`**;
15851590
remove `--clone-from` and `clone_from_environment_id`; use `os dev
15861591
--no-watch`; test `nextUtcCalendarDay` answers with `isUnboundedAbove`. *Not
15871592
exercised.*
15881593
- **Custom hosts and drivers:** pass `getReadableFields`, `getQueryableFields`
1589-
and `hasObjectMiddleware` to a hand-built `AnalyticsService`; implement
1594+
and (with `executeRawSql`) `hasObjectMiddleware` to a hand-built
1595+
`AnalyticsService`; implement
15901596
`findOne` on stand-ins for `MigrationFlagEngine` / `SeedTenancyLedger`; lower
15911597
filters with `lowerFilterCondition` before a direct driver call; answer
15921598
`false` and the deny filter from an `ISecurityService` for a caller with no

0 commit comments

Comments
 (0)