docs(skills): the page-builder guide's object-form example names its fields; a per-form override goes on a section entry (objectui#11550) - #11561
Conversation
…fields; a per-form override goes on a section entry (objectui#11550)
Executes item 1 of triage ruling 5969880008 on the governed half. The
`os:check` `object-form` example taught `fields: [{ name, label, type,
required }, ...]`; the form draws each entry by name and drops the other
three keys, and the declared member is `string[]`. It now reads
`"fields": ["name", "email"]`. The note above it, which paired grid
`field` with form `name`, now says where labels, types and `required`
come from (the object fields) and where a per-form override goes (a
`sections[].fields` entry). Net -3 lines.
Claude-Session: https://claude.ai/code/session_01FjqrwXPfSMkSfkKYDSRkN2
Co-authored-by: Claude <noreply@anthropic.com>
|
changeset-claim-re-read
|
Contract reviewServed-tier: Scope: PR #11561, one file, ① Derived judgmentsEvery sentence the diff puts into the guide, named right or wrong:
Two notes, neither a defect: the override example is shown inline without its enclosing ② Semver levelNo changeset is owed and none is present — right.
③ Boundary flagsDev report
Implemented-by: VERDICT: PASS Record written 2026-10-03T15:41Z; at-tier review rendered by a subagent of the seat session named above, which adopts the verdict. |
维护者速读(终稿)
改了什么:对外发布的技能指南 为什么改:AI 和开发者照这份指南写表单。旧示例教的写法,表单只读 风险与代价(含回滚):风险低。只改文档文本,运行时零变化;按旧写法已存的元数据照样能显示,代码侧的读取保留,由 objectui#11560 的测试钉住,该 PR 已在合并队列。回滚即 revert 这一个提交。 席位意见:建议批准。
你要做的:在本 PR 留一条 APPROVED review( Generated by Claude Code |
Part of #11550
Clause-②: no
Governed (
skills/**). This PR stays DRAFT until an account inGOVERNED_APPROVERSapproves it. An agent seat never submits that approval. The code half is objectui#11560; the two land independently, in either order.Executes item 1 of triage ruling
5969880008on the governed half: the published page-builder guide stops teaching the{ name }entry inobject-formfields.Session:
https://claude.ai/code/session_01FjqrwXPfSMkSfkKYDSRkN2(os-dev,mode:subagentof the PM seat; identity = this branch).What changes
One file,
skills/objectui/guides/page-builder.md: theobject-formexample under "Form plugin example" (theos:check-markedjsonfence) and the note directly above it.fields[{ "name": "name", "label": "Name", "type": "text", "required": true }, { "name": "email", "label": "Email", "type": "text" }]["name", "email"]field; form fields key offname."{ "field" }objects;object-formfieldsare names."ListColumn.fieldwithFormField.nameas one pair of words for opposite things{ "name": ... }column names no field andObjectGriddrops it), and says that form labels, types andrequiredcome from the object fields, and that a per-form override goes on asections[].fieldsentry,{ "field": "email", "required": true }Why. The form draws each entry by
nameand silently dropslabel,typeandrequired; the declared member (ObjectFormSchema.fields) isstring[]. The old note was written against the old example ("the two layers sit next to each other here"), so it would no longer be true of the respelled one. Where the override goes is the ruling's own sentence: "Alabelorrequiredoverride goes on a section entry or on the object field.typeis always the object field's." The section-entry override (label,required,visibleWhenon a{ field }entry, on all six arms) is pinned bysectionEntryOverrides-10475.test.tsx.Line budget (
skills/**net at most 0)skills/objectui/(which is all ofskills/**): 5418 before, 5415 after.SKILL.md(one file): 142 before, 142 after, untouched.fieldsentries collapsing into one line of names.What the
os:checkgate judges, and the other doorspnpm check:skill-examplesat6ce28b7(packages built withpnpm turbo run build --concurrency=2over the gate's own--build-filter): exit 0. It printedJSON phase: 70 fence(s) parsed, 0 failed., and--listshows the example's fence as[json] marked pass.jsonfence and does not validate it. Its header says: "It is parsed, not validated against@object-ui/types' schemas." The validation doors were measured on objectui#11560's base with a throwaway probe. The authored node with names only is accepted bysafeValidateSchemaand byStrictAnyComponentSchema, and so was the old example. The node'spropertiesbag is the spec'sComponentPropsMap['object-form']row by reference, and that row typesfieldsmembers as unknown until spec(ui): theComponentPropsMaprows still type renderer-read members asz.unknown()—navigationon object-map / object-gantt / object-tree andconditionalFormattingon object-kanban accept42— the family close-out after #21445 objectstack#21464 types them.check:skills-paths,check:skill-eval-tokens,check:control-bytes,check:new-line-citations(0 new),check:doc-fences, andcheck-changeset-presence(no released package changed, so no changeset is owed).check:changeset-claimsnames one pending changeset,.changeset/6475-gantt-block-face-declared.md, because it mentions this file. I read the paragraph: it is a census of the guide'sganttblocks, which this PR does not touch, so it is still true.check-governed-queue-guard.mjs --test skills/objectui/guides/page-builder.md: GOVERNED (exit 3), as expected.Order
The two PRs land independently. objectui#11560 changes
plugin-formtest fixtures and a pin, and does not read this file. This file's example passes every door measured above, with or without objectui#11560.维护者速读(草稿)
改了什么:对外发布的 page-builder 技能指南里,
object-form示例的fields从「带 name、label、type、required 的对象」改成「字段名字符串」(["name", "email"]);示例上方那段说明同步改写,讲清楚标签、类型、必填来自对象字段,单个表单要覆盖时写在sections[].fields的条目上。只动这一个文件,净减 3 行。为什么改:AI 和开发者照着这份指南写表单。旧示例教的写法,表单只认 name,另外三个键被静默丢掉。作者以为设了必填,实际没有生效。本仓声明的类型本来就是字符串数组,triage 裁定退役这种写法(裁决评论 5969880008 第 1 条)。
风险与代价(含回滚):风险低。只改文档文本,运行时零变化;已经按旧写法存下的元数据照样能显示(代码侧的读取保留,由 objectui#11560 的测试钉住)。回滚就是 revert 这一个提交。
席位意见:
你要做的:审读这一处示例与说明的改写;同意就在本 PR 留一条 APPROVED review,之后由认领席翻 ready 并入合并队列。
Generated by Claude Code