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

vercel Bot commented Jul 27, 2026

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Jul 27, 2026 5:33am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation protocol:system tests tooling size/xl labels Jul 27, 2026
@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 main Jul 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 free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation protocol:system size/xl tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant