Repository navigation
deps(v18): resolve @objectstack/* 18.0.0-next.3 and follow its contract (objectui#12873) - #12887
Conversation
Regenerated with `pnpm -r up --no-save '@objectstack/*@18.0.0-next.3'`. All seven packages (client, core, formula, lint, sdui-parser, spec, types) move from 18.0.0-next.2; no other resolution moves. Claude-Session: https://claude.ai/code/session_01GqyWzkUEkq5N5ne2ieHxVv Co-authored-by: Claude <noreply@anthropic.com>
check:installed-pin-claims named 26 sites (38 lines) stamped with the installed 18.0.0-next.2. Each fact was re-measured on next.3 with next.2 as the control before its stamp moved: a parse probe over both installed spec builds and both lint builds (output identical except the view-data page check), the green type-check, and the files' own tests. - The three sentences about the spec's view-data page check (`checkPageComponentViewData`) said the installed spec still carries it; next.3 is the first release without it (objectstack a35f7a6), so they now say that instead of being restamped. - ci-cd-pipeline.md's one-off next.2 install reading is reworded so the verb "installed" is not read as an installed-pin claim. - e2e/live/ci/backend.env names 18.0.0-next.3 (ci-cd-pipeline-doc). - check-lockfile-integrity samples are re-keyed onto next.3's keys. Claude-Session: https://claude.ai/code/session_01GqyWzkUEkq5N5ne2ieHxVv Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GqyWzkUEkq5N5ne2ieHxVv Co-authored-by: Claude <noreply@anthropic.com>
Three reds the installed next.3 raised in registry-inputs-spec-parity (27 cases): - The node-level key set read `PageComponentSchema._def.in`, the input side of a `.pipe()`. next.3 drops the pipe that folded the retired `visibility` spelling (objectstack 105902f), so the read came back empty and every block declaring `className` or `dataSource` went red. It now reads the schema's own shape. - next.3 tombstones `page:header.showStar` (objectstack ae0ca66), so the exemption written for it goes dangling and stale; its own text says deleting it on this bump is the whole fix. - next.3 adds `record:json` (objectstack 97b8e7a51d). objectui does not register it: the maintainer dropped objectui#12490's face and the type is filed for retirement upstream (objectstack#24162). It is ledgered as NOT REGISTERED, DELIBERATELY, and the population moves 59 -> 60. Claude-Session: https://claude.ai/code/session_01GqyWzkUEkq5N5ne2ieHxVv Co-authored-by: Claude <noreply@anthropic.com>
…rd-block parity pins next.3 drops the `.pipe()` that folded the retired `visibility` spelling (objectstack 105902f), so `PageComponentSchema._def.in` is gone and the node-level widening in the record:details, record:highlights and record:related_list parity pins read back empty. Each now reads the schema's own shape, the same follow the repo-wide gate takes. Claude-Session: https://claude.ai/code/session_01GqyWzkUEkq5N5ne2ieHxVv Co-authored-by: Claude <noreply@anthropic.com>
next.3 adds `kind` (open / won / lost) to `SelectOptionSchema` (objectstack adad73f), so the key-set pin in select-option-spec-extension-7014 went red. The pin moves to the seven keys, and select-option.ts, which the pin says to re-point with it, names `kind` among the keys the derivation inherits. Claude-Session: https://claude.ai/code/session_01GqyWzkUEkq5N5ne2ieHxVv Co-authored-by: Claude <noreply@anthropic.com>
…rd:json next.3 adds `record:json` to `PageComponentType` (objectstack 97b8e7a51d), so block-config's coverage pin requires a palette decision for it. It is excluded: objectui does not render it, because the maintainer dropped the raw-payload face it was added for (objectui#12490), and the type is filed for retirement upstream (objectstack#24162). The changeset also names the `kind` member the select-option types now inherit from the spec. Claude-Session: https://claude.ai/code/session_01GqyWzkUEkq5N5ne2ieHxVv Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GqyWzkUEkq5N5ne2ieHxVv Co-authored-by: Claude <noreply@anthropic.com>
席位核对 — ACCEPT · objectui#12873 · head
|
Contract reviewServed-tier: Face: the Inputs read:
Nothing was built or run locally. ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
Landing · head
|
Fixes #12873
Clause-②: yes
Moves objectui's lockfile from
@objectstack/*18.0.0-next.2to18.0.0-next.3, and follows the contract changes in that release that reach objectui. npmnextis18.0.0-next.3, built from objectstack2c9bf9430a: the@objectstack/spec@18.0.0-next.3and@objectstack/cli@18.0.0-next.3tags both peel to it. The upstream range ise5136ff10f..2c9bf9430a(158 commits).Versions moved
@objectstack/*packages:client,core,formula,lint,sdui-parser,specandtypes. All seven were published at18.0.0-next.3, and all fourteen lockfile entries (two per package) now resolve there; none stays atnext.2. The lockfile was regenerated by pnpm only (pnpm -r up --no-save '@objectstack/*@18.0.0-next.3'). No other resolution moved: the lockfile diff is 72 lines out and 72 in, all@objectstack/*.check:lockfile-integrityandcheck:lockfile-dedupeare green.next.3in a range, andcheck:spec-floorsis green with the floors as they are:^18.0.0-next.2on@object-ui/typesand@object-ui/app-shell,^18.0.0-next.1everywhere else.e2e/live/ci/backend.envnames18.0.0-next.3. Followingstart-backend.sh's instruction to re-measure at every pin bump, itsvitestoverride was checked onnext.3under npm 10.9.4, with a fresh cache and the showcase app at2c9bf9430a. Without the override, the install still dies withCannot read properties of null (reading 'edgesOut'). With it (~4.0.0), it exits 0 and installs@objectstack/spec18.0.0-next.3. So the override stays.Reds after the bump, the upstream commit behind each, and what this PR did
Measured with the full suite in 16 shards (5,424 files), plus a re-run of every pin this PR touches as it stands at BASE, on
2e80918(lockfile only,next.3installed): 9 red files, 36 red tests.registry-inputs-spec-parity: 22 forward-direction cases plus the node-level derivation pin105902f(the page component'svisibilityfold leaves the load path, soPageComponentSchemais no longer a.pipe())_def.inregistry-inputs-spec-parity: 3 unpublished-key exemption casesae0ca66(page:headershowStartombstoned)page:header.showStarexemption, which says in its own text that it dies on this bumpregistry-inputs-spec-parity: 2 population cases97b8e7a51d(record:json)recordDetailsInputs,recordHighlightsInputs,recordRelatedListInputsspec-parity (4 cases)105902fselect-option-spec-extension-7014key-set pinadad73f(select optionkind)select-option.tsnameskindamong the inherited keys, as the pin asksblock-configpalette coverage97b8e7a51dPALETTE_EXCLUSIONSentry forrecord:jsoncheck-lockfile-integritysamplesnext.3snapshot keysci-cd-pipeline-doclive-e2e pinbackend.envmovedcheck-installed-spec-pin-claims(26 sites, 38 lines)No red was left for a follow-up card.
Re-measured stamps. Each fact beside a
next.2stamp was re-measured onnext.3, withnext.2as the control, before its stamp moved:Three sentences were rewritten rather than restamped, because their fact moved:
spec-object-refinements-7715(2 sites) andpage-component-view-data-12666said the installed spec still carriescheckPageComponentViewData.next.3is the first release without it (objectstacka35f7a6), and onnext.3the spec'sPageSchemaaccepts a slottedapibinding, as objectui's page node already did.ci-cd-pipeline.mdheld a one-offnext.2reading in which the verb "installed" was read as an installed-pin claim. It is reworded with the same meaning.Held cards
next.397b8e7a51d:git merge-base --is-ancestor 97b8e7a51d 2c9bf9430aexits 0, and the installed spec exportsRecordJsonPropsand arecord:jsonrow. Since the card was held, the maintainer dropped this face (pointer 6232139151 on the card). No renderer is to be built, and the type is filed for retirement upstream (objectstack#24162).next.3forced a decision onrecord:jsonrecord it as unregistered on purpose, citing the card. The spec's retirement will move both: the parity ledger entry must then read RETIRED UPSTREAM, and the palette exclusion goes stale.2c9bf9430a, and1eac7ad751is its ancestor (merge-base --is-ancestorexits 0). None of its pins went red in the full suite.Clause-② accept-set and type moves (
@object-ui/types)page:headerproperties.showStar. objectui's faces read thepage:headerprops bag from the spec's own row by reference. SosafeValidateSchemaandStrictAnyComponentSchemanow refuseshowStarwith the spec's own retirement message, atproperties.showStar. Onnext.2both accepted it. Control: the same node without the key is accepted on both versions. No objectui renderer reads the key, since objectui#12627.SelectOptionBase, and the field and form option types built on it, inherit the spec's optionalkind(open,wonorlost).visibleOn(objectstack105902f). objectui's form renderer usesvisibleOnonly as its own internal channel, which the console fills from the servedvisibleWhen. The served-view path already readsvisibleWhen.Deviations
2e80918(lockfile only). While it ran, comment-only restamps and the test follows above landed in the same worktree. Because of that, the red set is quoted from a separate run on a clean2e80918checkout of every pin this PR touches. That run shows the 9 files and 36 tests in the table above.type-check(81/81) was last run on1dc6351, before the merge ofmain. After the merge, the test filesmainbrought were run together with this PR's.build(43/43) was run on2e80918. The later commits change comments, tests and one string entry inblock-types.ts, so it was not re-run.Smoke read (console from this branch, backend on 18.0.0-next.3)
The backend was HotCRM
4f82b81with a local, unpushed override to18.0.0-next.3(/api/v1/healthanswered18.0.0-next.3). HotCRM's own metadata does not compile onnext.3:src/sales/views/lead.view.tshas 44 view form fieldvisibleOnkeys, which the spec now refuses (objectstack105902f), andobjectstack devstops withCompile failed. To read the console, the spec's own remedy (visibleOnrenamed tovisibleWhen) was applied to the scratch copy only. Then the Leads list, a lead record page and Studio's object designer oncrm_leadwere read, with no page errors.crm_lead: https://github.com/objectstack-ai/objectui/blob/0a6fc21b6e1145bcb05385bf6ad785f7e4c42a31/docs/design/findings/12873/studio-object-designer-lead-1440.png?raw=trueThe screenshots are on
claude/issue-12873-evidenceonly. This branch adds no PNG.Test evidence (head
bc4712a)--concurrency=2): 43/43 on2e80918.--concurrency=2): 81/81 on2e80918, and 81/81 on1dc6351.type-check:scripts,type-check:e2eandtype-check:vitest-setupexit 0.next.3: 16 shards, 5,424 files, every red in the table above. 12 shards were fully green.bc4712a:mainbrought: 60 passed and 1 skipped (1,405 tests passed);scripts/__tests__/in full: 186 files passed and 2 skipped (5,620 tests).next.2installed (the BASE lockfile) are red, and onnext.3they are green:registry-inputs-spec-parity: 26;select-option-spec-extension-7014: 1;block-config: 1;check-lockfile-integrity,ci-cd-pipeline-docandcheck-installed-spec-pin-claims: red.HEADandgit diff HEADwas empty._def.in: 22 red;record:jsonledger entry renamed: 2 red;_def.in: 2 red;kinddropped from the seven keys: 1 red.bc4712a:check:installed-pin-claims,check:lockfile-integrity,check:lockfile-dedupe,check:spec-floors,check:spec-symbols,check:phantom-deps;check:i18n-keys,check:i18n-drift;node scripts/check-changeset-presence.mjs,check-changeset-fixed,check-changeset-no-major,check:changeset-claims,check:pending-changeset-literals;check:new-line-citations,check:control-bytes,check:doc-json.2e80918console build:check:sdui-registration-pins, and the eager-closure budget (3149.3 KB of 3744.1 KB).--no-inline-configover the 26 touched code files reports 0 errors.Changeset
.changeset/12873-spec-next-3.mdfollows the repo's pre mode (tag: next). It bumps the changed released packages asminor, nevermajor. It says the console and the runner bundlenext.3, and lists theshowStarnarrowing and thekindwidening.Acceptance notes
kindthroughSelectOptionBase, while the spec's form view option list (FormSelectOptionSchema) does not take it. This is an observation; no form face was changed here.visibleOnkeys (above) are a producer-side item for HotCRM's ownnext.3bump. It is noted here and not filed.Generated by Claude Code