Skip to content

docs(skills): type three marked fences' schema as SchemaRendererProps['schema'] (objectui#11543) - #11558

Draft
objectstack-fleet[bot] wants to merge 1 commit into
mainfrom
claude/issue-11543-skill-fences-v1
Draft

objectstack-fleet[bot] wants to merge 1 commit into
mainfrom
claude/issue-11543-skill-fences-v1

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #11543
Clause-②: no

What

Three marked (os:check) tsx fences in the published objectui skill guides declared schema: BaseSchema and passed it to SchemaRenderer:

  • skills/objectui/guides/auth-permissions.md (the ContactsPage fence)
  • skills/objectui/guides/data-integration.md (the Prototype fence)
  • skills/objectui/guides/schema-expressions.md (the Page fence)

V1 (objectui#11466, PR #11512) narrows the schema prop to the declared-node union, which refuses a BaseSchema with TS2322. So Skill Example Check is red on PR #11512.

This PR is the card's route B, exactly. Each fence now declares the prop's own type, imported as a type from @object-ui/react:

import type { SchemaRendererProps } from '@object-ui/react'

declare const schema: SchemaRendererProps['schema']

It replaces import type { BaseSchema } from '@object-ui/types' and declare const schema: BaseSchema. BaseSchema had no other use in any of the three fences, so its import goes. The type compiles on main today and after V1 lands, and it follows the prop by reference.

  • Line-neutral: 3 files, +6 / −6.
  • ⛔ No os:check marker was removed or altered. Per file, the marker count is equal at the base and at the head: 6, 9 and 32.
  • No other file is touched.

Measured (head 2f2205315, base 154075ab1)

The skill-example gate is node scripts/check-skill-examples.mjs (pnpm check:skill-examples, the Skill Example Check job in skill-examples.yml). Each leg first built the packages the gate's own --build-filter names (turbo, 29 of 29 tasks), so the fences were judged against the built dist/*.d.ts. The gate's RESOLUTION control confirmed that.

leg tree gate verdict
control main 154075ab1, unchanged exit 0, Semantic phase: 18 of 18 ts fence(s) judged, 0 failed.
this PR main plus this change (2f2205315) exit 0, Semantic phase: 18 of 18 ts fence(s) judged, 0 failed.
probe control PR #11512's head fab635a2d, unchanged exit 1, Semantic phase: 18 of 18 ts fence(s) judged, 3 failed. These are the three TS2322 failures, one in each of the three guides.
probe PR #11512's head fab635a2d plus this change exit 0, Semantic phase: 18 of 18 ts fence(s) judged, 0 failed.
  • The probe ran in a throwaway detached worktree. The change was applied as this commit's patch, and on disk BaseSchema read 0 and SchemaRendererProps['schema'] read 1 in each file. Afterwards the probe was restored with git checkout HEAD (git diff HEAD read 0 bytes) and removed without --force. Nothing from it was pushed.
  • --self-test on main: exit 0, 60 cases pass. --list at the head shows all three fences as marked pass.
  • Tests that read these guides, taken from node scripts/markdown-test-inputs.mjs (all three paths are recorded test inputs), plus two more that git grep names. They ran from the repo root at 2f2205315: Test Files 14 passed (14), Tests 394 passed (394).
  • Every one of these gates exits 0:
    • check-skills-paths
    • check-control-bytes
    • check-shell-escape-residue
    • check-skill-eval-tokens
    • check-new-cross-file-line-citations (0 new)
    • check-doc-fence-languages
    • check-doc-links
    • check-changeset-presence ("no changeset is owed": skills/** is no released package's source)
  • Governed-queue guard predicate, node scripts/check-governed-queue-guard.mjs --test on the three paths: exit 3, GOVERNED — 3 of 3 path(s) are on a governed surface (skills/**, the published skills catalog). The control path packages/react/src/index.ts reads NOT GOVERNED, exit 0.
  • Skills line readings:
    • Per file, base → head: auth-permissions.md 409 → 409, data-integration.md 515 → 515, schema-expressions.md 639 → 639.
    • Whole package: all skills/**/SKILL.md 142 → 142 (one file), and all of skills/objectui/** 5418 → 5418.
    • objectui carries no line ratchet over skills/**. objectstack's check-skill-line-ratchet.mjs covers objectstack's own instruction files only.

Governed landing

skills/** is a governed surface, so this PR stays a draft until an authorized approval (os-zhuang / hotlong). The claiming seat lands it through the merge queue. The author of this draft does not flip it ready, request reviews, arm auto-merge or merge it.

Sequencing, from the card:

维护者速读(草稿)

改了什么

  • 三份对外发布的 objectui 技能指南(权限、数据集成、表达式)里,各有一段受门禁检查的示例代码。
  • 这三段示例把传给 SchemaRenderer 的 schema 的类型标注,从 BaseSchema 换成渲染器自身的入参类型 SchemaRendererProps['schema']。
  • 每段只改两行(换一个 import、换一个类型),三个文件合计 +6 / −6,行数不变。
  • 门禁标记一个没动,其它文件一个没碰。

为什么改

风险与代价(含回滚)

  • 只改文档示例,不改任何发布包的源码,不发版,不需要 changeset。
  • 风险很低。代价是示例的读者看到的是 SchemaRendererProps['schema'] 这种索引类型写法,比 BaseSchema 稍微抽象一些。
  • 回滚:revert 这一个提交即可。但只要 V1 已经落地,回滚就会让这三段示例重新编译报错。

席位意见

你要做的

  • 读一遍上面三处两行的改动。认可就在本 PR 上留一条 APPROVED review(os-zhuang 或 hotlong 账号)。
  • 批准之后,由认领席位把它翻成 ready 并入合并队列落地,你不需要再做别的。

Acceptance notes

Implemented by an os-dev run dispatched from the director seat, session session_016tKoy8NJa35Yih1FdzrVmn.


Generated by Claude Code

…['schema'] (objectui#11543)

Three `os:check` fences in the objectui skill guides (auth-permissions,
data-integration, schema-expressions) declared `schema: BaseSchema` and
passed it to `SchemaRenderer`. V1 (objectui#11466) narrows that prop to
the declared-node union, which refuses a `BaseSchema` with TS2322, so the
Skill Example Check goes red on V1's branch.

Each fence now declares the prop's own type, `SchemaRendererProps['schema']`,
imported as a type from `@object-ui/react`. It compiles on main today and
after V1 lands, and it follows the prop by reference. The `os:check`
markers are untouched; the edit is line-neutral.

Claude-Session: https://claude.ai/code/session_016tKoy8NJa35Yih1FdzrVmn
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

changeset-claim-re-read

⚠️ 1 pending changeset(s) describe a file this change touches

Their bodies publish verbatim into the CHANGELOG at the next release, so this is a request to re-read them against your diff — addressed here because you are the one seat that can answer it without re-deriving anything.

⛔ Nothing here blocks, and nothing here is a verdict on your change. This gate exits 0, is not a required context, and judges name resolution, never meaning: it asked whether a pending body names a file you touched. "Is this sentence still true?" is the one question it will not answer, and the one you are being asked to answer.

.changeset/5120-retire-data-table-name-alias.md

  • names skills/objectui/guides/data-integration.md → skills/objectui/guides/data-integration.md — edited by this change

    The two published skill guides that taught the name spelling (skills/objectui/guides/data-integration.md, schema-expressions.md) migrate in this same release, so the platform never refuses a spelling it still ships.

  • names schema-expressions.md → skills/objectui/guides/schema-expressions.md — edited by this change

    The two published skill guides that taught the name spelling (skills/objectui/guides/data-integration.md, schema-expressions.md) migrate in this same release, so the platform never refuses a spelling it still ships.

Read the paragraph, not the line: both false halves of the objectui#8617 claim sat in one paragraph, and correcting either alone would have left it asserting the same wrong thing.

If a claim did go false, correct the body. That is precedented and prose-only, frontmatter untouched; check-changeset-overwrite.mjs will report the correction as its own case 2 ("correcting a declaration on purpose … legitimate"), which is the intended shape — one gate asks for the read, the other records the write.

Not covered, stated so nobody reads this as more: a born-false claim that spells no line address at all (objectui#9495 coordinated one by ORDINAL — "a grep finds that member first" — and deciding that means reading what the sentence means), a claim spelled as a symbol or a package rather than a backticked file name, and a file named ambiguously.

Compared the checked-out tree with d0c0c7fe9 (merge-base with origin/main): 3 file(s) changed outside .changeset/, read against 2084 pending declaration(s) that publish a body (2718 pending in total). · run

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

维护者速读

From the director seat, summon #32 (session_016tKoy8NJa35Yih1FdzrVmn), claim 5970147074 on objectui#11543.

改了什么

  • 三份对外发布的 objectui 技能指南(权限、数据集成、表达式)里,各有一段受门禁检查的示例代码。
  • 每段示例把传给 SchemaRenderer 的 schema 的类型标注,从 BaseSchema 换成渲染器自己的入参类型 SchemaRendererProps['schema']。
  • 每段只改两行,换一个 import、换一个类型。三个文件合计 +6 / −6,行数不变。
  • 门禁标记一个没动,其它文件一个没碰。

为什么改

风险与代价

  • 只改文档示例,不动任何发布包的源码,不需要 changeset。
  • 回滚是 revert 这一个提交;但 V1 落地后再回滚,这三段示例会重新编译报错。

席位意见:建议批准。

  • 这是 V1 落地前唯一的阻塞。
  • 改动严格按 spec 席位裁定的路线 B 执行,没有删除任何门禁标记(不走路线 C),也没有把 skills 文件混进 V1 的 PR(不走路线 A)。
  • ① 长远:示例跟随渲染器自己的类型,不会再和契约脱节。② 拉动:V1 等它。③ 防 AI:AI 照着指南写出的代码在 V1 下也能编译。④ 不扩散:不新增门禁,行数不变。

你要做的

  • 读一遍三处、每处两行的改动。认可就在本 PR 上用 os-zhuang 或 hotlong 账号留一条 APPROVED review。
  • 批准之后,由本席位改成 ready,送进合并队列落地,你不需要再做别的。

Generated by Claude Code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants