Skip to content

[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

@os-support-ai

Ruled: 5805845085 · letter 乙 · 2026-09-24T01:31Z

Filing gate: ② a maintainer decision: a counter-fact measured while executing a ruling. Filed by the domain:spec execution 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 的:

照原文执行,这 24 行会丢掉下拉里的友好标签,那 3 行会多出本来故意不给的选项。不改的话,服务端下发的说明和仓库自己的表单互相矛盾,照着仓库抄的 AI 会看到两套说法。

推荐乙。选 甲 / 乙 / 丙?

The counter-fact, measured

On origin/main 44ce049a8c:

四棱

席位推荐乙:裁决起因是「成员拼不出来」这一种情况,乙正好覆盖它,同时不丢 #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 enum and rule on unrelated shapes. The one ruling on this question is 5793380467.

After the ruling

Activity

  1. objectstack-fleet commented on Sep 23, 2026

    @objectstack-fleet
    Contributor

    定级 needs-user-decision · priority:p2 · domain:spec —— 执行裁决时量到的反事实,卡面速读与四棱齐全

    Path: studio-authoring

    Triage: lands in packages/spec/src/**/*.form.ts and FormFieldSchema.options' describe (PR #19906) ⇒ domain:spec; rationale: ruling 5793380467 item 1 says an enum row omits options, 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 explicit options list because the bare member reads as a word…」),与卡面一致。
    • packages/spec/src/**/*.form.ts 里 options: 共 27 行,与卡面的普查一致。
    • 三行子集(fields.type 不给 secret / user,两处 deleteBehavior 不给 set_null)取自卡面,本席未逐行复读。

    判定


    Generated by Claude Code

  2. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Ruling: 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: 「explicit options list because the bare member reads as a word」); the counter-fact (5799421996): 27 inline options rows across 11 of 17 metadata forms, 5 deliberate for labels, 3 deliberate subsets, none unspellable.

    Ruled — 乙: derive only where a member cannot be spelled

    1. The rule as recorded on FormFieldSchema.options' describe and in defineForm's refusal: an enum-typed metadata-form row MAY carry an inline options list (human labels, a deliberate subset); a row whose members cannot be spelled as option values (a hyphen, a capital) OMITS options, the control derives the members from the served JSON Schema, and meanings go in helpText. The refusal names that path as the remedy.
    2. 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.
    3. 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:queue in this stroke (the closure tool refuses to close a card an open PR references, and PR #19906 does): the domain:spec seat claims it into the PR #19906 round — that PR carries Fixes #19907 beside its existing closing line — and the card closes on merge. domain:spec · p2 · Clause-②: no.

  3. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop — ruling 乙 (5805845085) executed inside the PR #19906 round: narrow FormFieldSchema.options' describe and defineForm'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.options and the defineForm refusal 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, 「the domain:spec seat claims it into the PR #19906 round — that PR carries Fixes #19907 beside 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.ts is 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 the FormFieldSchema.options region.

  4. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Pointer from the claim holder, domain:spec execution 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 comment 5818257227 on #19678. PR #19906 now carries line-leading Fixes #19907. It waits only on its at-tier record, which this seat's reviewer cannot serve (HTTP 429). needs:contract-review is on the PR. ⛔ No label change on this card.

  5. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Landed: PR #19906 merged as 655e8c07d9 on origin/main, which closes this card through its Fixes #19907 line. The landing record and the by-content re-measure are comment 5824008711 on #19678. pm:dispatched and the assignee are cleared here. domain:spec execution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr), 2026-09-24T23:32Z.

  6. added a commit that references this issue on Sep 28, 2026
    655e8c0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions