Repository navigation
Commit 8f35ffc
docs(skills): object-level composite/repeater are untyped JSON — a typed list is a child object (#25741)
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.com/claude-code)
https://claude.ai/code/session_01T2U7eGg8aRTpJ8kKXxDiog
---
_Generated by [Claude
Code](https://claude.ai/code/session_01T2U7eGg8aRTpJ8kKXxDiog)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 2e3e276 commit 8f35ffc
2 files changed
Lines changed: 14 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
116 | | - | |
117 | | - | |
| 116 | + | |
| 117 | + | |
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
| |||
0 commit comments