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:
|
xuyushun441-sys
pushed a commit
that referenced
this pull request
Jul 27, 2026
…phQL removal follow-through) - Changeset major → minor per the launch-window convention (the gate's own instruction; same treatment as #3486/#2377 — breaking rides minor without burning the whole fixed group's major). - Drop the api/graphql.zod.ts entry from the skill-references mapping and regenerate (check:skill-refs gate). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
os-zhuang
added a commit
that referenced
this pull request
Jul 27, 2026
* feat(spec)!: remove the never-implemented GraphQL surface (#2462 follow-on) Product decision: GraphQL is not on the plan. It was schema-only from day one — 20+ spec config schemas, an unconditionally-501 handleGraphQL (kernel.graphql never assigned in the monorepo), and THREE separate mounts (dispatcher if-chain, dispatcher-plugin hono route, hono adapter) advertising the dead endpoint: the "declared ≠ mounted ≠ implemented" seam disease in one picture. Removed: spec schemas/contracts/enum members (CoreServiceName, ApiProtocolType, query dialects, graphql-playground), capability booleans, discovery/router fields, all three runtime mounts, the discovery advertisement, plugin-dev stubs, the now-dead resolveRequestExecutionContext, qa conformance rows + ratchet pins + dogfood surface cases, generated JSON-schema manifest keys + reference docs, and handwritten doc mentions. Kept deliberately: external-datasource 'graphql' protocol option (third parties may speak GraphQL to us as a CLIENT) and cloud's reserved slug. objectui's own dead 'graphql' union member noted for cross-repo cleanup. Verified: full monorepo build+test forced, 131 tasks green (spec 6675, core 386, runtime 647, dogfood 60, conformance 41 among them); api-surface + json-schema manifest + reference docs regenerated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: launch-window changeset level + regenerate skill references (GraphQL removal follow-through) - Changeset major → minor per the launch-window convention (the gate's own instruction; same treatment as #3486/#2377 — breaking rides minor without burning the whole fixed group's major). - Drop the api/graphql.zod.ts entry from the skill-references mapping and regenerate (check:skill-refs gate). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This was referenced Jul 27, 2026
os-zhuang
added a commit
that referenced
this pull request
Jul 27, 2026
…drop re-exports — ADR-0076 Step 2 PR-C (#2462) (#3591) - assembleMetadataProtocol() in metadata-protocol is now the ONE assembly (objects + protocol shim + D12 degraded analytics); createMetadataProtocolPlugin (cloud/delegated) and ObjectQLPlugin's registerProtocol convenience mode both mount it (~112 inline lines deleted from the engine plugin; the shim return feeds the engine's mutation-rebind subscription synchronously). - objectql's six protocol re-exports removed (breaking-as-minor per launch-window, #3486/#3488 precedent). Five known importers repointed (rest x3 tests, runtime seed-loader re-export + its integration test); runtime gains the direct metadata-protocol dep. - Recipe correction (recorded on #2462): the objectql→metadata-protocol DEPENDENCY stays — ./core was already protocol-free, and forcing ~20 framework boot sites to mount two plugins is a pure boilerplate tax. Step 2's goal lands as "zero assembly ownership, single source". Verified: full build; objectql 1086, rest 380, runtime 653, dogfood 60/61 in parallel (semantic-roles 10s-hook flake passes solo). Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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