Skip to content

spec field.zod.ts option-shape comment claims a field-level depends_on the spec does not declare — correct the comment (objectui#6153 ruling A follow-up) #14583

Closed

Description

@os-project-manager

Filed by the director seat (objectstack #12708, summon #8, session session_01ShyhexkB2d1AeRZ85tgAAe) as the spec-side follow-up of a maintainer ruling. Filed unassigned; domain:spec, pm:queue, S.

What is wrong

packages/spec/src/data/field.zod.ts, the option-shape comment added with objectstack PR #13669 (lines 271 to 272 on origin/main ed445121), says that dependsOn is not declared on the option shape because "the canonical spelling depends_on already exists at the field level".

That sentence is false for this file. Measured on the same commit:

  • line 1306 declares the field-level cascade key as dependsOn (camelCase), with its full describe() (select / multiselect / radio gating plus lookup candidate scoping);
  • grep -n depends_on packages/spec/src/data/field.zod.ts returns zero lines (control: FieldType returns seven).

The spelling the comment calls canonical is objectui's own BaseFieldMetadata.depends_on, a consumer-side type. The comment inherited it through the 2026-08-25 triage note on objectui#6153 and then became the premise of the 2026-09-01 ruling on that card, which the maintainer has now amended.

Ruling this follows

Provenance: maintainer, live PM chat with the director seat, 2026-09-02, decision batch #8 item 4 on objectui#6153, recommendation A, verbatim 「同意」. Ruled: the contract's field-level cascade key is dependsOn; objectui mirrors the spec (declares dependsOn on its metadata type and de-casts its widgets), and objectui's snake_case twin is retired under enforce-or-remove (objectui follow-up card filed alongside this one).

Fix

Rewrite the comment so it states the truth: the field-level key is dependsOn (line 1306); the option shape declares description only, per the inherited #6140 / #6153 ruling; the option shape does not carry a cascade key of its own. No code change, no zod change.

Acceptance

  • grep -n depends_on packages/spec/src/data/field.zod.ts returns zero lines after the change, as before.
  • The rewritten comment names dependsOn and line 1306 as the field-level declaration.
  • Clause-② no (a comment). No changeset needed unless the repo's changeset-presence gate counts the file; then an empty-frontmatter changeset.

Related: objectui#6153 (the ruling), objectstack PR #13669 (where the comment landed), objectstack #12708 (director seat ledger).

Activity

  1. zhuangjianguo commented on Sep 3, 2026

    @zhuangjianguo
    Collaborator

    Claim: PM loop, domain:spec seat (seat post #6017), R3 of this shift — family member folded into #13916's dispatch (five gates: same false sentence, same file packages/spec/src/data/field.zod.ts, both cards graded pm:queue + domain:spec, each with its own acceptance line, exclusion list: nothing else in the file moves)
    Session: session_0174WZTU6XcFcS7g2kykC53i (GitHub zhuangjianguo)
    Branch: claude/issue-13916-option-dependson-docblock-fact (the chain head's branch; PR #15055 gains a Fixes #14583 line in its patch round)
    Worktree: objectstack-issue-13916
    Domain: domain:spec
    File surface: the option-description docblock in field.zod.ts and the two prose sites in field-rows-option-description.test.ts — the same three sites #13916 rewrites. This card's acceptance governs the wording: grep -n depends_on packages/spec/src/data/field.zod.ts returns zero lines after the change; the rewritten comment names dependsOn as the field-level declaration; the option shape declares description only and carries no cascade key of its own, per the inherited #6140 / #6153 ruling. Comment text only, no schema change.
    Container & model: the chain head's — S, mode:subagent, model: opus; tier reading on the head claim 5530139808.
    Clause-②: no — comment text only.
    Serial constraints cleared: as the chain head (open-PR scan 19:08Z: only PR #15055 touches these files, and it is this family's own PR); H17 index: #8345 notified for field.zod.ts at 5530136440 (this family's dispatch).

    Decision re-read: this card records the maintainer ruling of 2026-09-02 (director record on objectstack-ai/objectui#6153, comment 5510108593, verbatim 「同意」, recommendation A): the contract's field-level cascade key is dependsOn, objectui mirrors it, and objectui's snake_case twin retires under enforce-or-remove. That ruling post-dates triage 5486900363 on #13916, which had read objectui#6153 as unruled; the wording landed in PR #15055's first round therefore needs one patch round (verdict on #13916). Premise re-read on origin/main 82291fba (19:18Z): the false sentence still sits at field.zod.ts:283; dependsOn: is declared at the field level further down the file. Premise holds.


    Generated by Claude Code

  2. zhuangjianguo commented on Sep 3, 2026

    @zhuangjianguo
    Collaborator

    Family pointer (PM seat domain:spec, 2026-09-03T20:00Z): the verdict of record for this card is on the chain head — #13916 comment posted in this stroke (ACCEPT of PR #15055 at head daf2fd30). This card's acceptance is met on that head: grep -n depends_on packages/spec/src/data/field.zod.ts returns zero lines (control: dependsOn 4), the rewritten comment names dependsOn as the field-level declaration, and the option shape is stated to declare description only. The PR closes this card via its second Fixes line when it lands; pm:dispatched is stripped in the same action.


    Generated by Claude Code

  3. zhuangjianguo commented on Sep 3, 2026

    @zhuangjianguo
    Collaborator

    Landed via the #13916 family (PM seat domain:spec, session_0174WZTU6XcFcS7g2kykC53i, 2026-09-03T20:53Z) — PR #15055 merged as d261cefa at 20:51:42Z; this card closed via its own Fixes #14583 line. Acceptance probed on origin/main d261cefa (20:52Z): git grep -c depends_on -- packages/spec/src/data/field.zod.ts → no match (zero lines, as this card requires); positive control dependsOn → 4. pm:dispatched stripped here in the same stroke (read back: domain:spec / priority:p3 remain). Full landing note on #13916.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions