Repository navigation
[Decision] Ruling 5793380467 says metadata-form enum rows omit options — but 27 in-repo rows hand-list enum members, 5 of them deliberately (#19331), and 3 are subsets the derive path cannot express #19907
Description
Activity
objectstack-fleet commented
on Sep 23, 2026 ContributorMore actions定级
needs-user-decision·priority:p2·domain:spec—— 执行裁决时量到的反事实,卡面速读与四棱齐全Path: studio-authoring
Triage: lands in
packages/spec/src/**/*.form.tsandFormFieldSchema.options' describe (PR #19906) ⇒domain:spec; rationale: ruling5793380467item 1 says an enum row omitsoptions, but 27 in-repo rows hand-list them — 5 deliberately for human-readable labels (#19331), 3 as subsets the derive path cannot express — so executing the letter either drops Studio's friendly labels on 24 dropdowns and widens 3, or leaves the served description contradicting the repo's own forms; it holds PR #19906 unmerged, so it is a real decision, not a wording note ⇒ p2.分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ),2026-09-23T17:17Z。本席读完了卡面(本卡尚无评论)。本席的读数(
origin/main)packages/spec/src/data/object.form.ts:414起就是 #19188 split: 47 top-level zod-only keys are scalar controls needing one form row each #19331 的那段注释(「Each enum gets an explicitoptionslist because the bare member reads as a word…」),与卡面一致。packages/spec/src/**/*.form.ts里options:共 27 行,与卡面的普查一致。- 三行子集(
fields.type不给secret/user,两处deleteBehavior不给set_null)取自卡面,本席未逐行复读。
判定
- 卡面的「维护者速读」和四棱都已写好,并且只问一个字(甲 / 乙 / 丙)。⇒ 本席只补定级和车道,⛔ 不重写速读。
p2:它卡着 PR fix(spec): the form option-value refusal and the options describe name the derive path for enum members that cannot be spelled #19906 不能合;选错了,要么 Studio 里 24 个下拉退回显示原始枚举值,要么说明和仓库表单长期互相矛盾。- 本席同意席位推荐的 乙。裁决要解决的是「成员拼不出合法值」这一种情况,乙正好覆盖它,也不丢 #19188 split: 47 top-level zod-only keys are scalar controls needing one form row each #19331 特意加的标签。卡面自己写明的风险是:乙收窄了裁决标题「never hand-listed」的字面。这正是需要维护者一句话的原因,⛔ 分诊不代裁。
Generated by Claude Code
- addedpriority:p2Medium: important, M3Medium: important, M3
on Sep 23, 2026 objectstack-fleet commented
on Sep 24, 2026 ContributorMore actionsRuling: batch #218 item 3 · letter 乙 · maintainer 「其他同意」 2026-09-24T01:31Z
Director seat, summon #28 (续) (
session_01GLdRPcbaCBQCTvVmU6YEUY). Presented with recommendation 乙; approved. 甲 ⛔ (24 Studio dropdowns fall back to raw enum values); 丙 ⛔ (the served description contradicts the repo's own forms).Governing text: ruling 5793380467 (不动 + 声明) — its item 1 is NARROWED by this letter; #19331 (
packages/spec/src/data/object.form.ts:415: 「explicitoptionslist because the bare member reads as a word」); the counter-fact (5799421996): 27 inlineoptionsrows across 11 of 17 metadata forms, 5 deliberate for labels, 3 deliberate subsets, none unspellable.Ruled — 乙: derive only where a member cannot be spelled
- The rule as recorded on
FormFieldSchema.options' describe and indefineForm's refusal: an enum-typed metadata-form row MAY carry an inlineoptionslist (human labels, a deliberate subset); a row whose members cannot be spelled as option values (a hyphen, a capital) OMITSoptions, the control derives the members from the served JSON Schema, and meanings go inhelpText. The refusal names that path as the remedy. - The 27 existing rows stay; #19188 split: 47 top-level zod-only keys are scalar controls needing one form row each #19331's labels stay.
- PR fix(spec): the form option-value refusal and the options describe name the derive path for enum members that cannot be spelled #19906 lands with its describe and remedy sentence narrowed to that wording.
Execution
needs-user-decision→pm:queuein this stroke (the closure tool refuses to close a card an open PR references, and PR #19906 does): thedomain:specseat claims it into the PR #19906 round — that PR carriesFixes #19907beside its existing closing line — and the card closes on merge.domain:spec· p2 ·Clause-②: no.- The rule as recorded on
- added and removed
on Sep 24, 2026 objectstack-fleet commented
on Sep 24, 2026 ContributorMore actionsClaim: PM loop — ruling 乙 (
5805845085) executed inside the PR #19906 round: narrowFormFieldSchema.options' describe anddefineForm's refusal remedy to 「derive only where a member cannot be spelled」, dispatched at 2026-09-24T15:06Z
Session:session_013RDBh5DqXd2xnLwvHLgLFr
Branch:claude/issue-19678-enum-options-derive-declared
Worktree:objectstack-issue-19678-r2
Domain:domain:spec
Seat:domain:spec#1
File surface: PR #19906's own files, and no others:packages/spec/src/ui/view.zod.ts, region only:FormFieldSchema.optionsand thedefineFormrefusal text.packages/spec/src/ui/form-option-enum-derive.test.ts.- The regenerated
content/docs/references/ui/view.mdx. .changeset/19678-form-option-enum-derive-remedy.md.
Plus a base merge of
origin/main.
Container & model:S,mode:subagent,model: opus (default judgment tier)
Clause-②: no
Authorization: the ruling's own execution line, 「thedomain:specseat claims it into the PR #19906 round — that PR carriesFixes #19907beside its existing closing line」, and the maintainer's instruction in this seat's live PM chat, verbatim 「你session 的pr 红了为什么不修复,绿了为什么不 合并。」
Thread-read: 5805845085
Serial constraints cleared:view.zod.tsis region-split. The census covered all 38 open PRs at 2026-09-24T01:18Z, and the siblings that also edit this file have moved since; several landed. The dev re-derives the file's other open PRs from their actual file lists before editing, and stops if one touches theFormFieldSchema.optionsregion.objectstack-fleet commented
on Sep 24, 2026 ContributorMore actionsPointer from the claim holder,
domain:specexecution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr), 2026-09-24T16:42Z. Round 2 of PR #19906, which executes this card's ruling 乙, is accepted; the seat read is comment5818257227on #19678. PR #19906 now carries line-leadingFixes #19907. It waits only on its at-tier record, which this seat's reviewer cannot serve (HTTP 429).needs:contract-reviewis on the PR. ⛔ No label change on this card.objectstack-fleet commented
on Sep 24, 2026 ContributorMore actionsLanded: PR #19906 merged as
655e8c07d9onorigin/main, which closes this card through itsFixes #19907line. The landing record and the by-content re-measure are comment5824008711on #19678.pm:dispatchedand the assignee are cleared here.domain:specexecution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr), 2026-09-24T23:32Z.- added a commit that references this issue
on Sep 28, 2026
Ruled: 5805845085 · letter 乙 · 2026-09-24T01:31Z
Filing gate: ② a maintainer decision: a counter-fact measured while executing a ruling. Filed by the
domain:specexecution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr, seat post #6017) from the round on #19678 (PR #19906). ⛔ The PR executes the ruling to the letter and is ⛔ not armed for merge while this is open.维护者速读
裁决「不动 + 声明」(#19678,
5793380467)的第 1 条写的是:元数据表单里,一行只要是枚举类型,就不写options,由控件从 JSON Schema 自己推导出选项。PR #19906 已按原文把这条规则写进了说明和报错提示。但仓库里现有 27 行恰恰是手写
options的:secret/user),推导路径表达不了「只给一部分」。照原文执行,这 24 行会丢掉下拉里的友好标签,那 3 行会多出本来故意不给的选项。不改的话,服务端下发的说明和仓库自己的表单互相矛盾,照着仓库抄的 AI 会看到两套说法。
helpText),3 行子集保留手写,说明里写明子集是例外。options、改走推导」。27 行不动,PR fix(spec): the form option-value refusal and the options describe name the derive path for enum members that cannot be spelled #19906 的说明改一句再合。推荐乙。选 甲 / 乙 / 丙?
The counter-fact, measured
On
origin/main44ce049a8c:packages/spec/src/data/object.form.ts:414(#19188 split: 47 top-level zod-only keys are scalar controls needing one form row each #19331): 「Each enum gets an explicitoptionslist because the bare member reads as a word…」 (re-read by this seat).optionslists in 11 of the 17 metadata forms. All are spec enums; none contains an unspellable member.objectfields.typeomitssecret/user, and the twomaster_detaildeleteBehaviorrows omitset_null. The derive path would widen what they offer.FormFieldSchema.options' describe, and appends the derive remedy todefineForm's refusal for an unspellable option value.四棱
object.form.ts抄写的 AI 和读说明的 AI 得出相反结论。席位推荐乙:裁决起因是「成员拼不出来」这一种情况,乙正好覆盖它,同时不丢 #19331 刻意做的标签,也不需要为子集开例外。风险:裁决标题写的是「never hand-listed」,乙收窄了这个字面。
Prior rulings read: options,enum,metadata form,derive,helptext,formselectoptionschema → 30 hits; ADR-0003 Decision §2, ADR-0003 Decision §3, ADR-0003 Decision §4, ADR-0018 Decision §2, ADR-0019 D4, ADR-0021 D2, ADR-0035 Decision §3, ADR-0037 Decision §3; thread: 1 ruling(s) (5793380467); repo: objectstack-ai/objectstack
The ADR hits match only the word
enumand rule on unrelated shapes. The one ruling on this question is5793380467.After the ruling
helpText), and PR fix(spec): the form option-value refusal and the options describe name the derive path for enum members that cannot be spelled #19906's describe gains the subset exception.