You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b017346
Browse filesBrowse the repository at this point in the historyBrowse files
docs(releases): 18.1.0 release facts as measured, and the upgrade checklist walked from 18.0.0
After the publish: npm tags, the version commit, the CHANGELOG counts read off
the published sections (265 entries, 82/9/50/2/122, 91 declared breaking), two
cautions (260 entries cite the revert commit 3937697; @objectstack/cli ranges
eight @objectstack/* dependencies, so an exact pin still floats), and the walk
of a create-objectstack@18.0.0 app to 18.1.0 on SQLite: measured pins and
override, the os serve refusal and os start's minted secret, validate, build,
migrate meta, migrate plan, and probes of the confirmText and rollback
refusals. Folds in #25591, #25592 and #25596, the last changesets before the
cut.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At7xrR4rgknXtej5ZkMJHd
**The v18 line has exited prerelease mode.** While Changesets was in pre mode with the tag `next`, every release cut from `main` was the next `18.0.0-next.N` on npm's `next` tag, and `scripts/check-changeset-no-major.mjs` stood aside in pre mode, so a pull request could declare a major bump. Changesets has exited pre mode, so the line's GA version is `18.0.0`, which publishes to npm's `latest` tag, and the guard again fails a pull request that declares a `major` bump. See [how a breaking stage lands on the v18 line](/docs/releases/v18#how-a-breaking-stage-lands-on-this-line).
21
21
22
-
**After 18.0.0, a breaking change ships in a MINOR or a PATCH release.** The maintainer's 2026-10-21 ruling ([#25105](https://github.com/objectstack-ai/objectstack/issues/25105)) keeps the no-major guard and grades each change by the metadata protocol: a key, value or metadata type added, narrowed or given a new meaning takes MINOR, and every other change takes PATCH, breaking or not. A non-protocol breaking change (a REST response, a boot refusal, a CLI exit status, a removed runtime export) keeps its `**BREAKING**` banner and ships as a PATCH. 18.1.0, the first release under the rule, is a MINOR that carries 90 changesets declared breaking.
22
+
**After 18.0.0, a breaking change ships in a MINOR or a PATCH release.** The maintainer's 2026-10-21 ruling ([#25105](https://github.com/objectstack-ai/objectstack/issues/25105)) keeps the no-major guard and grades each change by the metadata protocol: a key, value or metadata type added, narrowed or given a new meaning takes MINOR, and every other change takes PATCH, breaking or not. A non-protocol breaking change (a REST response, a boot refusal, a CLI exit status, a removed runtime export) keeps its `**BREAKING**` banner and ships as a PATCH. 18.1.0, the first release under the rule, is a MINOR that carries 91 changesets declared breaking.
23
23
</Callout>
24
24
25
25
ObjectStack follows [Semantic Versioning 2.0.0](https://semver.org/) (`MAJOR.MINOR.PATCH`). The table below describes what each component means; which version a breaking change ships in depends on the line, as the callout above says.
description: "Release notes and upgrade checklist for 18.1.0, the first minor of the v18 line: a minor that carries breaking changes. ADR-0131 finishes (an organization-less row confers nothing), a production os serve with no organization object is refused, nine metadata narrowings with automatic conversions, one federation rule at every datasource door, and an unreadable SQLite file is refused instead of replaced."
4
4
---
5
5
6
-
<Callouttype="warn">
7
-
**How this page was compiled.** From the 18.1.0 changesets on `main` at
8
-
`ba9e0c3749` (2026-10-24), before the 18.1.0 cut: a rehearsed
9
-
`pnpm run version` in a throwaway clone at `b2c0752900` (73 packages move to
10
-
18.1.0, and their `## 18.1.0` sections held 227 distinct entries), and the 31
11
-
changesets merged after it, graded the same way. That makes **258 distinct
12
-
entries**. The five sections below use the grouping the GitHub Release body
13
-
uses, and the counts are that grouping's: **81** need you to act, **9** are
14
-
converted for you, **47** add capabilities, **3** declare a semantic change,
15
-
and **118** are other fixes. Nothing here was
16
-
read off a published 18.1.0 package or walked on an upgrade yet: every refusal
17
-
is described as its changeset describes it. Anything that lands on `main` before
18
-
the cut is in the CHANGELOG and not on this page.
6
+
<Callouttype="info">
7
+
**How this page was compiled.** From the `## 18.1.0` sections of the published
8
+
CHANGELOGs (version commit `e649c2d91e`, #25606): 73 packages carry one, and
9
+
together they hold **265 distinct entries**. The five sections below use the
10
+
grouping the GitHub Release body uses, and the counts are that grouping's:
11
+
**82** need you to act, **9** are converted for you, **50** add capabilities,
12
+
**2** declare a semantic change, and **122** are other fixes. The
13
+
[upgrade checklist](#upgrade-checklist) was walked on 2026-10-24 from 18.0.0;
14
+
each line it measured says so. A refusal it did not reach is described as its
15
+
changeset describes it.
19
16
</Callout>
20
17
21
18
## Highlights — 18.1.0
22
19
23
-
- ⚠️ **A minor that breaks.** 18.1.0 is a minor version, and 90 of its
20
+
- ⚠️ **A minor that breaks.** 18.1.0 is a minor version, and 91 of its
24
21
changesets are declared breaking. Under the level rule the maintainer ruled
25
22
on 2026-10-21 (#25105, "ruling A"), the v18 line takes no further major: a
26
23
change to the metadata protocol takes `minor`, and every other change takes
@@ -72,6 +69,41 @@ the cut is in the CHANGELOG and not on this page.
72
69
73
70
---
74
71
72
+
## Release facts, as measured
73
+
74
+
Read with `npm view` and `npm pack` on 2026-10-24, after the publish:
75
+
76
+
|| Measured |
77
+
| :--- | :--- |
78
+
|`latest`|`18.1.0`, on every `@objectstack/*` package read (`spec`, `cli`, `runtime`, `core`, `objectql`, `skills`, `organizations`, `console`) and on `create-objectstack`|
79
+
|`next`|`18.0.0-next.5`, still **older** than `latest`. ⛔ Never install `@next` for 18 |
80
+
|`rc`|`17.0.0-rc.6` (`@objectstack/skills` and `@objectstack/organizations` carry no `rc` tag) |
81
+
| Published |`@objectstack/cli@18.1.0` at 2026-10-24 09:06 UTC; 73 GitHub Releases, one per package, tagged `<package>@18.1.0`, between 09:12 and 09:13 UTC |
82
+
| Version commit |`e649c2d91e` (#25606). The first 18.1.0 version commit, `74fa3cb6df` (#24876), was reverted before anything published (#25605) |
83
+
84
+
Read the 18.1.0 CHANGELOGs with two cautions:
85
+
86
+
-**The commit beside an entry is mostly not its own.** 260 of the 265 entries
87
+
open with `3937697`, the commit of #25605 that reverted the first cut and
88
+
re-added every pending changeset; only the five changesets merged after it
89
+
carry their own commit. The same is true in the published tarballs: all 34
90
+
entries of `@objectstack/cli@18.1.0`'s `## 18.1.0` section read `3937697`.
91
+
To find the change behind an entry, search its headline in the repository's
92
+
history; this page cites each entry's own commit.
93
+
-**A pinned `@objectstack/cli` still ranges.** The published CLI declares
94
+
eight of its `@objectstack/*` dependencies as caret ranges: `core`,
0 commit comments