Repository navigation
fix(scripts): ADR-0087 registration gate reads ui workspace packages and .tsx modules - #26319
Merged
Merged
Conversation
…mpiles .tsx The gate's hand-kept PACKAGE_ROOTS predated the ui/ import, so no @object-ui/* package had a workspace manifest here. It now reads the package globs from pnpm-workspace.yaml at the judged rev, through workspace-enumerator's parse. The export reader's Program also sets `jsx`, without which every .tsx module failed to resolve (TS6142) and predicate 2 could not locate any declaration behind it. bare-root-worklist: the three PACKAGE_ROOTS rows are deleted (stale) and the declaration battery's floor follows (126 -> 122). Claude-Session: https://claude.ai/code/session_01Am8eYNReiNP66D2JihPS1q Co-authored-by: Claude <noreply@anthropic.com>
…ases and shims Claude-Session: https://claude.ai/code/session_01Am8eYNReiNP66D2JihPS1q Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
席位核对 · ACCEPT · seat
|
This was referenced Oct 26, 2026
refactor(app-shell)!: retire the 54 root-entry exports that nothing outside the package names
#26219
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Steve · project thread
Part of #26220 (parts 1 and 2 of the claim. Part 3, predicate 4 on an
anyindex signature, needs ADR-0087 D8 wording and waits on the maintainer: see Acceptance notes).Clause-②: no
Metadata-protocol: none
What changes
pnpm-workspace.yaml.scripts/check-adr-0087-registration.mjsdrops its hand-keptPACKAGE_ROOTS(three roots that predate theui/import).workspaceGlobsAt(rev)reads the workspace file at the judged rev throughworkspace-enumerator.mjs'sparseWorkspaceGlobs(the repo's one parse of it), andisWorkspaceManifestmatches a listed<dir>/package.jsonagainst the<dir>/<dir>/*globs the wayexpandWorkspaceGlobexpands them. A missing workspace file, an empty block and a glob richer than<dir>/*throwWorkspaceEnumerationErrorinstead of reading as an empty workspace. A manifest nested below a member (a test fixturepackage.json) is no longer a member..tsxmodules. The card listed aliases, shim re-exports and.tsxdeclarations. Measured on refactor(app-shell)!: retire the 54 root-entry exports that nothing outside the package names #26219's branch, all 16 failures had one cause: the export reader's Program had nojsxoption, so TypeScript refused every import that resolves to a.tsxfile (TS6142) and the aliased symbol had no declaration. The alias (MetadataPageShell→PageShell.tsx) and the shim (useRecentItems.ts→RecentItemsProvider.tsx) already resolved once the target module loaded. The fix is one option,jsx: ts.JsxEmit.Preserve. The Program is stillnoEmitand only syntactic diagnostics are read.scripts/pm/bare-root-worklist.mjs: its threecheck-adr-0087-registration.mjs PACKAGE_ROOTS …rows are deleted, because the bare words they judged are gone (the self-test reported them STALE: "Delete the entry"). The declaration battery's floor follows, 126 → 122 (two cases per row; 128 → 122 on a run), with a comment in the dispatch-gates: a change underscripts/does not derivecheck-position-name-fold-loaders, though that gate scansscripts/— the local--ranreconciliation read 98/98 while CI's lint lane went red on it #24037 style.Battery rows
New battery
WS (#26220): ui workspace packages, .tsx modules, aliases and shims, 11 cases, floor 11, roster floor 55 → 56:ui/packages/*package retires a.tsxexport, an alias of a.tsxexport and a type behind a.tsshim underruntime-export-retired; green, and the verdict names each declaration where the compiler resolved it (ExpressionProvider.tsx,PageShell.tsx,RecentItemsProvider.tsx).ui/packages/*glob removed is refused ("no workspace manifest … named@object-ui/app-shell"), so membership comes from the workspace file only.pnpm-workspace.yamlthrows, never reads as an empty workspace.unpublishedon a privateui/apps/*package is green.isWorkspaceManifest(<dir>/*, bare<dir>, nested manifest refused,node_modulesand dot-dirs refused) and onworkspaceGlobsAtrefusingpackages/**.The self-test fixture repo now writes a
pnpm-workspace.yamlthat mirrors the real file's glob shapes (build({ workspace }),nullwrites none).Proof on the two held PRs
All with this branch's gate,
--base origin/main --head <their head>:5bf229f6: exit 0. All 54@object-ui/app-shelloperands verified. Before this change: exit 1 at predicate 1 on all 54; with part 1 only: exit 1 at predicate 2 on 16.e349c832: exit 1, now on predicate 4 only. Predicate 1 (@object-ui/types,@object-ui/componentspublish) passes. Predicate 4 is part 3, not done here.Tests and gates
git checkout HEAD --, blob hash re-checked): removing thejsxline turnsWS-G1andWS-G1bred with exactly refactor(app-shell)!: retire the 54 root-entry exports that nothing outside the package names #26219's message ("the declaration ofuseExpressionContextcannot be located at the merge base"), 2 failures; restored, green.node scripts/check-adr-0087-registration.mjs --self-test: exit 0, "575 assertions over real temp git repos" (564 before this branch), on headca0155f2.node scripts/pm/bare-root-worklist.mjs --self-test: exit 0.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack: 33 commands derived atca0155f2(after mergingorigin/main6ea429df). All 33 exit 0, includingnode scripts/check-adr-0087-registration.mjs --base origin/main(no declared-breaking changeset in this diff),pnpm check:changeset-gate-self-tests,pnpm check:pm-dispatch-gatesandnode scripts/pm/bare-root-worklist.mjs --self-test.--ran: 33 derived, 33 run, 0 NOT-MEASURED, 0 UNRUN. No package is touched, so there is no build closure and no package test or typecheck to run; no test file names either edited script.Acceptance notes
any/unknown/ no annotation at base, and a concrete type at HEAD", and says to never weaken it to make something else pass. fix(types,components)!: renderer props index signatures map to unknown, not any #26293'sComponentRendererPropsis a concrete interface at base ({ schema: TSchema; [key: string]: any; }), and its HEAD index signature isunknown, which D8 also counts as erased. Admitting it changes predicate 4's definition, so it needs D8 wording first (Tier H). The proposed limb: admit an exported interface whose surface at base and HEAD is identical except that ananyindex signature carries a non-anyvalue type at HEAD (unknownincluded); feat(runtime)!: 退役 ctx.user 的 roles 别名,positions 成为唯一拼法 (#6011) #6048's shape (a member removed) stays refused. The decision is with the maintainer; check-adr-0087-registration: PACKAGE_ROOTS omits ui/packages, ui/apps and ui/examples, so no @object-ui package can use the runtime-export-retired disposition #26220 remains open for it.scripts/check-skill-compatibility-version.mjscarries the same three-rootPACKAGE_ROOTS. It is outside this claim and left unchanged; whether ui packages belong to its population is that gate's question. Noted, not filed.skip-changeset).Generated by Claude Code