Skip to content

Commit a6351bc

Browse files
docs(releases): date 18.0.0 by its npm publish day, and the v17 page stops saying a plain install resolves 17.7.0 (#25354)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} --> _Requested by **Elon** · [project thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9DVnDhkexGgHMmRmgKicPYPa)_ Fixes #25148 ## What changed Docs only, two files under `content/docs/releases/` (+4 / -3). No script moves in this PR, per the card. | Page | Before | After | Source | |:--|:--|:--|:--| | `content/docs/releases/index.mdx:21` (`/docs/releases`), v18 entry | `(current series: 18.0.0, released 2026-10-19)` | `(current series: 18.0.0, released 2026-10-20)` | npm `time["18.0.0"]` = `2026-10-20T12:51:40.837Z` (read from `registry.npmjs.org/@objectstack/spec` at 2026-10-23); the Version Packages commit `06cab4849` (#24524) is dated `2026-10-20T11:47:07Z`; `releases/v18/18-0.mdx` already says "published 2026-10-20" | | `content/docs/releases/v17/index.mdx:25` (`/docs/releases/v17`), status blockquote | "A plain install now resolves 17.7.0." | "A plain install resolved 17.7.0 until 2026-10-20, when 18.0.0 took npm's `latest` tag; a plain install now resolves the [v18](/docs/releases/v18) line." | npm `dist-tags` = `{latest: 18.0.0, next: 18.0.0-next.5, rc: 17.0.0-rc.6}` (same read) | The index field keeps the exact `current series: X.Y.Z, released YYYY-MM-DD` shape, because `sync-release-index-currency.mjs`'s `STATUS_SHAPE` refuses a field with anything after the date; the sources therefore live here, not in the parenthetical. The v17 sentence names the v18 line rather than `18.0.0`, so it does not go stale again at 18.1.0. ## Premise, measured - `origin/main` `54df640` read both stale sentences as the card quotes them; 18.1.0 is not cut (the index still names 18.0.0, `latest` is 18.0.0). - The cause the card gives holds: `8fbbd5082` (#24584, 2026-10-19T16:51Z) wrote "released 2026-10-19" before the cut; at the version commit the field already named the newest GA, so the script left it, date included (`rewriteStatusField` returns null for a same-version field). On this branch `node scripts/sync-release-index-currency.mjs` exits 0 with "nothing rewritten". ## Done-when 2: should the currency script verify the date it leaves in place? Yes, but not in this PR (the card forbids a code change in a docs PR), so it is reported to the seat as an out-of-scope finding. The reading: - The script's refusal to re-date a same-version field is right for prerelease cuts (its header records the 17.7.0 re-dating it prevents). The gap is narrower: the run that IS the version commit of the newest GA, where the field was pre-written by hand. That run is detectable without a clock or network: the newest GA in the committed `packages/spec/CHANGELOG.md` at `HEAD` differs from the newest GA after `changeset version`. On that run, and only that run, the date it holds is true, so it should stamp it even when the version already matches. - A check-only alternative (compare the date to npm `time`) needs the network at version time and so cannot be the guard on the `version-pr` lane. ## Gates Head `9be39f2`: `node scripts/pm/dispatch-gates.mjs --commands` derived 48 commands for the two changed paths. Each ran with its exit code captured before any pipe, recorded as `COMMAND :: exit CODE`; `--ran` reconciles 48 derived, 48 run, 0 NOT-MEASURED, 0 UNRUN. All 48 exit 0, among them `check:release-page-status`, `check:release-notes`, `check-release-section-coverage.mjs --strict`, `check:doc-anchors` and `check:docs`. `check:docs-transcript-drift` first exited 3 (PREREQUISITE NOT MET, lint not built); after `@objectstack/lint...` and `@objectstack/client-react...` were built under the verify lock (VERDICT command-exit 0) it exits 0. Not measured locally, CI's: Build Docs, Test Core, the type-check lanes and the wide-population families. No package source moves, so no test or ablation applies. `content/docs/**` is in no package's `files[]`, so this carries `skip-changeset` and no changeset. ## Acceptance notes - The attribution block's first line is an HTML comment the session requires; `os-dev.md` forbids HTML comments in GitHub text. Same shape as PRs #25255 and #25322; reported as a deviation. - The branch is the harness-pinned `claude/project-thread-bb3ks9`; the claim (comment `6355543510`) records it as the identity. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01854Y7atqKDuWMySuBxa1SJ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 5f6c2f1 commit a6351bc

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

‎content/docs/releases/index.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ migration steps, then covers new capabilities and notable fixes.
1818

1919
## Versions
2020

21-
- [v18](/docs/releases/v18) — The line that carries ADR-0131, total organization ownership with no NULL `organization_id`; its breaking changes landed in stages through the `18.0.0-next.N` prereleases on npm's `next` tag, each with its own changeset and migration, and its GA release, 18.0.0, publishes to npm's `latest` tag and moves it from 17.x to 18 (current series: 18.0.0, released 2026-10-19).
21+
- [v18](/docs/releases/v18) — The line that carries ADR-0131, total organization ownership with no NULL `organization_id`; its breaking changes landed in stages through the `18.0.0-next.N` prereleases on npm's `next` tag, each with its own changeset and migration, and its GA release, 18.0.0, publishes to npm's `latest` tag and moves it from 17.x to 18 (current series: 18.0.0, released 2026-10-20).
2222
- [v17.0.0](/docs/releases/v17) — Files become owned `sys_file` records with server-enforced `accept`/`maxSize` and a governed download path, bulk export becomes its own opt-in privilege, the SDK is reconciled against the routes the server actually mounts (21 dead methods out, 40+ real ones in), approval nodes route approvers dynamically via CEL expressions and decision outputs, a datasource that cannot connect fails the boot, and Node 22 becomes the supported floor; 17.1 adds partial field masking, record-view auditing on `sys_audit_log`, and a per-object read-only approval visibility tier — and makes a deactivated permission set or position actually stop granting access, withdraws the bulk-export wildcard from the shipped admin sets, and gives all three flow doors one honest HTTP status table; 17.2 tightens by-id `update`/`delete` against a silently-dropped `where` predicate or a mismatched id, retires `sys_position.permissions` and other dead ADR-0049 surfaces, and stops analytics from answering the wrong number on a cross-object filter (final release: 17.7.0).
2323
- [v16.0.0](/docs/releases/v16) — One org identifier (`organizationId`) across hooks and actions, quorum + per-group sign-off (会签) approvals with metadata-declared decision actions, time-relative automations, filtered roll-ups, strict dashboard widgets, an identity-scoped MCP stdio transport, and a platform-wide enforce-or-remove sweep that makes dead metadata loud; 16.1 adds a `requires` capability-provider preflight, two more dashboard build gates, and `runAs:'user'` automations that run with the triggering user's real grants (final release: 16.1.0).
2424
- [v15.0.0](/docs/releases/v15) — Explain record access layer by layer, a docked AI workspace in the Console, project-ready Gantt charts, and phone sign-in; 15.1 adds permission-following attachments, no-code third-party connectors, dashboard-wide filters, pinyin search, and whole-record inline editing — with materially safer multi-tenant and write-path defaults (final release: 15.1.1).

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ parsed-but-never-enforced spec clusters are removed rather than maintained.
2222
> 17.2.0 — published 2026-08-23, which took over from 17.1.0 — published
2323
> 2026-08-20, which took over from 17.0.0 — published 2026-08-14, closing a
2424
> train that ran through `17.0.0-rc.0` … `rc.6` (the last of them cut
25-
> 2026-08-10). A plain install now resolves 17.7.0. `changeset pre
26-
> exit` ran with the 17.0.0 cut, so the `@objectstack/*` packages no longer
25+
> 2026-08-10). A plain install resolved 17.7.0 until 2026-10-20, when 18.0.0
26+
> took npm's `latest` tag; a plain install now resolves the
27+
> [v18](/docs/releases/v18) line. `changeset pre exit` ran with the 17.0.0 cut, so the `@objectstack/*` packages no longer
2728
> publish as `17.0.0-rc.N`. Caret ranges on `^16.x` hold at 16.x until you opt
2829
> in, which is the reason this train is a major at all: its breaking density
2930
> (the `ApiMethod` shrink, the GraphQL removal, the ADR-0104 write cutover, the

0 commit comments

Comments
 (0)