Skip to content

feat(spec)!: 移除从未实现的 GraphQL 面 — 不在产品计划 (#2462 后续) - #3562

Merged
os-zhuang merged 2 commits into
mainfrom
feat/remove-graphql-surface
Jul 27, 2026
Merged

feat(spec)!: 移除从未实现的 GraphQL 面 — 不在产品计划 (#2462 后续)#3562
os-zhuang merged 2 commits into
mainfrom
feat/remove-graphql-surface

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

决策背景

用户拍板:GraphQL 不在开发计划中,相关代码和文档直接删除

现状证据(与记忆/审计一致):GraphQL 自始至终 schema-only——spec 里 20+ 配置 schema(type/query/mutation/subscription/resolver/federation/persisted-query/rate-limit…)、handleGraphQL 恒 501(kernel.graphql 在 monorepo 从未被赋值)、三处挂载各自广告这个死端点(dispatcher if 链、dispatcher-plugin hono 路由、hono adapter)——"declared ≠ mounted ≠ implemented" 缝病的完整标本。

删除面

  • specapi/graphql.zod.ts + contracts/graphql-service.ts 整删;CoreServiceName/ApiProtocolType/查询方言/graphql-playground 枚举成员删;graphqlApi+network capability 布尔、discovery/router 路由字段删。BREAKING(照 feat(spec)!: prune dead ReportColumnSchema/ReportGroupingSchema exports + unread report chart groupBy (#3463) #3488 先例 major)。
  • runtimehandleGraphQL、if 链分支、两处 hono 挂载、discovery 广告、连带死亡的 resolveRequestExecutionContext 全删。
  • plugin-dev stub 家族、qa 一致性矩阵两行 + ratchet 高危 id + discover 模式 + identity pin + showcase 匿名面用例、expression ledger covers。
  • 生成物:api-surface(16 entries 重生)、json-schema manifest(22 键删)、references docs(graphql.mdx 自动删)+ 手写 docs 三处。

有意保留

  • external-datasource 的 'graphql' 协议选项——第三方系统可能以 GraphQL 对外,我们作为客户端连它是合法场景。
  • cloud 的保留字 slug 'graphql'(防撞名)。
  • objectui 自有类型里的死 'graphql' 联合成员 → 跨仓清理项(不阻塞本 PR)。

行为变化

POST /graphql 从恒 501 变 404(诚实状态:面不存在);匿名拒绝矩阵少两行(surface 消失非放开)。

验证

全 monorepo build+test 强制无缓存 131 任务全绿(spec 6675 / core 386 / runtime 647 / dogfood 60 / conformance 41 在内)。

关联 #2462

🤖 Generated with Claude Code

…ow-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>
@vercel

vercelBot commented Jul 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredJul 27, 2026 5:33am

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 8 package(s): packages/adapters, @objectstack/client, @objectstack/core, @objectstack/metadata-protocol, @objectstack/plugin-dev, packages/qa, @objectstack/runtime, @objectstack/spec.

123 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/actions-as-tools.mdx(via @objectstack/core)
  • content/docs/ai/agents.mdx(via @objectstack/spec)
  • content/docs/ai/knowledge-rag.mdx(via @objectstack/core)
  • content/docs/ai/natural-language-queries.mdx(via @objectstack/core)
  • content/docs/ai/skills-reference.mdx(via packages/client, @objectstack/spec)
  • content/docs/ai/skills.mdx(via @objectstack/spec)
  • content/docs/api/client-sdk.mdx(via @objectstack/client, @objectstack/spec)
  • content/docs/api/data-flow.mdx(via @objectstack/client)
  • content/docs/api/environment-routing.mdx(via @objectstack/client, @objectstack/spec)
  • content/docs/api/error-catalog.mdx(via @objectstack/client, @objectstack/spec)
  • content/docs/api/error-handling-client.mdx(via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx(via @objectstack/spec)
  • content/docs/api/index.mdx(via @objectstack/runtime, @objectstack/spec)
  • content/docs/api/wire-format.mdx(via @objectstack/runtime)
  • content/docs/automation/approvals.mdx(via packages/spec)
  • content/docs/automation/flows.mdx(via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx(via @objectstack/runtime, packages/spec)
  • content/docs/automation/hooks.mdx(via @objectstack/spec)
  • content/docs/automation/index.mdx(via @objectstack/spec)
  • content/docs/automation/webhooks.mdx(via @objectstack/core, @objectstack/spec)
  • content/docs/automation/workflows.mdx(via @objectstack/spec)
  • content/docs/concepts/architecture.mdx(via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx(via packages/spec)
  • content/docs/concepts/index.mdx(via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx(via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx(via @objectstack/metadata-protocol, packages/spec)
  • content/docs/concepts/north-star.mdx(via packages/core, packages/runtime, packages/spec)
  • content/docs/data-modeling/analytics.mdx(via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx(via @objectstack/runtime, @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx(via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx(via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx(via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx(via @objectstack/spec)
  • content/docs/data-modeling/index.mdx(via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx(via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx(via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx(via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx(via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx(via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx(via @objectstack/spec)
  • content/docs/deployment/cli.mdx(via @objectstack/spec)
  • content/docs/deployment/index.mdx(via @objectstack/runtime)
  • content/docs/deployment/migration-from-objectql.mdx(via @objectstack/core)
  • content/docs/deployment/production-readiness.mdx(via @objectstack/runtime)
  • content/docs/deployment/single-project-mode.mdx(via @objectstack/runtime)
  • content/docs/deployment/troubleshooting.mdx(via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx(via @objectstack/spec)
  • content/docs/deployment/vercel.mdx(via @objectstack/runtime)
  • content/docs/getting-started/build-with-claude-code.mdx(via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx(via @objectstack/spec)
  • content/docs/getting-started/examples.mdx(via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx(via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx(via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx(via @objectstack/client, @objectstack/runtime, @objectstack/spec)
  • content/docs/kernel/cluster.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx(via @objectstack/core, @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx(via packages/spec)
  • content/docs/kernel/index.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/data-service.mdx(via packages/client)
  • content/docs/kernel/runtime-services/email-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/examples.mdx(via @objectstack/core)
  • content/docs/kernel/runtime-services/index.mdx(via packages/client, packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx(via packages/spec)
  • content/docs/kernel/services-checklist.mdx(via @objectstack/core, @objectstack/spec)
  • content/docs/kernel/services.mdx(via @objectstack/core)
  • content/docs/permissions/authentication.mdx(via @objectstack/client, @objectstack/core, @objectstack/runtime)
  • content/docs/permissions/authorization.mdx(via packages/core, packages/qa, packages/runtime, @objectstack/spec)
  • content/docs/permissions/delegated-administration.mdx(via packages/qa)
  • content/docs/permissions/permission-sets.mdx(via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx(via @objectstack/spec)
  • content/docs/permissions/positions.mdx(via @objectstack/spec)
  • content/docs/permissions/rls.mdx(via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx(via @objectstack/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx(via @objectstack/spec)
  • content/docs/plugins/anatomy.mdx(via @objectstack/core)
  • content/docs/plugins/development.mdx(via @objectstack/core, @objectstack/spec)
  • content/docs/plugins/index.mdx(via @objectstack/core, @objectstack/spec)
  • content/docs/plugins/packages.mdx(via packages/adapters, @objectstack/client, @objectstack/core, @objectstack/plugin-dev, @objectstack/runtime, @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx(via @objectstack/spec)
  • content/docs/protocol/diagram.mdx(via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx(via @objectstack/core, @objectstack/spec)
  • content/docs/protocol/kernel/http-protocol.mdx(via @objectstack/runtime)
  • content/docs/protocol/kernel/i18n-standard.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx(via @objectstack/core, @objectstack/runtime, @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx(via @objectstack/core, @objectstack/runtime, @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx(via @objectstack/core, @objectstack/spec)
  • content/docs/protocol/kernel/realtime-protocol.mdx(via @objectstack/client)
  • content/docs/protocol/kernel/runtime-capabilities.mdx(via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx(via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx(via @objectstack/spec)
  • content/docs/releases/implementation-status.mdx(via @objectstack/client, @objectstack/core, @objectstack/runtime, @objectstack/spec)
  • content/docs/releases/index.mdx(via @objectstack/spec)
  • content/docs/releases/v12.mdx(via @objectstack/core, @objectstack/spec)
  • content/docs/releases/v13.mdx(via @objectstack/spec)
  • content/docs/releases/v15.mdx(via @objectstack/core)
  • content/docs/releases/v16.mdx(via @objectstack/client, @objectstack/spec)
  • content/docs/releases/v9.mdx(via @objectstack/spec)
  • content/docs/ui/actions.mdx(via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx(via @objectstack/spec)
  • content/docs/ui/dashboards.mdx(via @objectstack/spec)
  • content/docs/ui/forms.mdx(via @objectstack/spec)
  • content/docs/ui/index.mdx(via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx(via @objectstack/spec)
  • content/docs/ui/setup-app.mdx(via @objectstack/spec)
  • content/docs/ui/translations.mdx(via @objectstack/spec)
  • content/docs/ui/views.mdx(via @objectstack/spec)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

…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
os-zhuang merged commit 4631592 into mainJul 27, 2026
17 checks passed
@os-zhuang
os-zhuang deleted the feat/remove-graphql-surface branch July 27, 2026 05:46
os-zhuang added a commit that referenced this pull request Jul 27, 2026
…xture debris (#3586) (#3595)
The const described a route surface that never existed (/workflow,
/realtime listed; eight real prefixes missing) and was consumed by
nothing in the runtime — only its own tests and api-surface.json. Its
one real-world effect was underwriting CLIENT_SPEC_COMPLIANCE.md's false
"FULLY COMPLIANT" verdict (retired in #3571). The maintained,
guard-enforced source of truth is packages/runtime/src/route-ledger.ts.
Since the major train is loading now (#3562, #3581), the removal ships
directly instead of the deprecate-first interim step.
Also swept what #3562 left behind: registry test fixtures renamed from
graphql_api//graphql to honest OData naming, the tautological
config.graphql assertions dropped, the stale '"type": "graphql"'
JSDoc example corrected. Client's bare tsc -p is verified clean (the
TS2741 acceptance item — resolved by #3562's schema change, confirmed
here).
Closes#3586
Claude-Session: https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationprotocol:systemsize/xlteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@os-zhuang