Skip to content

docs(skills): object-level composite/repeater are untyped JSON — a typed list is a child object - #25741

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-25681-skills-repeater-untyped
Oct 25, 2026
Merged

os-zhuang merged 2 commits into
mainfrom
claude/issue-25681-skills-repeater-untyped

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Refs #25681

Clause-②: no
Metadata-protocol: none
Ruling-ref: 6386744473

The governed half of ruling 6386744473 (batch #12 item 4, letter b): object-level composite / repeater are untyped JSON, and a typed list is a child object. The code and docs half is the companion PR on claude/issue-25681-repeater-untyped-json. It is split off because skills/** is a Tier H governed surface and never rides a code PR.

What changed

  • skills/objectstack-data/rules/field-types.md, the Embedded table. The composite row said "Single embedded sub-object with declared sub-fields". An object field has no member that declares sub-fields: fields, subFields and columns are refused on the field (true on main today, measured with FieldSchema.safeParse). Both rows now say the type is untyped JSON. The repeater row names the route: a child object with a master_detail field, and inlineEdit: 'grid' to edit it inline.
  • .changeset/25681-skills-repeater-untyped.md: @objectstack/skills patch. Its dist ships the skill files, the same as the precedent 061cc94d.

Size readings

reading before after
skills/objectstack-data/rules/field-types.md 322 lines 322 lines
whole catalog (sum of every skills/*/SKILL.md) 4389 lines 4389 lines

Two cells rewritten, zero lines added: no expansion.

Verification (head 14a58a3a)

node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran … → ✓ 44 derived famil(ies) accounted for — 39 run, 5 NOT-MEASURED (5 DERIVED from a recorded exit 3). All 39 that ran exited 0, check-skills-token-ratchet.mjs and its --self-test among them. The 5 NOT MEASURED are prerequisite refusals in an unbuilt worktree (check:doc-formula-expressions, check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content); CI builds and runs them.

维护者速读(草稿)

  • 改了什么:对外发布的技能包里,objectstack-data 的字段类型表有两行改了措辞:composite / repeater 是无类型 JSON,对象字段不能声明子字段;要带列的列表请建子对象(master_detail,inlineEdit: 'grid' 在父表单内联编辑)。另附一条 @objectstack/skills patch changeset。
  • 为什么改:旧文写着「declared sub-fields」,可协议里根本没有声明子字段的成员,AI 照着技能包写就会写出被拒收的字段。这是裁决 6386744473(25681 b)的技能包一半;代码与文档一半在配套 PR。
  • 风险与代价(含回滚):纯文档,行数不变(322 → 322;技能包合计 4389 → 4389),不改任何键、值或行为。回滚就是 revert 这一个提交。
  • 席位意见:
  • 你要做的:skills/** 属 Tier H。复核通过、CI 全绿后请您批准合并。

🤖 Generated with Claude Code

https://claude.ai/code/session_01T2U7eGg8aRTpJ8kKXxDiog


Generated by Claude Code

@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Oct 25, 2026
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 size/s tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants