Repository navigation
Commit 6a7c0fe
<!-- claude-projects-attribution: {"github_login":"os-steve"} -->
_Requested by **Steve** · [project
thread](https://claude.ai/code/project/chan_01FdL1XeUyvVNxLreh3F4Qi9?thread=cmsg_01FdL1XeUyvVNxLreh3F4Qi97Wh4Pf8UgMzHvahNM6Rh28)_
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 rules
Metadata-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
个工作区引用方不动。
- 为什么改:执行 #25922 的重裁 Q1 = B(6431234244):「本项目的组件就是为 objectos
console服务的,可定制console暂时没有业务需求,可以废弃」「相关例子也可以删除」。
- 风险与回滚:18.2.0 是 npm 上最后一个发布的 `@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-0087
`unpublished` 标记)、`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-shell`
stops 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 the
`18.2.0` version the 18.2 Version PR set. Nothing else in the manifest
moves; every workspace importer keeps `workspace:*`.
- `.changeset/config.json`: `@object-ui/app-shell` leaves the `fixed`
group. The root `scripts/check-changeset-fixed.mjs` refuses an
undeclared private member there, so it cannot stay. No hand-typed
package count moves with it: #26511 took those counts out of the docs
and retired `check-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 in `fixed` or
matched by `ignore`. A private package outside both is now classified
too, but only while `privatePackages.version` is true. In that case
Changesets versions it on its own and publishes it nowhere. Under
`version: false` it would be treated as ignored, and the mixed-changeset
failure rule 3 describes would follow, so it stays unclassified there.
`ignore` was not an option: before the 18.2 Version PR, 48 pending
changesets named `@object-ui/app-shell` beside published packages, and
`ignore` makes any such changeset a mixed one. New unit case in
`check-changeset-fixed.test.ts`, covering both directions.
**The host-console posture leaves the tree.**
- Deleted: `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.yaml` loses their
two importers (deletions only).
- Links and indexes: `ui/README.md` (the Quick Start rows, the "Bring
your own backend" section that taught `npm 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 with
`app-shell` named 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 to `examples/console-starter/src/App.tsx`.
- `ui/scripts/markdown-test-inputs.mjs`: the retired guide leaves four
`reads` entries (`--audit`: 73 declared entries, all present).
- `tsconfig.tier-base.json`: no package's build or type-check program
reaches it any more (the deleted `byo-backend-console` was the one real
compile that did). `turbo-build-inputs` / `turbo-type-check-inputs`
prescribe deleting the dead input, so
`$TURBO_ROOT$/tsconfig.tier-base.json` leaves both tasks in
`ui/turbo.objectui.json` and `$TURBO_ROOT$/ui/tsconfig.tier-base.json`
leaves the live root `turbo.json`. The two header comments that counted
its extenders say 2.
**Changeset.** `.changeset/25922-unpublish-app-shell.md`,
`@object-ui/app-shell: patch` (Metadata-protocol `none`), BREAKING
banner, the FROM npm → TO none migration line, and the marker `adr-0087:
not-required (unpublished)`. The gate verifies that category
mechanically: every package the changeset bumps is `private: true` at
HEAD. It states that `18.2.0` is 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 runs `npm
deprecate` after that publish. The migration line names
`@object-ui/app-shell@18.2.0`.
**Untouched, as ruled:** `ui/apps/console` and the 23 `ui/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 root
`docs/*.md` leg's only real page was the retired guide. "listDocuments
reaches them" and "the widening judges something" now prove the leg on a
fixture `docs/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`: `examples` scan floor
4 → 3 (the index, hello-world, schema-catalog READMEs).
- `ui/scripts/__tests__/zero-test-member-exclusion-9106.test.ts`: the
`examples/byo-backend-console` row 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/layout` alias tables are `apps/console/vite.config.ts`
alone.
- `ui/scripts/__tests__/check-type-check-coverage.test.ts`: packages
with tests outside `src/` are `@object-ui/example-schema-catalog` alone.
- `ui/scripts/__tests__/package-files-exist.test.ts`: the license-text
anti-vacuity floor 37 → 36 (36 measured, `app-shell` no longer
publishes).
- `ui/scripts/__tests__/quick-reference-commands-4149.test.ts`: no
`examples/*` package declares `dev` any 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 under `examples/` is a dev server"
sentence and refuses any example dev command. When an example grows a
`dev` script, 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-changeset` and
`check-changeset-no-major` (`--base origin/main`), `node
ui/scripts/check-skills-paths.mjs` and `pnpm exec changeset status
--since=origin/main` all exit 0. The full release plan assembled with
`@changesets/cli` 3.0.3's own read/config/assemble packages reads all 13
pending changesets with exit 0: `@object-ui/app-shell` 18.2.0 → 18.2.1
on its own (private, publishes nothing), the fixed group 18.2.0 →
18.3.0. `vitest run` on `quick-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 `160fe489` in the card thread's
container.
- `pnpm --dir ui exec vitest run scripts/__tests__/ --maxWorkers=2`
under the verify lock, after the Console build: Test Files 1 failed |
177 passed | 2 skipped (180), Tests 4 failed | 5053 passed. The 4 are
all `check-skills-paths.test.ts`, one cause: the governed guide line in
Acceptance notes. With that line's patch applied locally,
`check-skills-paths.test.ts` is 35/35 and `node
ui/scripts/check-skills-paths.mjs` exits 0. The patch was then restored;
it is not in this diff.
- Console build: `pnpm exec turbo run build --filter=@object-ui/console
--concurrency=2` under the lock: `Tasks: 70 successful, 70 total`,
VERDICT command-exit 0, and the tree was clean afterwards
(`sdui.manifest.json` unchanged).
- `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 head `160fe489`:
`pnpm --workspace-concurrency=2 --filter '@objectstack/dogfood^...'
build && pnpm --filter @objectstack/dogfood test` under 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 under `packages/rest`,
`packages/qa` or `packages/spec`: `authz-probe-blind-spot.test.ts` (4:
`packages/rest/src/rest-route-ledger.ts` controls 81 vs pinned 80,
`rest-server.ts` 63/70 vs 62/69) and `authz-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/objectstack` at `160fe489` (107
families) and run after the last commit; every exit code captured before
any pipe.
<details><summary>dispatch-gates --ran: exit 0, 107 accounted, 106 run,
1 NOT MEASURED</summary>
- 105 commands exit 0, including `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-inputs` and
`check:pm-dispatch-gates` (fast tier, 380 s).
- `pnpm --filter @objectstack/spec run check:skill-examples`: first exit
3 (prerequisite: `@objectstack/client-react` unbuilt), then exit 0 after
`pnpm --filter @objectstack/client-react build` (264 prose examples
type-check).
- NOT MEASURED: `pnpm check:dual-build-cjs-loads`, exit 3 PREREQUISITE
NOT MET (reads every package `dist/`, which needs a whole-repo build).
The diff touches no package build; CI `Lint & Repo Gates` runs it.
- `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack
--ran RECORD`: `107 derived famil(ies) accounted for — 106 run, 1
NOT-MEASURED`.
</details>
Every family CI runs is read from this PR's check runs; none was re-run
locally to stand in for them.
## Acceptance notes
- **Governed follow-up, landed separately (Tier H).** The
`ui/.claude/skills/objectui-contributor/guides/console-development.md`
bullet that told contributors to fork `examples/console-starter` was
rewritten in #26484 (merged), so `check-skills-paths` is green here
without this PR touching `ui/.claude/**`.
- **Pending changesets naming `@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 under `privatePackages.version:
true`, and `changeset status --since=origin/main` computes a plan with
`@object-ui/app-shell` versioned on its own (no refusal).
`check-empty-changeset`: no changeset from the merge base modified or
deleted.
- **Found on main earlier, since fixed there:**
`.changeset/26095-publishing-metadata.md` had its closing frontmatter
delimiter glued to its last line, so `changeset status` exited 1 on
main. #26458 fixed it; the readings at `443aad7b` above ran on the
unmodified tree.
- After this PR, `DefaultLoginPage` / `DefaultRegisterPage` have no
in-repo mount (only `console-starter` mounted them; the Console has its
own pages). That falls under the card's internal tech-debt line, not
this PR.
- Comments and test docblocks in other packages that mention the deleted
examples historically (`plugin-view/ObjectView.tsx`,
`plugin-list/ListView.tsx`, `plugin-detail/headerColor.ts`,
`cli/doctor.ts`, several `ui/scripts` docblocks) and the CHANGELOGs are
left as written. Editing them is outside the claimed file surface, and
`ObjectView.tsx` is held by another card.
- Diff size: 155 additions + 2824 deletions = 2979 changed lines, under
the 3,000-line Tier H threshold.
## Human Minimum
- [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic.
(not touched)
- [x] 2. Every name I added uses the casing for its kind.
- [x] 3. No formatter ran; `pnpm lint` passes. (lint is CI's run)
- [x] 4. One issue, one branch off an up-to-date `main`, one pull
request.
- [x] 5. A change that publishes carries a changeset, and both
declaration lines are filled in here and in the changeset.
- [x] 6. `packages/spec` touched: n/a.
- [x] 7. No hand edits to `content/docs/references/`,
`packages/*/CHANGELOG.md` or `content/docs/releases/`.
- [x] 8. Title, body and comments are in English.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN
---
_Generated by [Claude
Code](https://claude.ai/code/session_01ADHkmQmtHYkx1Ve9ob2ikN)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent f48aa45 commit 6a7c0fe
57 files changed
Lines changed: 155 additions & 2824 deletions
File tree
- .changeset
- ui
- content/docs/guide
- docs
- examples
- byo-backend-console
- src
- console-starter
- src
- test
- hello-world
- schema-catalog
- packages/app-shell
- src
- console
- auth
- scripts
- __tests__
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
85 | 84 | | |
86 | 85 | | |
87 | 86 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
47 | 46 | | |
48 | 47 | | |
49 | 48 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | 102 | | |
107 | 103 | | |
108 | 104 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
66 | | - | |
| 66 | + | |
67 | 67 | | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
| 68 | + | |
74 | 69 | | |
75 | | - | |
76 | | - | |
| 70 | + | |
| 71 | + | |
77 | 72 | | |
78 | 73 | | |
79 | 74 | | |
| |||
87 | 82 | | |
88 | 83 | | |
89 | 84 | | |
90 | | - | |
| 85 | + | |
91 | 86 | | |
92 | 87 | | |
93 | 88 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
60 | | - | |
61 | 59 | | |
62 | 60 | | |
63 | 61 | | |
| |||
115 | 113 | | |
116 | 114 | | |
117 | 115 | | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | 116 | | |
160 | 117 | | |
161 | 118 | | |
| |||
167 | 124 | | |
168 | 125 | | |
169 | 126 | | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
| 127 | + | |
179 | 128 | | |
180 | | - | |
181 | | - | |
| 129 | + | |
| 130 | + | |
182 | 131 | | |
183 | 132 | | |
184 | 133 | | |
| |||
378 | 327 | | |
379 | 328 | | |
380 | 329 | | |
381 | | - | |
| 330 | + | |
382 | 331 | | |
383 | 332 | | |
384 | 333 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
681 | 681 | | |
682 | 682 | | |
683 | 683 | | |
684 | | - | |
685 | 684 | | |
686 | 685 | | |
687 | 686 | | |
| |||
0 commit comments