Repository navigation
chore: version packages - #24524
Merged
Merged
chore: version packages#24524
Conversation
This was referenced Oct 19, 2026
Merged
Merged
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 19, 2026 18:26
61860d2 to
3fdde03
Compare
This was referenced Oct 19, 2026
Contributor
Author
📓 Docs Drift Check
What this run could not see
Coarse fallback — 173 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 20, 2026 00:36
3fdde03 to
6bef92b
Compare
This was referenced Oct 20, 2026
github-actions
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
October 20, 2026 08:04
c7ed951 to
25f8896
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 20, 2026 09:40
25f8896 to
892a8ad
Compare
os-zhuang
approved these changes
Oct 20, 2026
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 20, 2026 11:10
892a8ad to
31abb71
Compare
os-zhuang
enabled auto-merge
October 20, 2026 11:11
This was referenced Oct 20, 2026
This was referenced Oct 20, 2026
akarma-synetal
pushed a commit
to akarma-synetal/objectui
that referenced
this pull request
Oct 28, 2026
…n pass renders objectui's 18.0.0 GA (objectstack-ai#13111) Fixes objectstack-ai#13108 Clause-②: no Exits Changesets pre mode on `main`, on the maintainer's order 「objectui 退出预发布模式」. After this lands, the next version pass renders the GA: the 40-member `fixed` group goes from `17.7.0` to **`18.0.0`**, not `18.0.0-next.0`. **Draft, for the maintainer to merge**, because the merge sets when the version PR renders the GA. ⛔ No release act. No `changeset version` output is committed. Nothing was published or tagged, no workflow was dispatched, and neither release PR objectstack-ai#11600 nor `changeset-release/main` was touched. The dry-run below ran in a scratch clone whose push URL is an invalid path. Head `9e3c1a1408` = base `df943a2a1a` (`origin/main` at worktree creation, and still `origin/main` when this opened) plus two commits. ## The change 1. **`.changeset/pre.json`**, written by `pnpm changeset pre exit` (`@changesets/cli` 3.0.1) and committed as the tool wrote it (`fda18fcdf9`): | | content | |---|---| | before | `{ "mode": "pre", "tag": "next" }` | | after | `{ "mode": "exit", "tag": "next" }` | Same 2-space JSON with a trailing newline. Under CLI 3 the file holds only `mode` and `tag`, before and after; nothing else is expected or written. 2. **One test assertion in `scripts/__tests__/sync-quick-reference-release.test.ts`** (`9e3c1a1408`). The first dry-run of the release lane on the exited tree went red on exactly one test, and the control on `df943a2a1a` is green, so the exit is what reddens it: - The test "rewrites the Version row when the fixed group moves" bumps the group to `99.9.9` and asserted that the doc no longer contains the old version **as a raw substring**. - With the group at `18.0.0`, that string is a prefix of the Spec and Client rows' `^18.0.0-next.1`. So a correct rewrite failed. - The assertion now reads the doc's version literals with the script's own `VERSION_LITERAL` and `normalize`, the tokens the gate (`quick-reference-current-release-4143.test.ts`) compares, and checks that none is the old version. That gate's header already states the rule: "Equality on extracted tokens, never `toContain` over the raw row". - **It keeps its teeth.** A probe of the script's own exports over `QUICK_REFERENCE.md`, at group versions `17.7.0`, `18.0.0` and `18.0.0-next.0`: | group version | correct rewrite: new / old assertion | Version row left as is: new / old | |---|---|---| | `17.7.0` | green / green | RED / RED | | `18.0.0` | green / **RED** | RED / RED | | `18.0.0-next.0` | green / green | RED / RED | - Why here and not in prose. The card expected the red, if any, to be release text that states a prerelease status, as on objectstack. objectui has none: it has no release pages, and a grep of the docs, `README`s and `QUICK_REFERENCE.md` finds no sentence that states objectui's own prerelease or "no GA" status. The only red is this test, which the GA render makes false. It is not a gate: no gate's scope or verdict changes, and it adds no check. ## Dry-run of the version step (scratch clone, never pushed) Setup: - A blobless clone of this branch from GitHub (`--filter=blob:none`, full history, `--is-shallow-repository` false, 12164 commits), so `@changesets/git` resolves every changeset's add-commit without the shallow-clone deepen loop. - `pnpm run setup`: the pin build copied from the machine store, then a frozen install. `node_modules` is a real directory, not a symlink. - The three steps `Render the post-version tree`, `Validate the post-version tree` and `Restore the pre-version tree` were **extracted verbatim from `.github/workflows/changeset-release.yml` with a YAML parser**. The workflow blob is `533cf01fe5` in the clone and on `main`, and the extracted bodies are byte-identical across the three legs. They ran under `bash --noprofile --norc -eo pipefail` with `GITHUB_OUTPUT`, `GITHUB_STEP_SUMMARY` and `GITHUB_SHA` pointed at scratch files, each heavy step under `os-verify-lock.sh`. - The job's earlier `Build packages` step was not replayed; see NOT MEASURED. | leg | Render | rendered version | Validate | Restore | |---|---|---|---|---| | head `9e3c1a1408` | **0** | `Version: 17.7.0 → 18.0.0` | **0**: quick-reference check, control bytes, then `Test Files 190 passed, 2 skipped (192)` | **0**: "Pre-version tree restored: 857 pending changeset(s), working tree clean." | | first commit `fda18fcdf9` (exit only) | 0 | `17.7.0 → 18.0.0` | **1**: `1 failed, 189 passed, 2 skipped`, the one test above | 0, same line | | control: base `df943a2a1a` (still `mode: "pre"`) | 0 | `17.7.0 → 18.0.0-next.0` | 0: `190 passed, 2 skipped` | 0, same line | Readings on the head's post-version tree: - **Fixed group: 40 of 40 members at `18.0.0`.** One of them, `object-ui`, is private, so 39 are publishable. This was read from the manifests. `changeset publish-plan` was not run. - **Changesets consumed: 857**, which is every `.changeset/*.md` except `README.md` (`pending_before=857`). `.changeset/` afterwards holds only `README.md` and `config.json`. - **`.changeset/pre.json` is deleted by the pass.** On the base leg it survives as `mode: "pre"` and the 857 move to `.changeset/pre/`. - **Paths moved: 939.** That is 858 deletions (857 changesets plus `pre.json`), 40 `package.json` files whose only changed line is `"version"`, 40 `CHANGELOG.md` files that each gain a `## 18.0.0` section, and `QUICK_REFERENCE.md`, whose Version row now reads `18.0.0`. - **No dependency range moved**: zero `@objectstack/*` lines change in the 40 `package.json` diffs. - On the post-version tree: `check-changeset-no-major` exits 0 ("No changeset declares a `major` bump.") and `check-changeset-fixed` exits 0. - The publish dist-tag after the GA version commit would be `latest`. `getReleaseTag` (`@changesets/cli` 3.0.1, `getPublishPlan.mjs`) returns `preState.tag` only while a pre state exists, and the pass deletes `pre.json`. This is a reading of the code; nothing was published. ## PR objectstack-ai#12401's two gate edits, judged on the exited tree | edit | keyed on pre mode? | verdict | |---|---|---| | `scripts/check-changeset-no-major.mjs`: the computed admission of the one synchronized `major` (group's current major + 1 = the `@objectstack/spec` range's major), with `OBJECTUI_ALLOW_MAJOR` retired | **No.** The script reads no `pre.json` and no mode. Its only pre-mode clause is that it does not read `.changeset/pre/`, and that was its behaviour before PR objectstack-ai#12401 too (that PR's body says so). | **Kept.** It is the maintainer's GA-time version-alignment rule (ruling on objectui#12030), and the next objectstack major needs it again. On the exited pre-version tree, `pnpm changeset:check` still admits the sync major and exits 0. On the 18.0.0 tree, a probe `"@object-ui/core": major` gives **exit 1**, "carries the group from 18 to 19, but its @objectstack/spec range names 18". So it re-arms, and refuses every other `major`. | | `scripts/check-spec-range-floors.mjs`: reads a prerelease lower bound (`^18.0.0-next.N`) as a floor | **No.** It reads dependency ranges and no changeset state: no `pre.json`, and no mode. The ranges are objectstack's prerelease line, which `@objectstack/*` 18 sets (its header says so). objectui's own mode does not set them. | **Kept.** The exit does not move a range, and neither does the GA render (zero `@objectstack` lines in the version diff). At publish, `objectstack-floor.mjs` raises the ranges to the computed floor, and that floor is itself a prerelease whenever the earliest published spec release that contains the pin is one. Its pins, `check-spec-range-floors.test.ts`, pass on the exited tree and inside the post-version `scripts/__tests__` run. The live gate was not run here (NOT MEASURED below). | Neither edit is reversed. No gate is weakened or added. ## The dispatch's mechanism hypotheses, measured 1. **Holds, with the count corrected.** The version pass renders the sync major onto `18.0.0` and consumes every pending changeset: **857**. The card's 860 counts every entry under `.changeset/`, including `README.md`, `config.json` and `pre.json`. `pre.json` itself is deleted by the pass. 2. **Falsified.** Neither gate edit's condition is pre mode (table above). 3. **Holds.** The sync writes `18.0.0` into the Version row, and nothing in objectui's docs states objectui's own prerelease status. The Spec and Client rows keep `^18.0.0-next.1` because those rows are the declared `@objectstack/*` ranges, derived from the manifests, and that is correct. They move when a range moves, not when objectui exits pre mode. ## Order note (for the maintainer; not a code change) `pnpm changeset:publish` runs `objectstack-floor.mjs`, then `check-published-dist-tooling.mjs`, then `check-spec-range-floors.mjs`, then `changeset publish`. - **Today the first step refuses.** `node scripts/objectstack-floor.mjs --dry-run` at the pin `f4755a68a7` exits **2**: "No published @objectstack/spec release contains the pin … the newest published release is 18.0.0-next.5. Nothing is published until objectstack releases a commit that contains the pin." Exit 2 is by design, and it writes nothing. - The same answer with git, from a full-history objectstack checkout: `merge-base --is-ancestor` with the pin and the `@objectstack/spec@18.0.0-next.5` tag commit `820fd5aef0` gives **exit 1**. The control leg, with the `18.0.0-next.3` tag commit `2c9bf9430a`, which is older than the pin, gives exit 0. The pin (2026-10-19 10:57Z) comes after the `next.5` version commit (08:58Z the same day). - **So objectui 18.0.0 cannot publish before objectstack publishes a spec release whose tag contains the pin.** In practice that release is objectstack's 18.0.0 GA (objectstack-ai/objectstack#24524). The steps do not read npm's `latest` tag. The floor is the *earliest* published version, by semver precedence, whose tag contains the pin, and the floor gate fetches that exact version. - If objectstack 18.0.0 is the first release that contains the pin, the floor is `18.0.0`, and objectui's published ranges become `^18.0.0`. - If an `18.0.0-next.6` that contains the pin were published first, the floor would be that prerelease, even after 18.0.0 GA. objectui 18.0.0 would then ship `^18.0.0-next.6` ranges. Those resolve to 18.0.0 once it exists, but they name a prerelease floor. - **Consequence for the release order:** merge objectstack's GA and let it publish first. Then refresh objectui's version PR, check that it renders `18.0.0`, and merge it. If the objectui version PR is merged first, its publish lane goes red at the floor step, and nothing is published. - Merging **this** PR publishes nothing. The lane's guard asks whether the commit's anchor version is on npm, and `@object-ui/core@17.7.0` is (`dist-tags.latest` = `17.7.0`). ## Changeset and labels No changeset. `node scripts/check-changeset-presence.mjs`: "No source or published contract of a released package changed in this range, so no changeset is owed." This matches objectui's precedent for tooling-only PRs. No label is written; objectui's path labels come from `labeler.yml`. ## Gates (local, at `9e3c1a1408`, exit codes captured before any pipe) - `pnpm changeset:check` 0 (both halves; the no-major half prints "Every `major` is the synchronized one"). - `pnpm check:changeset-claims` 0, `pnpm check:pending-changeset-literals` 0. - `node scripts/check-changeset-presence.mjs` 0, `node scripts/check-changeset-overwrite.mjs` 0. - `pnpm check:new-line-citations` 0 (0 new), `pnpm check:control-bytes` 0, `pnpm check:test-path-roots` 0, `pnpm check:pre-install-import-graph` 0, `pnpm quick-reference:check` 0. - `node scripts/check-governed-queue-guard.mjs --test` on both paths: "NOT GOVERNED". - `pnpm run type-check:scripts` 0. `tsc --listFilesOnly` lists the changed test file. - `eslint` on the changed test file: 0. - `pnpm exec vitest run` on `sync-quick-reference-release`, `quick-reference-current-release-4143`, `check-changeset-no-major`, `check-spec-range-floors`, `check-changeset-presence` and `doc-version-claims`: 6 files, 169 tests passed. - The whole `scripts/__tests__` directory ran green on the post-version tree inside Validate (table above). - **NOT MEASURED:** - the workflow's `Build packages` step before Validate, because Validate's three commands read sources, manifests and docs, and all three are green without it; - the live `pnpm check:spec-floors`, because it needs a build of the floored packages and its input ranges are byte-identical across the exit and the render; - `changesets/action` itself, which is a GitHub Action; - the full `pnpm test`, which is CI's. - CI check-runs: see the report comment on the card. ## Acceptance notes - **Do not merge objectstack-ai#11600 as it stands.** It still renders `18.0.0-next.0` from a pre-mode tree. After this merges, dispatch the `refresh_version_pr` run (or wait for the six-hourly one), which re-renders it at `18.0.0`. If the stale render were merged after this PR instead, it would version `18.0.0-next.0` with `pre.json` at `mode: "exit"`. Under CLI 3 that tree still publishes to the `next` tag, and the next pass renders the GA. That is a reading of the code, not a measurement, and the floor step would refuse its publish today anyway. - **The 18.0.0 CHANGELOG sections are large.** The 40 `CHANGELOG.md` files gain 22,251 lines in total, measured on the head's render. - **File surface.** The claim's declared surface named `.changeset/pre.json`, PR objectstack-ai#12401's pre-mode gate edits and release prose. The test assertion in item 2 is outside it. It is here because it is the only thing the GA render reddens, and the dispatch allows a change at the real producer when it is named here. ## Wanted, mapped - **`pre.json` written by `pnpm changeset pre exit`, in the repo's shape:** done (The change, item 1). - **Dry-run: the fixed group renders `18.0.0`, and every gate of the version step and its validation stays green, each named:** done. Render, Validate (quick-reference check, control bytes, `scripts/__tests__`) and Restore all exit 0 on the head, and the base control renders `18.0.0-next.0`. - **PR objectstack-ai#12401's two gate edits, judged one by one:** both are kept, with the reasons (table). - **Release text that states a prerelease or "no GA" status:** objectui has none. The one red is a test assertion, changed here (item 2). - **Draft, and no release act:** held. ## 维护者速读(草稿) **改了什么**:objectui 退出 Changesets 预发布模式。`.changeset/pre.json` 由 `pnpm changeset pre exit` 写出,模式从 `pre` 改为 `exit`。另外改了一条工具测试的断言,原来它按子串比较版本号,在 18.0.0 下会误报。没有改任何门禁、工作流或发布包源码,也没有 changeset。 **为什么改**:执行您的指令「objectui 退出预发布模式」。在临时克隆里原样重放了发版工作流的版本步骤。退出后,下一次版本 PR 会把 40 个固定组包从 `17.7.0` 定为 `18.0.0`,不再是 `18.0.0-next.0`,并消费全部 857 条 changeset。只退出模式时,校验步骤有一条测试变红:QUICK_REFERENCE 里 Spec 行写着 `^18.0.0-next.1`,包含子串 `18.0.0`。断言改成按完整版本号比较后,渲染、校验、还原三步全部为 0。对照的 base 仍渲染 `18.0.0-next.0`。 **风险与代价(含回滚)**: - 本 PR 合并本身不发布任何东西,npm 上已有 17.7.0。 - 发布顺序有硬约束:objectui 发版的第一步按 `.objectstack-sha` 计算 `@objectstack` 下限。今天它退出 2,原因是 npm 上还没有任何一个 objectstack 版本包含这个 pin(最新是 `18.0.0-next.5`)。所以 objectstack 18.0.0 必须先发布,objectui 18.0.0 才发得出去。顺序反了,发布这一步会变红,但什么都不会发出去。 - 现在的版本 PR objectstack-ai#11600 还是 `18.0.0-next.0`,不要直接合并它。本 PR 合并后先刷新一次。 - 回滚:版本 PR 合并之前直接 revert 本 PR,恢复 `mode: "pre"` 即可。GA 发布到 npm 之后无法回滚。 **席位意见**: **你要做的**: 1. 决定 GA 时机,合并本 PR。 2. 等 objectstack 18.0.0 发布到 npm(objectstack-ai/objectstack#24524)。 3. 触发 objectui 版本 PR 刷新,确认它渲染为 `18.0.0`,再合并版本 PR。 --- _Generated by [Claude Code](https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
akarma-synetal
pushed a commit
to akarma-synetal/objectui
that referenced
this pull request
Oct 28, 2026
…it 06cab4849a (objectui#13261) (objectstack-ai#13266) Fixes objectstack-ai#13261 Clause-②: no **Scope:** move `.objectstack-sha` from `f4755a68a797` to `06cab4849a8a616487d468a11dd370e929137990`, objectstack's 18.0.0 version commit. Then fix every test the pin delta turns red, with no skip and no retry-wrap. The pin does not go past `06cab4849a`. ## The pin - `git rev-parse 'refs/tags/@objectstack/spec@18.0.0^{}'` and `git ls-remote origin` for the same ref both answer `06cab4849a8a616487d468a11dd370e929137990` (objectstack-ai/objectstack#24524, "chore: version packages"). - `git merge-base --is-ancestor 06cab4849a origin/main` exits 0 in the objectstack checkout (origin/main `a8b44d4070`). Exit 0 holds in a shallow checkout too. - The pin and the seven packed manifests in `.objectstack-pin/` were written by `scripts/bump-objectstack.sh --no-commit 06cab4849a…` and committed together in `d51d0408ae`. The bump read a detached objectstack worktree at the target. The script reported "(on origin/main)", and the build ran under the verify lock with `VERDICT command-exit 0`. - In the manifests, only version strings move (`18.0.0-next.5` to `18.0.0`). No dependency name changes. - **`pnpm-lock.yaml` is unchanged.** The printed second half, `pnpm install`, rewrote it, but only by flipping which `esbuild` peer context vite resolves under two importers (`0.27.7` and `0.28.2`). Nothing in that diff comes from the pinned packages. I restored the committed lockfile and ran `pnpm install --frozen-lockfile`, which exits 0. `check:lockfile-integrity` reads clean and `check:lockfile-dedupe` reads deduped. - **Floor:** `node scripts/objectstack-floor.mjs --dry-run` exits 0 with "Floor 18.0.0: the earliest published @objectstack/spec whose tag @objectstack/spec@18.0.0 contains the pin 06cab4849a8a616487d468a11dd370e929137990." It reports 37 ranges that would move to `^18.0.0` at publish and writes nothing. ## Reds at the new pin, and what this PR does | Red | Upstream commit | Fix | | --- | --- | --- | | `registry-inputs-spec-parity`: 3 rows about `list-view.filterableFields` | `4bc3becd5f` (objectstack#24640) | The `UNPUBLISHED_EXEMPTIONS` entry leaves, as it said it would at this pin. The key is now a harvested tombstone | | `object-view-unmirrored-keys-7779`: 13 rows | `4bc3becd5f` | The sixth census bucket (`BUCKET_SPEC_RETIRED_AHEAD_OF_PIN`) empties into `PROTOCOL_RETIRED_KEYS` (now 8) and `BUCKET_PROTOCOL_RETIRED_TOMBSTONED` (now 3), as its failure message prescribed. The live count goes 44 to 43. The accept legs parse the seven live mirrored keys. A new row pins that `filterableFields` is refused by name on both entry paths with the spec's prescription. The "legacy shorthand" description row is inverted to the `[REMOVED]` marker | | `object-view-spec-parity`: the `filterableFields` anchor reads RETIRED | `4bc3becd5f` | Re-triaged at this bump, as its note said it would be: out of `SPEC_COUNTERPART` and into `SANCTIONED_LOCAL`, on the same footing as `viewTabBar` (a tombstone still declared on both faces) | | `ListViewBlock.specInputs-13047`: 2 rows | `4bc3becd5f` | The spec's `list-view` row now refuses the fixture. One row pins that refusal (path `filterableFields`, prescription text, plus an accept control). The Filter-panel measurement is kept on a node built past the row on purpose. The old quick-filter-bar row is removed: no node the save gate accepts can carry the key now | | `SchemaForm.topLevelUnion-11251`: the served list form | `4bc3becd5f` (`view.form.ts` drops the input) | The control lists the three keys the form still offers, and pins `filterableFields` absent | | `ci-cd-pipeline-doc`: live-e2e pin | the bump | `e2e/live/ci/backend.env` reads `OBJECTSTACK_VERSION=18.0.0`. The tag `@objectstack/cli@18.0.0^{}` resolves to `06cab4849a`, and npm serves `@objectstack/cli@18.0.0` | | `check:installed-pin-claims` and its blocking test: 34 sentences in 24 files | the bump | Each fact was re-measured and the sentence restamped `18.0.0` (see below). Nine sentences that carry the re-measure chain also gain `objectui#13261` | The renderer needed no change. objectui#13118 had already removed the `filterableFields` reader ahead of the pin. ### How the 34 sentences were re-measured I wrote a probe and ran it unchanged against both builds in the pin store: `f4755a68` (`18.0.0-next.5`) and `06cab4849a` (`18.0.0`). For every exported zod schema in `@objectstack/spec`, `/ui`, `/data` and `/automation` (510 schemas), plus every `ComponentPropsMap` row, it hashes `z.toJSONSchema`. It also runs the concrete parses the sentences state: - `ViewDataSchema` providers; - the three `CalendarConfigSchema` legs and the `object-calendar` `data` arms; - the `FieldSchema` lookup `referenceTo` / `reference` pair, `rows` on four types, and `dependsOn` shapes; - `SelectOptionSchema` with label `''` and with `description`; - `record:highlights` `icon` and `layout: 'grid'`, and `record:details` `columns`; - the `object-kanban` key set and the `ObjectListViewSchema` key count; - `@objectstack/lint`'s `fieldRuleRootIssue` text for `current_user` and `app`. Results: - Every concrete parse answers identically on both builds. - With descriptions stripped, 15 schemas differ. All of them are the list-view family (the `filterableFields` tombstone) or schemas that embed it (`ObjectSchema`, `ViewSchema`, the stack and artifact aggregates). - `FieldSchema`, `FlowSchema` and `RecordRelatedListProps` differ in descriptions only. - For the engine table in `flow-node-config.startGates-12780`: between the two commits, the automation engine changed only run-as identity, and the trigger packages changed only their changelogs and manifests. ## Verification at head `586a6233b5` - **Closure build** under the verify lock: `pnpm --workspace-concurrency=2` with `--filter` set to `@object-ui/app-shell^...`, `@object-ui/plugin-view^...`, `@object-ui/data-objectstack^...` and `@object-ui/plugin-list^...`, then `build`. The lock printed `VERDICT command-exit 0`. - **Type-check**, each exit 0: `@object-ui/types`, `core`, `data-objectstack`, `plugin-list`, `plugin-view` and `app-shell`. Each log echoes `type-check`. `types`, `plugin-list` and `app-shell` were re-run after the test edits. - **Targeted vitest** with `--maxWorkers=1`, one package directory at a time, under the lock. These are the 106 test files that name a key or symbol the delta moved (`filterableFields`, `NavigationItemSchema` / `navItemVisibleDataNeedsDataSource`, the spec forms, `retiredKey`, the pin and lockfile scripts), plus `check-installed-spec-pin-claims.test.ts`. - First run at the new pin: 18 groups, red in `apps/console`, `app-shell`, `plugin-list`, `types` and `scripts`. Those are the reds in the table. - Re-run at `586a6233b5`: `apps/console` 325/325, `app-shell` 620 passed and 1 skipped, `plugin-list` 220/220, `types` 658/658, `scripts` 318/318. - The 13 other groups were green at the new pin, before the comment-only restamps. - **Gates at `586a6233b5`**, each exit 0: - `check:phantom-deps`, `self-import`, `unreferenced-sources`, `doc-example-readers` and `handler-key-reads`; - `check:side-effects-array`, `element-data-source-declaration`, `spec-symbols`, `action-forward-parity` and `designer-field-key-parity`; - `check:icon-record-names`, `i18n-keys`, `i18n-drift`, `i18n-designer-parity` and `control-bytes`; - `check:installed-pin-claims`, `lockfile-integrity`, `lockfile-dedupe` and `new-line-citations`; - `check-hand-rolled-comment-mask.mjs`, `check-changeset-fixed.mjs` and `check-changeset-presence.mjs`; - `check:changeset-claims`, `check:pending-changeset-literals`, `changeset:check` and `check-changeset-no-major.mjs`. - **`check:spec-floors`** exits 1, with every finding `[no-artifact]`: the workspace was not fully built. This is NOT MEASURED, not a red. The order said to record it and leave it. - **Lint, narrowed:** `eslint --no-inline-config --format json` over the 27 changed `.ts`/`.tsx` files reports `files 27, errors 0`. All 147 warnings sit on lines this PR does not change. `eslint.config.js` has no `parserOptions.project` and no projectService, so type-aware linting is off and this diff cannot change the verdict on any untouched file. - **Declared to CI:** the full `pnpm test` (every package directory this PR touches, including `plugin-calendar`, `plugin-designer`, `plugin-detail`, `plugin-form`, `plugin-gantt`, `plugin-kanban` and `core`), the whole-repo `pnpm lint`, `type-check` across the workspace, and `spec-range-floors`. ## Changeset `.changeset/13261-objectstack-pin-18-0-0.md` has an empty frontmatter, so it releases nothing. The only published-source edits are doc comments, which `check-changeset-presence` counts. It reads OK on the empty declaration. ## Acceptance notes - `pnpm install` at this pin rewrites `pnpm-lock.yaml` with an `esbuild` peer-context flip that the pin did not cause. It is left uncommitted, because the committed lockfile installs frozen. A later unrelated `pnpm install` may show the same churn. - `packages/plugin-detail` and `packages/types` still declare `@objectstack/spec` `^18.0.0-next.5` in `package.json`. The floor step moves every range to `^18.0.0` at publish, so this PR leaves them. - objectui#13121, objectstack-ai#13119, objectstack-ai#13076 and objectstack-ai#12484 remain open. Releasing them after this lands is triage's call. --- _Generated by [Claude Code](https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@objectstack/console@18.0.0
@objectstack/lint@18.0.0
@objectstack/metadata-protocol@18.0.0
@objectstack/objectql@18.0.0
@objectstack/plugin-security@18.0.0
@objectstack/service-automation@18.0.0
@objectstack/spec@18.0.0
@objectstack/trigger-api@18.0.0
@objectstack/hono@18.0.0
@objectstack/cli@18.0.0
@objectstack/client@18.0.0
@objectstack/cloud-connection@18.0.0
@objectstack/connector-imap@18.0.0
@objectstack/connector-mcp@18.0.0
@objectstack/core@18.0.0
create-objectstack@18.0.0
@objectstack/driver-memory@18.0.0
@objectstack/driver-mongodb@18.0.0
@objectstack/driver-sql@18.0.0
@objectstack/driver-sqlite-wasm@18.0.0
@objectstack/driver-turso@18.0.0
@objectstack/formula@18.0.0
@objectstack/mcp@18.0.0
@objectstack/metadata@18.0.0
@objectstack/metadata-core@18.0.0
@objectstack/platform-objects@18.0.0
@objectstack/plugin-approvals@18.0.0
@objectstack/plugin-audit@18.0.0
@objectstack/plugin-auth@18.0.0
@objectstack/plugin-dev@18.0.0
@objectstack/plugin-email@18.0.0
@objectstack/plugin-hono-server@18.0.0
@objectstack/plugin-sharing@18.0.0
@objectstack/plugin-webhooks@18.0.0
@objectstack/rest@18.0.0
@objectstack/runtime@18.0.0
@objectstack/service-analytics@18.0.0
@objectstack/service-datasource@18.0.0
@objectstack/service-i18n@18.0.0
@objectstack/service-mailbox@18.0.0
@objectstack/service-messaging@18.0.0
@objectstack/service-package@18.0.0
@objectstack/service-print@18.0.0
@objectstack/service-realtime@18.0.0
@objectstack/service-settings@18.0.0
@objectstack/service-sms@18.0.0
@objectstack/service-storage@18.0.0
@objectstack/skills@18.0.0
@objectstack/types@18.0.0
@objectstack/verify@18.0.0
@objectstack/account@18.0.0
@objectstack/setup@18.0.0
@objectstack/studio@18.0.0
@objectstack/client-react@18.0.0
@objectstack/connector-openapi@18.0.0
@objectstack/connector-rest@18.0.0
@objectstack/connector-slack@18.0.0
@objectstack/metadata-fs@18.0.0
@objectstack/observability@18.0.0
@objectstack/embedder-openai@18.0.0
@objectstack/knowledge-memory@18.0.0
@objectstack/knowledge-ragflow@18.0.0
@objectstack/organizations@18.0.0
@objectstack/plugin-pinyin-search@18.0.0
@objectstack/service-cache@18.0.0
@objectstack/service-cluster@18.0.0
@objectstack/service-cluster-redis@18.0.0
@objectstack/service-job@18.0.0
@objectstack/service-knowledge@18.0.0
@objectstack/service-queue@18.0.0
@objectstack/trigger-record-change@18.0.0
@objectstack/trigger-schedule@18.0.0
@objectstack/sdui-parser@18.0.0
@objectstack/example-crm@4.0.100
@objectstack/example-multi-package@0.0.7
@objectstack/example-showcase@0.3.22
@objectstack/example-todo@4.0.100
@objectstack/example-embed-objectql@0.0.40
@objectstack/dogfood@0.0.48
@objectstack/downstream-contract@0.0.46
@objectstack/http-conformance@0.1.8