Skip to content

Commit e4bd096

Browse files
committed
docs: name a production os serve, not os start, in the no-secret refusal; restate the 18.0 upgrade lead
os start always supplies an auth secret (it generates and persists one on first run), so only a production os serve meets the refusal. 18.0 is not the first release with an operator step on an existing database; it is the first that refuses to serve one until the step has run. The amended ae6bd1a entry's closing heading becomes What else holds. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fo7n3y4No4WWYt32KDXjER
1 parent bfe6e3d commit e4bd096

3 files changed

Lines changed: 14 additions & 10 deletions

File tree

‎content/docs/releases/v18/index.mdx‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ ceremony**, `os migrate organization-ownership` (ADR-0131 D10).
4949
ceremony upgraded, under the same prerequisites as 17.x: the enterprise
5050
`@objectstack/organizations` runtime and `OS_PLATFORM_OWNER_EMAIL`. The
5151
18.0 pre-releases refused them; 18.0.0 does not.
52-
- **A production server needs an auth secret.** A production `os serve` /
53-
`os start` whose stack enables auth and which resolves no `OS_AUTH_SECRET` is
54-
refused before any plugin starts: with no AuthPlugin, no caller can
52+
- **A production `os serve` needs an auth secret.** A production `os serve`
53+
whose stack enables auth and which resolves no `OS_AUTH_SECRET` is refused
54+
before any plugin starts: with no AuthPlugin, no caller can
5555
authenticate and every row the boot wrote would have no owner. Set the
5656
secret, or serve without the data API (`--no-server`). `os dev` and
57-
`os serve --dev` use a development fallback and need none.
57+
`os serve --dev` use a development fallback and need none, and `os start`
58+
generates an auth secret on its first run and persists it to
59+
`<home>/auth-secret`.
5860

5961
The step-by-step is [Upgrading to 18.0](/docs/upgrading#upgrading-to-180), and
6062
every flag is in

‎content/docs/upgrading.mdx‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,8 @@ documentation](/docs/deployment/cli).
335335

336336
## Upgrading to 18.0
337337

338-
18.0 is the first release that requires an operator step on an existing
339-
database. [ADR-0131](https://github.com/objectstack-ai/objectstack/blob/main/docs/adr/0131-total-organization-ownership-no-null-organization-id.md)
338+
18.0 refuses to serve an existing database until an operator step has run on
339+
it. [ADR-0131](https://github.com/objectstack-ai/objectstack/blob/main/docs/adr/0131-total-organization-ownership-no-null-organization-id.md)
340340
makes organization ownership total, and the rows a 17.x database holds have to
341341
be given their owners before an 18.0 server serves them. That is the
342342
**organization-ownership ceremony**, `os migrate organization-ownership`.
@@ -378,9 +378,11 @@ in 18.0 on a fresh install and on a database the ceremony upgraded. On a walled
378378
database, a customized copy of a declared webhook or sharing rule blocks its
379379
step and names the row.
380380

381-
**A production boot needs an auth secret.** A production `os serve` / `os start`
382-
whose stack enables auth and which resolves no `OS_AUTH_SECRET` is refused before
383-
any plugin starts, so set the secret before you start 18.0.
381+
**A production `os serve` deployment needs an auth secret.** A production
382+
`os serve` whose stack enables auth and which resolves no `OS_AUTH_SECRET` is
383+
refused before any plugin starts, so set the secret before you start such a
384+
deployment on 18.0. `os start` is not affected: it generates an auth secret on
385+
its first run and persists it to `<home>/auth-secret`.
384386

385387
What the plan lists, how a blocked row is resolved, and every flag are in the
386388
command's reference:

‎packages/cli/CHANGELOG.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@
170170
- **`os migrate organization-ownership` runs** and upgrades a database 17.x or an 18.0 pre-release (`18.0.0-next.*`) created (12d1476 above). A v18 server refuses such a database at boot and names the command. Start 18.0.0 against it once (the boot is refused), take a backup, run `os migrate organization-ownership --out plan.json`, review the plan, run `os migrate organization-ownership --apply --plan-file plan.json --backup-taken`, then start the server again. A deployment served as a development boot (`os dev`, `os serve --dev`, for example a local one with no `OS_AUTH_SECRET`) passes `--dev` to both commands, as the refusal `os serve --dev` prints names it. `os dev` runs the ceremony itself for a local SQLite development database.
171171
- **`os serve` (and so `os dev` and `os start`) boots `OS_TENANCY_POSTURE=group` or `isolated`, and `OS_MULTI_ORG_ENABLED=true`** (fc34d00 above), on a fresh install and on a database the ceremony upgraded.
172172

173-
**What stays as it was.** A fresh install boots under every tenancy posture and writes its birth marker, so it never needs the ceremony. Kernel-level boots (`@objectstack/verify`'s `bootStack`, embedded hosts) still accept every posture.
173+
**What else holds.** A fresh install boots under every tenancy posture and writes its birth marker, so it never needs the ceremony. Kernel-level boots (`@objectstack/verify`'s `bootStack`, embedded hosts) still accept every posture.
174174
- 78652c0: feat(cli,plugin-sharing)!: in the 17 → 18 ownership ceremony, a row whose owner cannot be derived blocks certification, and a declared-rule mirror's grants are renamed only onto a rule plugin-sharing serves
175175

176176
Clause-②: yes (narrowing)

0 commit comments

Comments
 (0)