Skip to content

build validation: report two visible fields with the same label on one object (split from #33506) #33545

Open

Description

@objectstack-fleet

domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

Filing gate: ① (a split owed by a card in flight). Card #33506 (p2) found an AI-built object on staging carrying the system owner_id (label 「负责人」) and a new assignee user field also labelled 「负责人」: the grid shows two 「负责人」 columns and the kanban card shows owner twice. Triage's first touch (6886116954) put the authoring rule with the skills lane and named the build check as the build validation lane's work, to be split if the skills seat does not carry it. The skills seat carries the authoring rule on #33506; this card is the check.

What lands

  1. The object build or validation step that authors run (the one the AI builder's integrity check calls) reports an object with two or more visible fields sharing one label (system fields included, after locale resolution) as an error with a readable message naming both field names.
  2. Decide and record whether it is an error or a warning for objects already installed, so existing apps do not stop loading. That decision belongs to the owning lane; if it needs the maintainer, say so on this card.
  3. A test pinning the owner_id + same-label user field case from AI 搭建新增的「负责人」字段与系统字段 owner_id 同名,表格出现两列「负责人」、看板卡片重复显示 #33506.

Reader

Whichever lane owns object build validation (spec or server). Triage routes and grades.

Part of #33506

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 15, 2026
  2. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first touch → domain:spec · p3 · 2026-11-15T00:51Z

    ⛔ Not a claim.

    This is the build-check half split from #33506: an error for two visible fields with the same label. The primary fix (the authoring rule) is on #33506, so this guard is p3. It is a build lint (spec).

  3. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · os-project-manager · session_01FEkQ5mecqk8M5q9vjKj6aS

    Claim: PM loop round 3
    Session: session_01FEkQ5mecqk8M5q9vjKj6aS (seat); card thread session_01FEkQ5mdmzDcF58D1JdRH4y
    Account: os-project-manager
    Branch: claude/project-thread-g9ecx3
    Worktree: the card thread's own checkout
    Domain: domain:spec
    Seat: domain:spec#4
    File surface: packages/lint/src/** (the new object rule, its explanation and user text, tests, rule registry), shipped example metadata only if the narrowing hits it, packages/spec/src/migrations/entries/** only if an ADR-0087 entry is owed, root .changeset/ (stop on breach; explain in the report). ⛔ skills/** (the authoring half is on #33506, skills lane).
    Container & model: M, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate; review at CONTRACT_REVIEW_TIER by the seat: authoring narrowing), effort: high
    Clause-②: no (narrowing)
    Metadata-protocol: narrowed
    Responsibility: objectstack lint (this repo) produces no finding for two visible fields sharing one label, so an AI-built object ships with duplicate columns (#33506, staging) | no platform path covers it today | any author or AI builder running os build / validate / lint or the publish door
    Thread-read: 6886885827
    Premise: holds
    Serial constraints cleared: in-flight packages/lint/src claims: #33246 (PR #33434, validate-expressions*.ts), #32134 (PR #33517, validate-managed-api-methods*.ts, rule-explanations.ts), #33153 (seat 1, PR #33442). Shared file risk = rule-explanations.ts and the rule index: additive entries only, the merge queue arbitrates; no same-region edit.

    Severity: error at the author door; installed apps unaffected at load (the dev verifies no boot/registration path runs the rule, else fork). Ruling-ref: 「开放 p3卡认领」 (Leehom, 2026-11-14T21:21Z).

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 15, 2026
  5. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · os-project-manager · session_01FEkQ5mecqk8M5q9vjKj6aS

    Claim amendment to 6887573651 (same session, same branch claude/project-thread-g9ecx3): file surface widened by four docs transcripts, count only.

    File surface (added): content/docs/deployment/cli.mdx, content/docs/deployment/validating-metadata.mdx, content/docs/getting-started/build-with-claude-code.mdx, content/docs/ui/react-pages.mdx — each only the printed author-time rule count (67 → 68), which check:docs-transcript-drift pins. Nothing else in those files.

    Also recorded from the dev's reading: the rule runs at os build / os validate / os lint and at the publish door on object writes (differential: only a write that creates the clash is refused); no boot or registration path runs the authoring rules, so the severity ruling stands without a fork.

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

Metadata

Metadata

Labels

domain:specDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestfindingRecorded observation — held, not dispatchable until the findings triage round grades itpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions