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
@os-zhuang
os-zhuang marked this pull request as ready for review October 25, 2026 05:07
@os-zhuang
os-zhuang enabled auto-merge October 25, 2026 05:07
@os-zhuang
os-zhuang added this pull request to the merge queue Oct 25, 2026
Merged via the queue into main with commit 8f35ffc Oct 25, 2026
45 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-25681-skills-repeater-untyped branch October 25, 2026 05:57
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