Repository navigation
deps(v18): move objectui's @objectstack/* from 18.0.0-next.0 to 18.0.0-next.1 and follow its contract — the bump the held follow-ups wait on #12370
Description
Filing gate ③ a task the maintainer directed. objectui#12030's ruling (the maintainer, 2026-10-09: 「让 objectui 提前改用 next 预发布版」) put objectui on the next prereleases. @objectstack/* 18.0.0-next.1 was published to next at 2026-10-14T12:08Z (the maintainer: 「18.0.0-next.1 已发布」). Filed by the objectstack triage seat (seat post objectstack-ai/objectstack#6015, session_01AavokzJ5DndAwitDXvKy4U) as the one bump card for this release. ⛔ Not a claim.
Reader (who acts): the objectui domain:ui execution seat, the same path #12030 took for next.0. One PR. The publish itself is not objectui's.
What changes
- objectui
mainresolves@objectstack/*18.0.0-next.0across the lockfile, with ranges at^18.0.0-next.0. The bump moves the lockfile, and the ranges' floor where a held card needs it, to18.0.0-next.1. - The upstream range: objectstack
d889448b93..0c52e43075(the@objectstack/spec@18.0.0-next.0and@18.0.0-next.1tags). It holds 125 commits, 35 of them!:(breaking). The dev measures which of them reach objectui, the way deps(v18): move objectui's @objectstack/* dependencies to thenextprereleases (18.0.0-next.N) ahead of 18.0 GA — the maintainer's ruling, since 17.x ships no new release #12030's held-card table did, against the18.0.0-next.1tarball, with18.0.0-next.0as the negative control.
The held cards this bump releases
| card | grade | how it rides |
|---|---|---|
| #12338 | p1 | in this PR. Its test (held-public-block-arms-10872.test.ts:224) turns red once next.1 is installed, so the bump cannot land green without it. |
| #12326 | p1 | after the bump. Studio writes an omitted required the save door now refuses. |
| #12294 | p1 | after the bump. Record blocks honour the per-element dataSource. |
| #12335 | p2 | after the bump. reset() names a package. |
| #12349 | p2 | after the bump. The flow registration verdict. |
| #12329 | p2 → p1 on restart | after the bump. The single-brace flow dialect. |
| #12195 | p3 | after the bump. One default record page. |
Each card's Restart-when: (or Blocked-by: this card) is met when this PR merges. The unlock scan restarts them.
Acceptance notes
- The bump PR's CI runs against the installed
18.0.0-next.1, and every red it raises is either fixed here (contract-following, as deps(v18): move objectui's @objectstack/* dependencies to thenextprereleases (18.0.0-next.N) ahead of 18.0 GA — the maintainer's ruling, since 17.x ships no new release #12030 did) or named as a held card's. Fixes #12338rides the PR.- The objectui changeset policy follows release(v18): objectui's first 18.x release — the sync
major, Changesets pre mode onnext, and the two gate edits (the maintainer's ruling on #12030), after #12030 lands #12334's pre mode if that card has landed first; otherwise the bump carries no release.
Practice
The maintainer's rule 「发版本优先的都p1」: every next.N publish gets one consumer bump card, filed by triage when the publish is confirmed, so the held follow-ups have one carrier instead of several PRs racing on the lockfile.
Activity
objectstack-fleet commentedon Oct 14, 2026
Claim: PM loop round 1
Session:
session_01XVp19E1MYUTFM3dnkwz8gBAccount:
baozhoutao(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-12370-spec-next-1Worktree:
objectui-issue-12370Domain:
domain:uiSeat:
domain:ui#2File surface: the root and package
package.json@objectstack/*ranges,pnpm-lock.yaml,packages/types/src/__tests__/held-public-block-arms-10872.test.ts(objectui#12338, which rides this PR), and the contract-following fixes for any red that18.0.0-next.1raises. Each fix is declared per site in the PR body, and a red that belongs to a held card is named, not fixed (stop on breach; explain in the report)Container & model:
M,mode:subagent,model: opus(default tier;dispatch-gates --tier --repo objectstack-ai/objectuireads no path-derived mandate)Clause-②: yes — following next.1 narrows
@object-ui/typesaccept sets that parse through the spec's schemas (objectui#12338's action row is one). The contract review is owed before the queue.Responsibility:
n/a — not a defect cardThread-read: none
Serial constraints cleared: the in-flight PR #12371 (objectui#12101) pins refusals measured on the installed
18.0.0-next.0inflowValueSlots-12101.test.tsx. Whichever of the two lands second mergesmainand re-runs that file on its own installed spec. No other open objectui PR touchespnpm-lock.yamlor an@objectstack/*range (read 2026-10-14T13:09Z). objectui#12338 rides this PR as the card body directs, and is claimed under this comment.Generated by Claude Code
objectstack-fleet commentedon Oct 14, 2026
os-dev-report
{ "issue": 12370, "status": "done", "branch": "claude/issue-12370-spec-next-1", "pr": "https://github.com/objectstack-ai/objectui/pull/12381", "session": "session_01XVp19E1MYUTFM3dnkwz8gB", "premise_still_valid": true, "summary": "Moved all 40 @objectstack/* ranges in 32 manifests from ^18.0.0-next.0 to ^18.0.0-next.1 (lockfile regenerated by pnpm install only), and followed the next.1 contract. Fixed objectui#12338's row (actionType 'api' + target) and the other mechanical reds the full suite raised: action-arm bag identity (next.1's onSuccess block carries an openIn default that the objectui#8317 boundary strips), the retired view api provider in the grid, tree and subschema pins, lockfile/quick-reference/live-e2e pins, and 30 installed-pin claim sites (re-measured on next.1 against next.0, then restamped; one ledgered historical). One red is named as a held card's: record:related_list.parentDataSource (spec marks it PLANNED, not yet rendered) is booked in UNPUBLISHED_EXEMPTIONS with objectui#12294 as owner. The changeset has 24 minor entries (the 22 objectui#12030 declared, plus console and runner); there is no .changeset/pre.json, so objectui#12334 has not landed. A4: objectui#12371 landed before the push, main was merged, and flowValueSlots-12101.test.tsx is green on next.1 (no verdict change).", "tests": "Full suite in four lock-held quarters (vitest --shard=K/4): shard1@bd55fee 2 files red/1261 passed; shard2@8992522 4/1256; shard3@272a269 1/1263; shard4@08331ae 3/1260 (one of those, check-object-metadata-write-doors, is a 15s timeout under load). Negative control: the 9 red files on main 2d8450e with next.0 installed gave 'Test Files 9 passed (9) / Tests 505 passed (505)'. After the fixes, the reds plus the flowValueSlots-12101 and pin-claims tests on 76afe66 with next.1 gave 'Test Files 12 passed (12) / Tests 571 passed (571)'. After the second main merge on 94b542a, the 10 test files that merge brought gave 177/177, and type-check for app-shell + plugin-grid gave 31/31. Build: turbo build (no site) 43/43, BUILD_EXIT=0. type-check: turbo 81/81, TYPECHECK_EXIT=0 (76afe66). #12338: a tsx probe over @object-ui/types faces shows the remedy row without an executor ACCEPT on next.0 and REJECT custom@properties.onSuccess on next.1, on both faces; the fixed test passes in the 12-file run. Clause-② table: 9 documents flip ACCEPT to REJECT on both faces, with 6 controls stable (in the PR body). Gates at 76afe66: frozen install 0; check:phantom-deps/self-import/unreferenced-sources/doc-example-readers/handler-key-reads/side-effects-array/element-data-source-declaration/spec-symbols/action-forward-parity/designer-field-key-parity/icon-record-names/i18n-keys/i18n-drift/i18n-designer-parity/installed-pin-claims/lockfile-integrity/control-bytes/changeset-claims/pending-changeset-literals all 0; check-changeset-fixed 0; check-changeset-presence 0; check-changeset-no-major 0. check:spec-floors 1 on the branch and on main 2d8450e, same 'scan collapsed' message, so the bump does not change it. NOT MEASURED: pnpm lint repo-wide (CI owns it). Narrowed instead: eslint --no-inline-config --format json over the 34 changed ts/tsx/mjs files counts 34 files and 0 errors; eslint.config.js has no parserOptions.project/projectService, so linting is not type-aware and the diff cannot move a verdict on an untouched file. Ablation: none run, because this is a contract-following change and the next.0 control is the before leg.", "mcp_calls": "0", "api_writes": "3: git push of the branch (not REST); POST /repos/objectstack-ai/objectui/pulls (draft) plus POST /issues/12381/assignees through the fleet-write relay (one pr_create stroke); POST /repos/objectstack-ai/objectui/issues/12370/comments (this os-dev-report). Read-only REST GETs: the issue, comment and PR bodies. Labels: zero writes, because the dispatch named none and no objectui gate reads a seat label.", "open_questions": [], "out_of_scope_findings": [ "carrier: holder of objectui#12294, or none · noted, not filed: packages/core/src/utils/normalize-list-view.ts:430 (and its test at :401) and the object-tree data .describe() in packages/types/src/zod/objectql.zod.ts:2795 still describe four view-data providers / an api provider that next.1 retires. Prose only, no reader. In PR Acceptance notes." ] }objectstack-fleet commentedon Oct 14, 2026
Review: ACCEPT — objectui PR #12381 ·
domain:uiseat 2 ·session_01XVp19E1MYUTFM3dnkwz8gB· 2026-10-14T19:15ZReviewed on GitHub at head
50056a8, against this card, objectui#12338 and the contract review on this head, not against the dev's report.main. Its body opensFixes #12370andFixes #12338, the only closing keywords; types(test):held-public-block-arms-10872.test.ts:224asserts an executor-less page action row withonSuccessis accepted — refused once the spec release carrying objectstack#23331 is installed; give the rowactionType: 'api'#12338 rides this PR as both cards direct. The second line isClause-②: yes. No held card's number (Studio: acontrolled_by_parentobject needs exactly onemaster_detailwithrequired: true(objectstack#23100) — the designer writes an omittedrequiredthat the save door now refuses, andderiveMasterObjectreads the first master by order #12326, record blocks honour the per-element dataSource the spec already declares — record:details / record:highlights / record:quick_actions / record:related_list on an app page bind their record from the component's dataSource, so a product page composes without the record shell (maintainer ruling cloud#2839 Q1 D, 2026-10-13) #12294, metadata-client:reset()cannot name a package — after objectstack#23165 a console reset or discard of an item two packages hold answers 409, and the remedy?package=is one the console cannot send #12335, studio(automations): read the engine'sregistrationverdict on a flow, so a flow the engine refused at boot no longer reads as "unpublished" or "enabled" (objectstack#23316) #12349, v18: the flow designer and simulator stop teaching and emulating the single-brace{var}dialect, which objectstack#19939 deletes (the objectui half of #19939 pass 4, S7) #12329, [finding] usePageAssignment ignores PageSchema.isDefault and takes the first record page in meta.pages order, so two isDefault record pages for one object are decided by plugin init order #12195) carries a keyword. The governed sweep reads NOT governed, 589 lines (+370 / −219).6176288280on PR chore(deps): move @objectstack/* to 18.0.0-next.1 and follow its contract (objectui#12370) #12381:Served-tier: CONTRACT_REVIEW_TIER,Head-sha50056a8da4…(this head),Local-runs: none.next.0keys;@object-ui/typesfaces by reference, with types(test):held-public-block-arms-10872.test.ts:224asserts an executor-less page action row withonSuccessis accepted — refused once the spec release carrying objectstack#23331 is installed; give the rowactionType: 'api'#12338's row carryingactionType: 'api'+target;stripImportedDefaults;ViewDataSchemarefusesapi;checkPageComponentViewDatais attached by the spec's own export;record:related_list.parentDataSourceis booked to held card record blocks honour the per-element dataSource the spec already declares — record:details / record:highlights / record:quick_actions / record:related_list on an app page bind their record from the component's dataSource, so a product page composes without the record shell (maintainer ruling cloud#2839 Q1 D, 2026-10-13) #12294;minormatches the published surface: deps(v18): move objectui's @objectstack/* dependencies to thenextprereleases (18.0.0-next.N) ahead of 18.0 GA — the maintainer's ruling, since 17.x ships no new release #12030's 22 packages plus console and runner. There is no.changeset/pre.json, so the bump carries no release cut.checkPageComponentViewData, and objectui'sPageNodeSchema/PageKindNodeSchemanow attach it by the spec's export. The seat wrote its row into the PR body's Clause-② table from the dev's report. The dev's four local quarters had missed it, because twomainmerges reshuffled the shard plan between quarters; CI's 12 shards caught it.mainwas merged, andflowValueSlots-12101.test.tsxis green on next.1 with no verdict change.normalize-list-view.ts:430and theObjectTreeSchema.data.describe()still name four view-data providers. PR docs: published text no longer teaches the retired view-levelprovider: 'api'(objectui#12364) #12380 (objectui#12364), in the queue, rewrites both; whichever lands second carries the other's text.filter=latest), all 12 test shards included.needs:contract-reviewis removed in the same stroke. Next:pr_ready+automerge_enable. Once this merges, the held follow-ups'Restart-when:lines are met, and the unlock scan restarts them.Generated by Claude Code
objectstack-fleet commentedon Oct 14, 2026
Landed ·
domain:uiseat 2 ·session_01XVp19E1MYUTFM3dnkwz8gB· 2026-10-14T19:54Zmainff9df88. It closed this card and objectui#12338completed, by the PR'sFixes #12370andFixes #12338, its only closing keywords. No other card closed with it.origin/main, 65 of the 68 files the PR touches are blob-identical to the accepted, contract-reviewed head50056a8. That covers every manifest,pnpm-lock.yaml, thelayout.zod.tspage-check attachment, the types(test):held-public-block-arms-10872.test.ts:224asserts an executor-less page action row withonSuccessis accepted — refused once the spec release carrying objectstack#23331 is installed; give the rowactionType: 'api'#12338 row and.changeset/12370-spec-next-1.md.ObjectCalendar.tsx,packages/types/src/objectql.tsandzod/objectql.zod.ts. Each differs from the head by exactly PR docs: published text no longer teaches the retired view-levelprovider: 'api'(objectui#12364) #12380's text hunks (objectui#12364, merged first asd75f212).pm:dispatchedis removed from this card and from objectui#12338 in the same stroke.mainnow resolves@objectstack/*18.0.0-next.1. The cards this card's body names as waiting on it are objectui#12326, objectui#12294, objectui#12335, objectui#12349, objectui#12329 and objectui#12195. objectui#12271 also waits on a spec release; its probe is objectstack#23073's key. Each card's ownRestart-when:/Blocked-by:line is for the unlock scan to judge. ⛔ This note does not restart them.Generated by Claude Code