Skip to content

feat(spec)!: 退役 ui/ 五个没有承载键的交互配置文件 —— touch/dnd/keyboard/animation/offline (#4988) - #5321

Draft
os-zhuang wants to merge 3 commits into
mainfrom
claude/issue-4988-interaction-files-retirement
Draft

feat(spec)!: 退役 ui/ 五个没有承载键的交互配置文件 —— touch/dnd/keyboard/animation/offline (#4988)#5321
os-zhuang wants to merge 3 commits into
mainfrom
claude/issue-4988-interaction-files-retirement

Conversation

@os-zhuang

@os-zhuang os-zhuang commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Fixes #4988

ADR-0049 enforce-or-remove,按 2026-08-04 维护者裁决 A —— 退役 执行。走 spec-property-retirement 套件的整文件删除路线(route 3)。

先复核前提(rule 6)—— 三条测量在 origin/main f8cfbb4 上全部重跑

issue 的证据是 2026-08-03 的,不能直接当施工依据。三条独立测量重跑,每条都带同一次运行内通过的对照:

# 测量 结果 对照(同一次运行)
1 承载键(importer) 五个模块在 packages/spec/src 下的非测试 importer 只有 ui/index.ts;协议里不存在 touch: / dnd: / keyboard: / animation: / offline: 槽位 ——
2 图可达(BFS) 25 roots / 4742 nodes,21 个具名对象形状全部 UNREACHABLE PageSchema / WebhookSchema / StateMachineSchema 全部 direct;注入合成承载键后 21 个全部翻成 direct
3 调用点 objectstack / objectui / cloud 三仓除各自单测外.parse() / .safeParse() 见下「objectui 精确分类」

站点数复核:touch 7 + animation 4 + dnd 4 + keyboard 4 + offline 3 = 22,与 issue 一致。其中 21 个是具名对象 def,第 22 个是 TouchTargetConfig.hitSlop 的内联对象(不产生独立 def)—— 这解释了 21 与 22 的差。

存量实测:examples/**apps/** 里 authored 实例 = 0,而且是必然为 0:键根本写不出来。这就是不注册 D2 的依据。

⚠️ issue 说 authorable-surface.json 里是 58 个键,实测是 109 个。 我按实测走。

改了什么

五个文件整体删除(touch / dnd / keyboard / animation / offline.zod.ts.test.ts),32 个 def、64 个导出名、109 个 authorable 键、5 张参考文档随之退役。

整文件删除是逐文件核过的,不是假设(#4938 的教训)

套件明写「按 SCHEMA 退役,不是按文件」:文件里若还有活的兄弟导出,就只退形状、留文件。逐个核对结果是五个文件的全部 64 个导出名都在族内且都不可达,所以五个文件才都删。ui/notification.zod.ts(PR #5300 只摘走两个形状、留下三个活枚举)是反例,本次不碰。

为什么没有墓碑、也没有 D2

没有承载键 → 没有任何 shape 能承载 retiredKey() 墓碑,也没有任何 sys_metadata 行或源码可供 D2 改写。这是 route 3(nothing parses it → 既不墓碑也不 D2),与 #4834 / PR #4878(kernel plugin-runtime 族)、#4938 / PR #5293(HttpServerConfig)同形。注册的是 ADR-0087 D3 SemanticMigration ui-interaction-config-family-retired,并扩写 protocol-17 步骤的 rationale

⚠️#5021 的 theme animation两张面,已逐条核分离

ui/animation.zod.tsComponentAnimation / MotionConfig / PageTransition / AnimationTrigger 族,与 #5021(PR #5289,已在本分支 base 里)退役的 theme animation 块,是不同文件、不同 def、不同 manifest 条目。末段同步后在重算的基线上逐条断言过:#5021 的 6 个 theme 族 [RETIRED] 标记(ui/Theme:animationui/Theme:zIndexui/Typography:fontSize / fontWeight / letterSpacing / lineHeight)全部仍在,而本单删的是 ui/ComponentAnimation 等 def。两者互不覆盖。

路线自证:四张 ratchet 的读数(整 def 删除,必须变化)

套件明写枚举值收窄与整 def 删除的 ratchet 可见性相反。本次是整 def 删除,实测:

  • json-schema.manifest.json −32
  • authorable-surface.json −109
  • api-surface.json −64(32 type + 32 const)

而且这串输出本身就是路线的自证,原样留档 —— #2978 ratchet 先开火,要求有意删 manifest key:

❌ 32 previously published schema(s) disappeared from this build:
     - json-schema/ui/AnimationTrigger.json
     - json-schema/ui/ComponentAnimation.json
     - json-schema/ui/ConflictResolution.json
     ...

删完重跑,merge-base gate(对 origin/main,本 PR 改不动它)自行判为 #4650 路径 3:

ℹ️  21 baseline deletion(s) since f8cfbb4ef73d carry their own proof (#4650):
     - ui/ComponentAnimation:* (9 line(s)) — def no longer emitted by this build; whole-schema
       removals are adjudicated by json-schema.manifest.json (#2978) and check:api-surface.
     - ui/DndConfig:* (6 line(s)) — ...

21 个 def × 各自键数 = 109,与上面的 −109 对得上。

新 pin:缺席与存活双向,两边都承重

packages/spec/src/ui/interaction-config-retirement.test.ts,照 #4834 / PR #5300 的编译器 API 形制:按 resolved symbol identity 遍历 package.json exports map 的每个 public entry,带反空转守卫(#4642:本包 tsconfig 排除 *.test.ts,类型级断言是装饰品)。

存活侧和缺席侧一样承重:一次删过头的「退役」能满足全部缺席断言。存活清单里第一个就是 ResponsiveConfigSchema —— 它是同一批 13 的第六个文件,实测可达(page.components[].responsive),当时是被收紧而不是退役的,是最可能被顺手带走的那个。

反向验证:方向先预判后运行,两次都如预期,且落在不同的半边

破坏 预判 实测
ui/offline.zod.ts 连同 barrel 导出加回去 缺席侧红,存活侧保持绿 ✅ 6 条全红,全部落在缺席断言:OfflineStrategy must have zero holders after #4988: expected [ './ui' ] to deeply equal []ui/offline.zod.ts must be deleted: expected true to be false,以及 sync-retirement.test.ts 第 3 节 ConflictResolution ... expected [ './ui (src/ui/offline.zod.ts:72)' ] to deeply equal []。存活断言一条没红
模拟「删过头」:再把 export * from './responsive.zod' 摘掉 缺席侧保持绿,只有存活侧红 ✅ 只有 2 条红,全部落在 SURVIVE:ResponsiveConfigSchema must SURVIVE this retirement / must SURVIVE at runtime

两次破坏红在不同半边,这才是双向 pin 的意义 —— 单向 pin 对第二种错误是全绿的。

存量 pin 的三分法处置(不是批量重拼)

automation/sync-retirement.test.ts(#4738)—— 断言方向被反转,这是本 PR 最需要人看的一处

#4738 之所以把 connector 侧改名 ConnectorConflictResolution,正是因为裸名 ConflictResolutionui/offline.zod.ts 所有。那个 owner 现在没了。

原断言是 holders.map(h => h.sub)).toEqual(['./ui'])照原样留着它会为正确的理由变红,然后被人用错误的方式「修好」 —— 把它指向任何一个还有 ConflictResolution 的 entry,而那恰恰是该文件 C14 注释点名的「re-export 会对域说谎」。所以第 3 节整体改写为:裸名现在没有任何 owner,且任何域都不得悄悄收编它。#4738 的改名不撤销(把一个空出来的词要回来是第二次破坏性变更,收益为零)。

第 5 节同样改写:原写法用 holdersOf('ConflictResolution')[0].origin 当基准来证明 ConflictResolutionStrategy 是不同声明 —— owner 没了之后 [0] 直接抛异常,断言根本跑不到。改为断言这位「第四号亲戚」保住了自己的名字src/api/ 出身。

ui/i18n.test.ts —— 整体替换,不是删断言

原有 does NOT ride .merge() into the four no-door files 断言五个被删形状仍接受未声明键。这五个模块是全包仅有的 .merge(AriaPropsSchema.partial()) 站点。只删断言会留下一个「因为什么都没产出而绿」的空测试(PR #5046 记录的陷阱),所以改为在其真正生效的层面重新承重:全包 .merge(AriaPropsSchema…) 站点数为 0,带双向反空转(walk 真的扫到了 100+ 个 schema 文件;匹配器对合成源真的会命中),外加一条 .optional() 承载者仍在的正向断言。

存量留痕的一并改写

renamed-defs.ts(表项保留,源仍未 emit、目标仍 emit,只改注释)、automation/index.tsintegration/connector.zod.tsapi/router.zod.tstheme.zod.tstheme.test.ts(那条「绝不处方一个没有承载键的词表」的断言因本次退役而更强,不是变没用)、chart.zod.ts(两个被当阴性对照引用的形状已不存在,注明重跑需自备对照)、SYNC_ARCHITECTURE.mdcontent/docs/protocol/objectql/index.mdx

⚠️ 同一 v17 窗口内的既有 changeset 也改了一行

.changeset/datasync-conflict-dual-source-c13-c15.md(#4738)原话是「若你要客户端离线冲突策略:import { ConflictResolution } from '@objectstack/spec/ui'(本次未动)」。两份 changeset 在同一个 release 里发布,不改的话 CHANGELOG 会叫升级者去 import 一个已不存在的符号。已就地标注为「同窗口内已在 #4988 一并退役」。这是套件 §4「更正必须传播到每一行」的形状。

台账(#5220 格式)

数字一律 gen:strictness-ledger 整体重算,零手改。 476 → 454 sites,strip 221 → 199,no door 38 → 16,ui/ 192 → 170(strip 75 → 53),携带站点的文件 36 → 31

strict 列 249 不变(ui/ 112 不变) —— 这是预期读数,不是漏做:退役移走的是 strip 站点,关闭的门一个没碰,所以它不可能在任一方向上动这条 ratchet 的开口债。

反向 pin 要求闭合行必须删,五行 remaining-strip 行 + 一行 triage 行按 gate 逐条处置,去向另记在表下 —— 因为反向 pin 对零命中一视同仁,分不清「有意的地板」和「被退役掉的地板」(PR #5300sharing.zod.ts 记过同一件事)。

末段同步(os-regen 四步互保)

跑到一半 main 前进到 175d789(#5293 落地)。按 .gitattributes 四步执行:git merge origin/main(无 rebase / 无 force-push)→ 把全部 os-regen 路径 checkout origin/main --整体重算 → 逐条断言兄弟条目仍在:

OK   #4988 mine: 32 ui/ interaction defs absent from manifest
OK   #4988 mine: 0 authorable keys under those defs
OK   #4938 sibling: system/HttpServerConfig absent from manifest / authorable / api-surface
OK   #5021 sibling: 6 theme-family [RETIRED] markers all present
OK   positive control: ui/Page authorable keys present; ui/ResponsiveConfig still emitted

os-regen merge driver 自身也确认:all deferred artifacts are current — marker cleared

验证

check:generated             ✓ All 9 generated artifacts are up to date
check:liveness       PASS   check:empty-state     PASS   check:skill-examples  PASS
check:skill-refs     PASS   check:skill-docs      PASS   check:variant-docs    PASS
check:strictness-ledger PASS check:react-declaration-parity PASS

spec  typecheck: 0 errors
spec  test: 304 files / 7818 tests passed   (base 为 309 / 7955;−5 个随文件删除的测试文件,+1 个新 pin)

check-nul-bytes: OK (5344 files) + 对本分支全部改动文件逐个 grep -naP 控制字符,全净

⚠️ pnpm check:i18n 在本容器里是红的,但与本 PR 无因果关系,已带对照证明:同一命令在未改动的共享主检出(1b9a53b,与本分支无任何共同改动)上给出一模一样的 EXIT=1 与同样 9 个包;建过 @objectstack/cli 依赖后仍复现。本 PR 也没有改动该门的任何输入(零 .form.ts、零 translation bundle)。已归到既有的 #5217 并补了对照数据,未在本 PR 修。

⛔ 不在本 PR 范围

objectui 不碰(派单要求)。精确测量:38 个文件提到这些名字,其中真正跨仓耦合到 spec 的是 5 个:

文件 耦合方式 升级后
packages/react/src/hooks/useOffline.ts 产品源码,type import(OfflineStrategy / ConflictResolution / PersistStorage / EvictionPolicy 及两个 Schema 的 typeof) typecheck 红 —— 这是唯一一个非测试的耦合点
packages/types/src/index.ts 32 个名字的 export type { … } from '@objectstack/spec/ui' typecheck 红
packages/mobile/src/__tests__/gesture-spec-parity.test.tsx value import GestureTypeSchema 运行时红
packages/react/src/hooks/__tests__/animation-notification-spec-parity.test.tsx value import TransitionPresetSchema / EasingFunctionSchema 运行时红
packages/react/src/hooks/__tests__/offline-nav-performance-spec-parity.test.ts type import typecheck 红

packages/core/src/protocols/DndProtocol.ts / KeyboardProtocol.ts 等是本地同名声明,不 import spec,不受影响 —— 名字撞车不等于耦合。

一条给 objectui 适配方的线索:packages/types/src/__tests__/page-nav-misc-spec-parity.test.ts 的 ratchet 就是为这一刻设计的,注释原话是 "if the spec RETIRES one of these, the local dialect can take the natural name back. A workaround should not outlive its reason" —— 所以 TouchGestureType / TouchGestureConfig / PWAOfflineConfig 现在可以改回 GestureType / GestureConfig / OfflineConfig。那不是要糊过去的红,是本次退役解锁的一次正向清理。

content/docs/releases/ 未改动。


🤖 Generated with Claude Code

https://claude.ai/code/session_01ErbEDVAg1No9gdg1pgDAGB

os-zhuang and others added 3 commits August 4, 2026 18:51
touch / dnd / keyboard / animation / offline 五个模块声明了完整的交互配置词表
(22 个 z.object 站点、32 个 def、64 个导出名),而协议里**没有任何承载键** ——
没有 schema 声明过 `touch:` / `dnd:` / `keyboard:` / `animation:` / `offline:`
槽位,所以没有元数据文档能到达这些形状,也从来没有 parse。

三条独立测量在 origin/main 上重跑,每条的阳性对照都在同一次运行内通过:
静态(除 ui/index.ts barrel 外零 importer)、图可达(25 roots / 4742 nodes,
21 个具名对象形状全不可达,Page/Webhook/StateMachine 全部 direct,注入合成
承载键后 21 个全部翻转)、调用点(三仓零 parse)。

真正的缺陷在**文档侧**:authorable-surface.json 躺着 109 个键,
content/docs/references/ui/{touch,dnd,keyboard,animation,offline}.mdx 把它们
渲染成授权表 —— AI 作者照 dnd.mdx 往页面组件写 dnd: 块,会被
PageComponentSchema 以未知键拒绝。这是 PD#10 的宣传运行时不提供的能力,
不是 strictness 缺口:收紧只会精确校验一个没人够得到的槽位(#4583)。

按 spec-property-retirement 路线 3(nothing parses it → 既不墓碑也不 D2),
与 #4834 / #4938 同形;注册 ADR-0087 D3 SemanticMigration
`ui-interaction-config-family-retired`,并扩写 protocol-17 步骤的 rationale。

⚠️ ui/animation.zod.ts 与 #5021 退役的 theme animation 块是两张面:不同文件、
不同 def、不同 manifest 条目。那一张有承载键、走墓碑;这一张没有、走删除。

Fixes #4988

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ErbEDVAg1No9gdg1pgDAGB
按 .gitattributes 的 os-regen 四步互保执行:merge origin/main → 把全部
os-regen 路径 checkout 回 origin/main → 整体重算 → 断言兄弟条目仍在。

互保断言(重算后的基线上实测):
- 本单 #4988:32 个 ui/ 交互 def 不在 manifest,109 个 authorable 键为 0;
- 兄弟 #4938 / PR #5293:system/HttpServerConfig 三张表全部仍为删除态;
- 兄弟 #5021 / PR #5289:6 个 theme 族 [RETIRED] 标记全部仍在
  (ui/Theme:animation、ui/Theme:zIndex、ui/Typography:fontSize/fontWeight/
  letterSpacing/lineHeight)—— 与本单删除的 ui/ComponentAnimation 一族是
  两张互不相干的面,名字撞车但条目分离,已逐条核对;
- 阳性对照:ui/Page 的 authorable 键仍在,ui/ResponsiveConfig 仍被 emit。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ErbEDVAg1No9gdg1pgDAGB
@vercel

vercel Bot commented Aug 4, 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 Aug 4, 2026 7:21pm

Request Review

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

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

107 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 @objectstack/spec)
  • content/docs/automation/connectors.mdx (via @objectstack/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 @objectstack/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/cli.mdx (via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx (via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx (via @objectstack/spec)
  • 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/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/kernel/services.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/http-protocol.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/index.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/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/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/v16.mdx (via @objectstack/spec)
  • content/docs/releases/v17.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.

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:ui size/xl tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ui/ 五个交互配置文件(22 个 z.object 站点)没有任何承载键:实测「无授权门」,按 ADR-0049 定去留

1 participant