Skip to content

docs(spec): annotate schema-only event/subscription/connector enums as not-yet-enforced (#3197) - #3212

Merged
os-zhuang merged 1 commit into
mainfrom
claude/enum-audit-schema-only-9b28ed
Jul 18, 2026
Merged

docs(spec): annotate schema-only event/subscription/connector enums as not-yet-enforced (#3197)#3212
os-zhuang merged 1 commit into
mainfrom
claude/enum-audit-schema-only-9b28ed

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

概述

处理 #3197(PD #10 events 枚举审计的伞形跟踪 issue)。按 issue 要求先逐面确认了六条审计线索(全部在当前 main 上重新验证),然后对每个存续的 surface 采用选项 (c):在 schema 的文档注释和 .describe() 中加入明确的「尚未实现 / 尚未强制执行」说明,使作者不再被静默吞掉的元数据误导。不改变任何运行时行为或 schema 形状,纯文档性变更。

逐面确认结果

Surface确认结论处理
GraphQL subscriptions(api/graphql.zod.ts)✅ 确认:GraphQLSubscriptionConfigSchema 无任何运行时 importer;HTTP 入口仅处理 query/mutation(kernel.graphql 未赋值时 501),无订阅传输层JSDoc + events.describe() 注明
Connector webhooks(integration/connector.zod.ts)✅ 确认:AutomationEngine.registerConnector(engine.ts:873-891)只读 parsed.actions,webhooks 解析后整体存储但从不派发WebhookConfigSchema JSDoc + events/webhooks 字段 .describe() 注明
Connector triggers✅ 确认(线索归属修正:connector.zod.ts:546 只有 polling/webhook;stream 只存在于 trigger-registry.zod.ts:367)。def.triggers 无行为性消费者,唯一运行时触点是 ADR-0097 §5 的 authoring-time 拒绝规则两处 ConnectorTriggerSchema JSDoc + triggers 字段 .describe() 注明
RealtimeEventType(api/realtime.zod.ts)✅ 确认:零运行时 importer;引擎以字符串字面量发布 data.record.created/updated/deleted(与本枚举成员 record.* 甚至不匹配);field.changed 从未被发出JSDoc + 枚举 .describe() 注明
Record subscriptions(原 data/subscription.zod.ts)⚠️ 线索已过时:SubscriptionEventType/RecordSubscriptionSchema 已随 feed 契约退役(#1959)整体删除,无需处理。存续的 NotificationChannelSchema(现位于 system/notification.zod.ts)确认:实际注册的投递通道仅 inbox/email/sms;push/slack/teams/webhook 无实现,未注册通道会被 dispatcher 死信枚举 + contracts 镜像类型注明;另发现命名漂移(见下)
WebSocket protocol(api/websocket.zod.ts)✅ 确认:全仓库无 WS server 挂载(discovery 硬编码 websockets: false;handleUpgrade 刻意未实现,#2462;conformance 测试主动断言无传输层)模块头 + WebSocketMessageType JSDoc 注明

顺带发现(供后续决策,未在本 PR 内动)

  • NotificationChannelSchema 命名漂移:枚举含 in-app,而 service-messaging 实际注册的通道 id 是 inbox(且 inbox 不在枚举中)。将来把该枚举接入运行时前需要先对齐。已写入注释。
  • RealtimeEventType 的成员命名(record.*)与实际发出的事件名(data.record.*,来自 DataEventType)不一致 — 将来若要接线,大概率应直接收敛到 DataEventType 而不是保留两套。

验证

  • 六条线索均由并行审查在当前 main 上重新确认(importer 全量 grep + 运行时读点核对)。
  • pnpm gen:schema / gen:docs / gen:api-surface / gen:spec-changes 已重新生成,check:docs / check:api-surface / check:spec-changes 全部通过。
  • 受影响模块的 spec 测试:6 个文件 299 个用例全部通过。
  • @objectstack/spec patch changeset。

Closes#3197 的选项 (c) 路径;若维护者希望对某个 surface 改走 (a) 实现或 (b) 裁剪,可在该 issue 上按面拆分后续任务。

🤖 Generated with Claude Code

https://claude.ai/code/session_01ToaDWi9wbS2cHNWVyqgkrL


Generated by Claude Code

@vercel

vercelBot commented Jul 18, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
specErrorErrorJul 18, 2026 1:34pm

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tooling size/m labels Jul 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

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

  • content/docs/ai/agents.mdx(via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx(via @objectstack/spec)
  • content/docs/ai/skills.mdx(via @objectstack/spec)
  • content/docs/api/client-sdk.mdx(via @objectstack/spec)
  • content/docs/api/environment-routing.mdx(via @objectstack/spec)
  • content/docs/api/error-catalog.mdx(via @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/spec)
  • content/docs/automation/approvals.mdx(via packages/spec)
  • content/docs/automation/flows.mdx(via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx(via 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/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 packages/spec)
  • content/docs/concepts/north-star.mdx(via packages/spec)
  • content/docs/data-modeling/analytics.mdx(via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx(via @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/troubleshooting.mdx(via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx(via @objectstack/spec)
  • content/docs/getting-started/cli.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/validating-metadata.mdx(via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx(via @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/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/email-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/index.mdx(via 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/spec)
  • content/docs/permissions/authorization.mdx(via @objectstack/spec)
  • 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/development.mdx(via @objectstack/spec)
  • content/docs/plugins/index.mdx(via @objectstack/spec)
  • content/docs/plugins/packages.mdx(via @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/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx(via @objectstack/spec)
  • 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 packages/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/spec)
  • content/docs/releases/index.mdx(via @objectstack/spec)
  • content/docs/releases/v12.mdx(via @objectstack/spec)
  • content/docs/releases/v13.mdx(via @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.

…s not-yet-enforced (#3197)
Per-surface confirmation of the #3197 audit, then option (c) for every
surviving row: explicit 'not yet enforced / not yet implemented' notes in
the schemas' doc comments and .describe() texts, plus regenerated
reference docs. No runtime behavior or schema shape changes.
- GraphQLSubscriptionConfigSchema: no subscription transport; HTTP entry
serves query/mutation only
- websocket.zod.ts module + WebSocketMessageType: no WS server mounted
(#2462); future wire contract
- RealtimeEventType: zero runtime importers; engine emits data.record.*
literals that don't match the enum; field.changed never emitted
- connector.zod.ts webhooks/triggers: registerConnector reads only
actions; events/trigger defs parse but are never dispatched or polled
- trigger-registry.zod.ts ConnectorTriggerSchema/TriggerRegistrySchema:
unconsumed; 'stream' exists only here
- NotificationChannelSchema + NotificationChannel contract type:
implemented channels are inbox/email/sms; others dead-letter; enum says
'in-app' but the registered channel id is 'inbox'
SubscriptionEventType (audit row 5) was already removed by the
feed-contract retirement (#1959) — nothing left to annotate.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ToaDWi9wbS2cHNWVyqgkrL
@os-zhuang
os-zhuangforce-pushed the claude/enum-audit-schema-only-9b28ed branch from 42bf3a7 to e439ab2CompareJuly 18, 2026 13:29
@os-zhuang
os-zhuang marked this pull request as ready for review July 18, 2026 13:29
@os-zhuang
os-zhuang merged commit 3ad3dd5 into mainJul 18, 2026
16 of 17 checks passed
@os-zhuang
os-zhuang deleted the claude/enum-audit-schema-only-9b28ed branch July 18, 2026 13:41
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationprotocol:systemsize/mtooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Audit: several event/subscription/connector enums are schema-only (declared, no runtime consumer)

2 participants

@os-zhuang@claude