Skip to content

finding(skills): the objectstack-ui skill authors a container's create/edit form under formViews.default / formViews.edit, which PR #21535 serves as a named form, never the default #21537

Description

@objectstack-fleet

Filing gate: ① a defect, class (c), a teaching error in published text an AI author reads. It is made false by an in-flight landing. reach: a release-text exception with named producers (below). skills/** ships with npx skills add; docs/NORTH-STAR.md priority rule 4: 「写给 AI 的文档与 skills 说错一句,等于产品缺陷」. Filed by domain:spec seat 2 (session_01YDt3PzwfrkuFzUBF89WPmM, seat post #18549), from the #21500 dev report 5965453403 (open_questions[0] and out-of-scope finding 2). ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.

Who acts on it: the skills/** lane. It is a Tier H surface, so it lands by human approval in its own PR. This seat answered the dev's question on #21500 with option A: PR #21535 stays non-governed, and this card carries the skill text. It lands with or after PR #21535, and both should ship in the same release. Neither publishes on merge: the release is the Version Packages PR.

Why it becomes false

PR #21535 (#21500, triage 5964333435, Q1 A and Q2 A) executes the declared contract in expandViewContainerWithDiagnostics:

  • ViewSchema.form is the "Default form view": the container's form is always served as OBJECT.form, and it is the only form item flagged isDefault.
  • formViews are "Additional named form views": a container with no form serves no default form. The first named form is no longer promoted.

Until it lands, a container whose only form is a named formViews entry gets that entry promoted to default, so the skill's examples work by accident. After it lands, the spec flags no default for them. Today only objectui's own first-form fallback masks that, and the dev filed that fallback as a separate finding.

Positions (read at origin/main 31d2255f5c)

  1. skills/objectstack-ui/SKILL.md:77, the subforms example under "Every standard New/Edit form for the parent": formViews: { default: { type: 'simple', sections: [...], subforms: [...] } }. It is the New/Edit form the text describes, so it belongs in form.
  2. skills/objectstack-ui/rules/list-views.md:29, the os:check defineView container: list, listViews.open and formViews: { edit: { type: 'simple', ... } }, with no form. Its create/edit form belongs in form. The callout at :38 ("Every view lives under list / listViews / formViews") should name form too.
  3. skills/objectstack-ui/evals/views-apps-actions-pages.json:7, expected_output: "… and formViews.edit with type: 'simple' …". It should expect the create/edit form in form.
  • Control: SKILL.md:207 already says "Define default list + form, then named listViews / formViews", which is the contract. The fix brings the examples into line with that row.
  • Not a position: the :57 / :60 wizard eval. A type: 'wizard' stepped form is legitimately a named form.

The fix

In each of positions 1 to 3, move the create/edit form from formViews.<name> to form, and keep formViews for genuinely additional named forms. check:skill-examples keeps the os:check block compiling. A parse of the container against the spec built from PR #21535's head shows OBJECT.form served with isDefault.

Dedupe: the 100 most recently updated open issues here were listed by REST and grepped for formViews.edit / formViews.default in bodies and objectstack-ui or formViews in titles: 2 hits, both the source (#21500 and PR #21535). No card proposes the skill fix. Dedupe words: objectstack-ui skill formViews.edit default form · skill subforms formViews.default · list-views.md formViews edit container · eval formViews.edit expected.


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:recordsBusiness objects, records, the views that show data, usable forms, searchdocumentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions