Filed by the director seat (objectstack#12708, session_01AsCNgFBs8HCjwhyHQsFbx3) as the upstream payback card the maintainer's ruling on objectui#11088 (decision 1, letter A — raise the console first-screen ceiling now, pay it back at the source) names. ⛔ Not a claim.
What was measured (director seat, read-only, 2026-09-29)
- objectui's 17.5.0 bump (PR objectui#11086) puts the console's eager closure at 3563.2 KB gzip against a 3149.4 KB budget: +413.8 KB, almost all of it
@objectstack/spec's dist/index.js, which grew from 2,583,323 to 3,753,923 bytes (+45 %) between 17.4.0 and 17.5.0 (the objectui seat's reading of the two tarballs).
- Where it comes from, compared at the tag
@objectstack/spec@17.4.0 against main:
packages/spec/src/migrations/registry.ts: 1,100,789 → 1,936,632 bytes (+836 KB);
packages/spec/src/conversions/registry.ts: 391,787 → 559,713 bytes (+168 KB);
packages/spec/src as a whole: 16.5 MB → 22.3 MB.
Those two files are almost entirely string literals — the retirement rationale fragments and the os migrate meta guidance texts landed this month — and pass into dist nearly 1 : 1, so they account for roughly 1.0 MB of the 1.17 MB dist/index.js growth.
- Both are re-exported from the spec root entry:
packages/spec/src/index.ts:224 export * from './conversions/index.js' and :227 export * from './migrations/index.js'. The package's exports map has no ./migrations subpath (it has ./data, ./ui, ./automation, … ./shared).
A console first screen validates and renders metadata; it never runs a migration. It pays for that text today because the root entry carries it.
What this card asks
The registries leave the root entry and become their own subpath (for example @objectstack/spec/migrations, carrying conversions too, or two subpaths); the consumers that need them import the subpath: os migrate and the CLI's migration guidance, metadata-core's forward conversion, check:migration-registry and the other repo gates, and whatever else git grep finds importing ALL_CONVERSIONS / RETIRED_KEYS_BY_MAJOR / the semantic ledger from the root. Whether the root keeps a lazy re-export or drops the names is the seat's to decide with Clause-② in view: dropping names from the root entry is a narrowing for any consumer importing them from @objectstack/spec and needs the BREAKING banner and a migration note; a subpath added beside an unchanged root is a widening. Either way, measure first — the acceptance is a number, not a shape.
Acceptance
@objectstack/spec dist/index.js (and the ESM root chunk a bundler pulls) shrinks by about the registries' size; the pin reads the built root entry's byte count against a ceiling, or the eager-closure budget in objectui once the pin moves.
- objectui's eager closure drops back under the ceiling objectui#11088 D1 raised, so the raise is paid back; the objectui-side card (console lazy-loads the metadata-admin-only spec validation) carries the rest.
- No runtime behaviour changes:
os migrate meta, the metadata-core forward conversion and every repo gate read the same tables from the subpath.
Related: objectui#11088 (the ruling), objectui#11073 / PR objectui#11086 (the bump), objectui#5531 (the precedent raise), #20613 (unrelated, same day).
Filed by the director seat (objectstack#12708,
session_01AsCNgFBs8HCjwhyHQsFbx3) as the upstream payback card the maintainer's ruling on objectui#11088 (decision 1, letter A — raise the console first-screen ceiling now, pay it back at the source) names. ⛔ Not a claim.What was measured (director seat, read-only, 2026-09-29)
@objectstack/spec'sdist/index.js, which grew from 2,583,323 to 3,753,923 bytes (+45 %) between 17.4.0 and 17.5.0 (the objectui seat's reading of the two tarballs).@objectstack/spec@17.4.0againstmain:packages/spec/src/migrations/registry.ts: 1,100,789 → 1,936,632 bytes (+836 KB);packages/spec/src/conversions/registry.ts: 391,787 → 559,713 bytes (+168 KB);packages/spec/srcas a whole: 16.5 MB → 22.3 MB.Those two files are almost entirely string literals — the retirement rationale fragments and the
os migrate metaguidance texts landed this month — and pass intodistnearly 1 : 1, so they account for roughly 1.0 MB of the 1.17 MBdist/index.jsgrowth.packages/spec/src/index.ts:224export * from './conversions/index.js'and:227export * from './migrations/index.js'. The package'sexportsmap has no./migrationssubpath (it has./data,./ui,./automation, …./shared).A console first screen validates and renders metadata; it never runs a migration. It pays for that text today because the root entry carries it.
What this card asks
The registries leave the root entry and become their own subpath (for example
@objectstack/spec/migrations, carryingconversionstoo, or two subpaths); the consumers that need them import the subpath:os migrateand the CLI's migration guidance,metadata-core's forward conversion,check:migration-registryand the other repo gates, and whatever elsegit grepfinds importingALL_CONVERSIONS/RETIRED_KEYS_BY_MAJOR/ the semantic ledger from the root. Whether the root keeps a lazy re-export or drops the names is the seat's to decide withClause-②in view: dropping names from the root entry is a narrowing for any consumer importing them from@objectstack/specand needs the BREAKING banner and a migration note; a subpath added beside an unchanged root is a widening. Either way, measure first — the acceptance is a number, not a shape.Acceptance
@objectstack/specdist/index.js(and the ESM root chunk a bundler pulls) shrinks by about the registries' size; the pin reads the built root entry's byte count against a ceiling, or the eager-closure budget in objectui once the pin moves.os migrate meta, the metadata-core forward conversion and every repo gate read the same tables from the subpath.Related: objectui#11088 (the ruling), objectui#11073 / PR objectui#11086 (the bump), objectui#5531 (the precedent raise), #20613 (unrelated, same day).