Repository navigation
feat(types)!: drop the Cloud namespace re-export from the root entry (objectui#8225) - #8360
Conversation
…y (objectui#8225) `@object-ui/types` re-exported the whole `@objectstack/spec/cloud` subpath as the `Cloud` type namespace. The objectstack#16325 ruling (director batch #62, option B) takes the cloud control-plane contracts out of `@objectstack/spec`, and the spec's `./cloud` subpath is deleted upstream once cloud and objectui stop importing it. This is step 2 of 3: the single import in this repository. - `packages/types/src/index.ts`: the `export type * as Cloud` line is removed and the gap in the 15-line namespace family is marked in place so it reads as deliberate (14 re-exports remain) - changeset (`@object-ui/types` minor, breaking spelled out): the `Cloud` namespace is gone, no alias and no deprecation window - measured at `289d14687`: 0 `Cloud.` member accesses and 0 named `Cloud` imports from `@object-ui/types` across 4106 tracked ts/tsx files under `packages/**` and `apps/**` (PCRE census; the same regex fires on the consumed siblings `UI.` and `Data.`), 0 star re-exports of `@object-ui/types` in other packages, and 0 imports of the spec's cloud subpath outside that line
✅ 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
|
…d` literal left the tree (objectui#8225) `scripts/__tests__/vite-objectstack-spec-dist.test.ts` guards `collectSpecSpecifiers()` — the distinct set of `@objectstack/spec[/subpath]` literals under packages/apps/examples — with an anti-vacuity floor of 17. Dropping the `Cloud` namespace re-export removed the repository's only `'@objectstack/spec/cloud'` literal in that scanned tree, so the distinct count is 16 and the floor red on CI shard 1/4: `expected 16 to be greater than or equal to 17`. - floor 17 -> 16; the comment now names objectui#8225, the removed `/cloud` subpath and the objectstack#16325 chain, so a shrunken floor reads as deliberate rather than as a silently emptier scan - changeset: the census control clause cited the wrong-shape control (15 namespace re-export lines, which never exercise the pattern under test); it now cites the firing control that the PR body and report carry (the same PCRE pattern hits the consumed siblings `UI.` and `Data.`)
|
Patch round 1 (contract-review FAIL on one defect) pushed as
Sweep of every other counter of 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
|
Fixes #8225
Step 2 of 3 of the objectstack#16325 ruling (director batch #62, 2026-09-07, option B — maintainer verbatim, not translated: 「我一直觉得 cloud 的协议应该放在云端,没必要开源」): the cloud control-plane contracts leave
@objectstack/spec, and the spec's./cloudsubpath is deleted upstream once cloud and objectui stop importing it. Step 1 (objectstack-ai/cloud#2037) merged 2026-09-07T08:19Z; step 3 is objectstack#16325 itself and waits on this PR. Part of objectstack#16325.What changed
packages/types/src/index.ts:export type * as Cloud from '@objectstack/spec/cloud'is removed — the only real import of that subpath in this repository. The gap in the namespace family (14 re-exports remain of 15) is marked in place with a comment so the next reader sees it as deliberate..changeset/8225-drop-cloud-namespace-reexport.md:@object-ui/typesminor with the break spelled out (this repo never declares major — AGENTS.md 版本号策略). No alias and no deprecation window (maintainer 2026-08-27, verbatim: 「项目在创业阶段,用户也很少,短期不考虑渐进。」).Clause-② yes (a published type namespace is removed) —
needs:contract-reviewis on this PR. No runtime behaviour changes; the emitted JavaScript is identical.Premise re-check on the tree I got (
origin/main=289d14687, the branch base):1106and the comment's:1116were both stale)Cloud.member access: 0 hits over 4106 tracked ts/tsx files underpackages/**+apps/**(PCRE). BareCloudidentifier outside the declaring file: only lucide-react'sCloudicon, i18n strings, comments anddata-objectstack's unrelatedCloud*pin — nothing from@object-ui/types. Control: the same regex fires on the consumed siblingsUI.(1 file) andData.(4) and on a syntheticCloud.PackageManifestline (1).git grep -Ehas no\bat all (BSD regex): it returned 0 for every sibling too, so the census was redone with-P.__tests__/scriptsonly as direct spec imports in parity tests; nothing enumerates the block).packages/auth/README.md:220,packages/auth/src/createAuthenticatedFetch.ts:106,scripts/check-eager-closure-budget.mjs:109, two test-fixture strings, one pending changeset — all prose, none an import. Untouched.objectstack-ai/hotcrmpackage.jsoncarries no@object-ui/*dependency; code search for@object-ui/typesin that repo: 0 (channel control:objectstack→ 591 hits). No consumer there either.@object-ui/typesin other packages (surface inheritance)The "surface pin regenerated with the repo tooling" acceptance item
There is no such pin for
@object-ui/types. Searched: no api-extractor report;docs:api(typedoc) writes to an untrackeddocs/api/(onlycontent/docs/api/*.mdis tracked, and it does not mentionCloud);packages/types/README.mdnames no namespace; no test snapshots the root entry's export list. The nearest mechanisms arecheck:dist-completeness(runs inside the packagebuild, green below) andcheck:readme-exports(see the gate table). A stated absence, not an invented regeneration.Verification (final commit
bdbdebf81; the tree at every run below equals it)Declared narrowing — verification ran UNLOCKED.
scripts/pm/os-verify-lock.shcould not take the shared verify lock on this host: no usable
flock. The sharedverify lock is declared Linux-only (
flockis util-linux, and a stock macOS doesnot ship it), so the command below was run directly, without the lock —
a declared narrowing, not a silent one. No serialization guarantee held for this
run, nor for any sibling agent in this container while it ran.
(The same disclosure applies to the
type-check,vitestand reverse-verification runs below — every one went through that entry point and got the sameUNLOCKED (declared)verdict.)pnpm --filter @object-ui/types build(tsc +check-dist-completeness)VERDICT command-exit 0 · UNLOCKED (declared)· 7s shared-boxpnpm --filter @object-ui/types type-check(src + examples + tests tsconfigs)VERDICT command-exit 0 · UNLOCKED (declared)· 15s shared-boxpnpm exec vitest run packages/types/(repo root)Test Files 1 failed, 140 passed (141). The one red ishandler-keys-string-any-mirrors-7344.test.ts, a host false-red: its anchors shell out togit grep -Ewith\b, which Apple Git 2.50.1's BSD regex does not support (-E→ 0 files,-P→ 97 files for the same.actionsanchor; 0 vs 15 for theAppComponentSchemaimport anchor). The file is byte-identical toorigin/mainand reads nothing this PR touches; CI runs on Linux. Filed separately as a finding.pnpm --filter @object-ui/types lintno-explicit-anywarnings only)node scripts/check-changeset-presence.mjsnode scripts/check-changeset-fixed.mjs·check-changeset-no-major.mjsnode scripts/check-spec-symbol-derivation.mjsnode scripts/check-control-bytes.mjsnode scripts/check-governed-queue-guard.mjs --teston both pathsnode scripts/check-readme-exports.mjspackages/types/README.mdhas 7 self-import bindings and 0 mentionCloud, so this diff cannot move its verdict; CI builds first.pnpm --filter '...@object-ui/types' type-check, i.e. the whole repo)Cloudfrom@object-ui/types, and that census is 0 with a firing control (table above). CI'stype-checkjob runs the farm.Reverse verification (two legs, run after the commit; restore proven by blob hash and an empty
git diff HEAD)A scratch consumer outside the tree imports
CloudandSystemfrom the rebuiltpackages/types/dist/index.d.ts:b92fa6959: dist hasas Cloud1 → probe exit 0 (soCloud.PackageManifestwas a real member, and the probe reads the rebuilt d.ts rather than a cache)06d971e8b: dist hasas Cloud0 → probe exit 2 with exactlyTS2305: Module '"@object-ui/types"' has no exported member 'Cloud'; 0 errors mentionSystem(control)Direction: turned red, as expected.
Not in this PR
packages/types/**; its declared sites are disjoint from this one line (measured in the PM claim), and nothing beyondpackages/types/src/index.tswas touched insidepackages/types/.Generated by Claude Code