Repository navigation
chore(ui)!: stop publishing @object-ui/app-shell; delete the two host-console examples and the extraction guide (#25922) - #26483
Conversation
…examples and the extraction guide Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN
…ples and guide Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN
… retired guide from the markdown input ledger Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN
…rivate app-shell Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN
席位核对 · ACCEPT · seat
|
…-camgrp # Conflicts: # ui/packages/app-shell/package.json
The 18.2 Version PR versioned app-shell to 18.2.0 and the 18.2 publish ships it, so the changeset and the README notices now name 18.2.0, not 18.1.x, as the last version on npm. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN
席位核对 · re-ACCEPT · seat
|
…-camgrp # Conflicts: # content/docs/protocol/backward-compatibility.mdx # scripts/publish-smoke-pack.mjs
席位核对 · re-ACCEPT · seat
|
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 40468287272 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
Requested by Steve · project thread
Part of #25922 (the unpublish-and-delete item of ruling 6431234244 only; the designer strings (M) item and the 76 Console-only names stay on the card).
Clause-②:
yes (narrowing): a published package leaves the registry; ADR-0087 marker per the lane's rulesMetadata-protocol: none
维护者速读
@object-ui/app-shell标为private: true,移出 changesets 的 fixed 组;删除ui/examples/byo-backend-console、ui/examples/console-starter和ui/docs/app-shell-extraction-guide.md,并清掉指向它们的链接与索引。Console 和 23 个工作区引用方不动。@object-ui/app-shell(18.2 版本 PR 已把它记到 18.2.0,18.2 发布从版本提交 27f38ad 发出);之后由你执行npm deprecate。私有包仍按privatePackages.version: true单独记版本,点名它的待发 changeset 不用改。回滚 = revert 本 PR。改动 2979 行(上限 3000),其中 2824 行是删除。.changeset/25922-unpublish-app-shell.md(BREAKING 说明与 ADR-0087unpublished标记)、ui/scripts/check-changeset-fixed.mjs(私有包不在 fixed、不在 ignore 时的分类规则)、ui/packages/app-shell/package.json。node scripts/check-changeset-fixed.mjs && node scripts/check-adr-0087-registration.mjs --base origin/main,预期两行 ✓,后者点名not-required (unpublished)。ui/.claude/**的修改不在本 PR,见 Acceptance notes。)Why
Ruling 6431234244 on #25922 re-rules Q1 to B:
@object-ui/app-shellstops being published, and the two examples that consume it as a third-party host would, plus the extraction guide that describes that posture, are deleted. The split in 6431032267 is withdrawn.What changes
The package leaves npm.
ui/packages/app-shell/package.json:private: true, beside the18.2.0version the 18.2 Version PR set. Nothing else in the manifest moves; every workspace importer keepsworkspace:*..changeset/config.json:@object-ui/app-shellleaves thefixedgroup. The rootscripts/check-changeset-fixed.mjsrefuses an undeclared private member there, so it cannot stay. No hand-typed package count moves with it: docs(gates): take the re-typed counts out of the docs and retire the two gates that only held them #26511 took those counts out of the docs and retiredcheck-lockstep-package-count.ui/scripts/check-changeset-fixed.mjs(the ui roster gate, read by its test in Test UI): rule 1 required every package to be infixedor matched byignore. A private package outside both is now classified too, but only whileprivatePackages.versionis true. In that case Changesets versions it on its own and publishes it nowhere. Underversion: falseit would be treated as ignored, and the mixed-changeset failure rule 3 describes would follow, so it stays unclassified there.ignorewas not an option: before the 18.2 Version PR, 48 pending changesets named@object-ui/app-shellbeside published packages, andignoremakes any such changeset a mixed one. New unit case incheck-changeset-fixed.test.ts, covering both directions.The host-console posture leaves the tree.
ui/examples/byo-backend-console(11 files),ui/examples/console-starter(16 files, its two tests included),ui/docs/app-shell-extraction-guide.md.pnpm-lock.yamlloses their two importers (deletions only).ui/README.md(the Quick Start rows, the "Bring your own backend" section that taughtnpm install @object-ui/app-shell, the run-the-examples block, the package-table row),ui/examples/README.md,ui/examples/hello-world/README.md,ui/examples/schema-catalog/README.md,ui/CONTRIBUTING.md,ui/QUICK_REFERENCE.md(Examples section, published count 36 → 35 withapp-shellnamed among the private packages),ui/content/docs/guide/objectos-integration.mdx(the dead objectui-repo link),ui/packages/app-shell/README.md(a not-published notice, the install section, two example pointers), and three app-shell source comments that sent the reader toexamples/console-starter/src/App.tsx.ui/scripts/markdown-test-inputs.mjs: the retired guide leaves fourreadsentries (--audit: 73 declared entries, all present).tsconfig.tier-base.json: no package's build or type-check program reaches it any more (the deletedbyo-backend-consolewas the one real compile that did).turbo-build-inputs/turbo-type-check-inputsprescribe deleting the dead input, so$TURBO_ROOT$/tsconfig.tier-base.jsonleaves both tasks inui/turbo.objectui.jsonand$TURBO_ROOT$/ui/tsconfig.tier-base.jsonleaves the live rootturbo.json. The two header comments that counted its extenders say 2.Changeset.
.changeset/25922-unpublish-app-shell.md,@object-ui/app-shell: patch(Metadata-protocolnone), BREAKING banner, the FROM npm → TO none migration line, and the markeradr-0087: not-required (unpublished). The gate verifies that category mechanically: every package the changeset bumps isprivate: trueat HEAD. It states that18.2.0is the last published@object-ui/app-shell(the 18.2 Version PR versioned it before this change and the 18.2 publish ships it) and that the maintainer runsnpm deprecateafter that publish. The migration line names@object-ui/app-shell@18.2.0.Untouched, as ruled:
ui/apps/consoleand the 23ui/packages/*importers; the other@object-ui/*packages' publishing; the 76 Console-only names.Forced test edits (each follows the deletion or the private flag; none relaxes a check)
ui/scripts/__tests__/check-doc-snippet-types.test.ts: the rootdocs/*.mdleg's only real page was the retired guide. "listDocuments reaches them" and "the widening judges something" now prove the leg on a fixturedocs/PAGE.md: it is listed, covered and contributes a compiled block. Every real page the leg reaches must still be covered.ui/scripts/__tests__/check-doc-fence-languages.test.ts: same leg, same cause; the per-leg non-empty check reads the root leg on a fixture page.ui/scripts/__tests__/check-doc-links.test.ts:examplesscan floor 4 → 3 (the index, hello-world, schema-catalog READMEs).ui/scripts/__tests__/zero-test-member-exclusion-9106.test.ts: theexamples/byo-backend-consolerow leaves the recorded exclusion, as its own failure text prescribes for a member that left.ui/scripts/__tests__/side-effects-declaration-consistency.test.ts: the@object-ui/layoutalias tables areapps/console/vite.config.tsalone.ui/scripts/__tests__/check-type-check-coverage.test.ts: packages with tests outsidesrc/are@object-ui/example-schema-catalogalone.ui/scripts/__tests__/package-files-exist.test.ts: the license-text anti-vacuity floor 37 → 36 (36 measured,app-shellno longer publishes).ui/scripts/__tests__/quick-reference-commands-4149.test.ts: noexamples/*package declaresdevany more. The test asked for the section to be rewritten, not re-pinned. With no runnable example, it now pins the section's "No directory underexamples/is a dev server" sentence and refuses any example dev command. When an example grows adevscript, the sentence reds and the original per-example check takes over.ui/scripts/__tests__/check-changeset-fixed.test.ts: the new rule's unit case (above).Tests
After merging main past the 18.2 Version PR (#25640) and #26511, head
443aad7b:node scripts/check-changeset-fixed.mjs,node ui/scripts/check-changeset-fixed.mjs,pnpm run check:publish-smoke-pin,check:docs-spec-enumerations,check:overlay-whitelist-table,check:route-ledger-census,node scripts/check-adr-0087-registration.mjs --base origin/main(not-required (unpublished)),check-empty-changesetandcheck-changeset-no-major(--base origin/main),node ui/scripts/check-skills-paths.mjsandpnpm exec changeset status --since=origin/mainall exit 0. The full release plan assembled with@changesets/cli3.0.3's own read/config/assemble packages reads all 13 pending changesets with exit 0:@object-ui/app-shell18.2.0 → 18.2.1 on its own (private, publishes nothing), the fixed group 18.2.0 → 18.3.0.vitest runonquick-reference-commands-4149,check-changeset-fixed,check-doc-links,package-files-exist,check-skills-paths: 5 files, 198 tests passed.The readings below were measured at head
160fe489in the card thread's container.pnpm --dir ui exec vitest run scripts/__tests__/ --maxWorkers=2under the verify lock, after the Console build: Test Files 1 failed | 177 passed | 2 skipped (180), Tests 4 failed | 5053 passed. The 4 are allcheck-skills-paths.test.ts, one cause: the governed guide line in Acceptance notes. With that line's patch applied locally,check-skills-paths.test.tsis 35/35 andnode ui/scripts/check-skills-paths.mjsexits 0. The patch was then restored; it is not in this diff.pnpm exec turbo run build --filter=@object-ui/console --concurrency=2under the lock:Tasks: 70 successful, 70 total, VERDICT command-exit 0, and the tree was clean afterwards (sdui.manifest.jsonunchanged).node ui/scripts/markdown-test-inputs.mjs --audit: 109 candidate test files, all adjudicated; 73 declared entries, all present.Dogfood battery (the
(narrowing)arm owes it), final head160fe489:pnpm --workspace-concurrency=2 --filter '@objectstack/dogfood^...' build && pnpm --filter @objectstack/dogfood testunder the lock, VERDICT command-exit 1, Test Files 2 failed | 298 passed | 3 skipped (303), Tests 10 failed | 2522 passed | 18 skipped (2550). All 10 are outside this diff, which touches no file underpackages/rest,packages/qaorpackages/spec:authz-probe-blind-spot.test.ts(4:packages/rest/src/rest-route-ledger.tscontrols 81 vs pinned 80,rest-server.ts63/70 vs 62/69) andauthz-conformance.test.ts(6: the #17111 docblock-figure pins). Both census files last moved in 6a2866a on main, which added a route; the dogfood battery runs only on main's full schedule, so this reads as a main-side red, reported to the seat.Verification
Local subset, derived with
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackat160fe489(107 families) and run after the last commit; every exit code captured before any pipe.dispatch-gates --ran: exit 0, 107 accounted, 106 run, 1 NOT MEASURED
check-adr-0087-registration --base origin/main(not-required (unpublished)judged),check-changeset-fixed(109 public packages, 1 declared private member),check-changeset-no-major,check-empty-changeset,check:lockstep-package-count,check:publish-smoke-pin,check:published-files,check:turbo-task-graph,check:type-check-coverage,check:cross-package-test-inputsandcheck:pm-dispatch-gates(fast tier, 380 s).pnpm --filter @objectstack/spec run check:skill-examples: first exit 3 (prerequisite:@objectstack/client-reactunbuilt), then exit 0 afterpnpm --filter @objectstack/client-react build(264 prose examples type-check).pnpm check:dual-build-cjs-loads, exit 3 PREREQUISITE NOT MET (reads every packagedist/, which needs a whole-repo build). The diff touches no package build; CILint & Repo Gatesruns it.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran RECORD:107 derived famil(ies) accounted for — 106 run, 1 NOT-MEASURED.Every family CI runs is read from this PR's check runs; none was re-run locally to stand in for them.
Acceptance notes
ui/.claude/skills/objectui-contributor/guides/console-development.mdbullet that told contributors to forkexamples/console-starterwas rewritten in docs(ui-skills): the console guide names apps/console as the one host (#25922) #26484 (merged), socheck-skills-pathsis green here without this PR touchingui/.claude/**.@object-ui/app-shell: 48 at first; the 18.2 Version PR consumed them, and 2 others are pending now. None edited. A private package versions underprivatePackages.version: true, andchangeset status --since=origin/maincomputes a plan with@object-ui/app-shellversioned on its own (no refusal).check-empty-changeset: no changeset from the merge base modified or deleted..changeset/26095-publishing-metadata.mdhad its closing frontmatter delimiter glued to its last line, sochangeset statusexited 1 on main. fix(changeset): close the 26095 publishing-metadata changeset's frontmatter sochangeset versionparses again #26458 fixed it; the readings at443aad7babove ran on the unmodified tree.DefaultLoginPage/DefaultRegisterPagehave no in-repo mount (onlyconsole-startermounted them; the Console has its own pages). That falls under the card's internal tech-debt line, not this PR.plugin-view/ObjectView.tsx,plugin-list/ListView.tsx,plugin-detail/headerColor.ts,cli/doctor.ts, severalui/scriptsdocblocks) and the CHANGELOGs are left as written. Editing them is outside the claimed file surface, andObjectView.tsxis held by another card.Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses. (lint is CI's run)main, one pull request.packages/spectouched: n/a.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN
Generated by Claude Code