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

vercel Bot commented Jul 18, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
spec Error Error Jul 18, 2026 1:34pm

Request Review

@github-actions github-actions Bot 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-zhuang force-pushed the claude/enum-audit-schema-only-9b28ed branch from 42bf3a7 to e439ab2 Compare July 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 main Jul 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 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/m tooling

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