feat(spec)!: remove the dead PortalSchema — never-enforced no-op projection (#3464)#3486
Merged
Merged
Conversation
…ection (#3464) PortalSchema and its StackSchema `portals` collection were a forward-looking design that was never wired to a runtime: no metadata-type registration, no dispatcher route family, no auth scope, and no LayoutDispatcher / NavigationBuilder / ThemeProvider consumer. Authoring a portal was already a documented no-op marked [EXPERIMENTAL — not enforced]. This implements issue #3464 disposition A (prune the dead schema) rather than B (build a runtime). Removes ui/portal.zod.ts + its test, the `portals` key on StackSchema / defineStack, every Portal* export, the showcase ClientPortal fixture, and the generated Portal artifacts (json-schema manifest keys, api-surface entries, reference doc). Hand-written docs/skills stop advertising portals as a live surface; the real guest_portal public-forms path is left untouched. Versioned minor per the #2377 enforce-or-remove precedent and the launch-window no-major guard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📓 Docs Drift CheckThis PR changes 1 package(s): 104 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
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.
What & why
Issue #3464 disposition A — prune.
PortalSchema(packages/spec/src/ui/portal.zod.ts, ~350 lines) was the largest dead schema in the spec: not registered as a metadata type, no dispatcher route family / auth scope / renderer consumer, and already marked[EXPERIMENTAL — not enforced]with "authoring a portal today is a no-op". This removes it rather than building a portal runtime (disposition B).Changes
ui/portal.zod.ts+ui/portal.test.ts; drop theportalscollection fromStackSchema/defineStack()and everyPortal*export. A comment records the removal next to theappskey (matching the ADR-0019/0020 removed-collection precedent).ClientPortalfixture (src/ui/portals/) and its config wiring. Theclient_portal_userposition andguest_portalpermission set stay — independent security metadata that only shares the word "portal".api-surface.json(−28),json-schema.manifest.json(−13 keys),content/docs/references/ui/portal.mdxremoved.content/docs/ui/index.mdx,skills/objectstack-platform/SKILL.md,docs/NEXT_STEP.md). The real public-forms path (guest_portal+ anonymous entry) is untouched — it never depended onPortalSchema.Versioning
@objectstack/specminor, matching the #2377 enforce-or-remove pruning precedent and satisfying the launch-window no-major guard (check-changeset-no-major.mjs). The changeset carries the migration note: authoring a portal had no runtime effect, so there is no behavioral migration — drop anyportals: [...]from adefineStack()config (now an excess-property type error). To project a scoped UI to external users today, composeapps/viewsand gate admission withpositions+ permission sets.Verification
turbo type-check --force(full repo, cache-busted) ✓@objectstack/specvitest: 257 files / 6850 tests ✓check:api-surface,check:docs,check:spec-changes,check:upgrade-guide,check:liveness,check:skill-refs,check:skill-docs✓check:doc-authoring,check:role-word,check:nul-bytes✓Fixes #3464.
🤖 Generated with Claude Code