Skip to content

[finding] form-section name: the ui/ census is 7 of 15 across 5 pages, not "three of five" — #10579 missed forms.mdx entirely #10709

Description

@claude

Found while implementing the #10616 docs-audit sweep (member #10579). Filed
separately per that sweep's gate 4 — not folded into the sweep PR.

What #10579 fixed, and what it missed

#10579 states "Three of five form-section examples in ui/ omit name" over
"Four ui/ pages". Its three named sites were real and are fixed in the sweep PR
(views.mdx:53, create-vs-edit-form.mdx:82, public-data-collection.mdx:24).

But the census is wrong. Walking every sections: [ array in content/docs/ui/**
with a multi-line-aware scan (single-line matching is what undercounts — most section
literals in views.mdx and forms.mdx span several lines) gives 15 form-section
examples across 5 pages
, of which 7 omitted name before the sweep.

content/docs/ui/forms.mdx is not mentioned anywhere in #10579, and it carries two of
the nameless ones.

Still nameless on origin/main after the sweep PR

Site Section label
content/docs/ui/forms.mdx:68 Tell us about yourself
content/docs/ui/forms.mdx:328 Lead
content/docs/ui/views.mdx:352 Basic Information
content/docs/ui/views.mdx:363 Details

(Line numbers as of the sweep branch head; views.mdx:352/:363 are the "Basic
Structure" block under ## Form View, which is on the same page as the views.mdx:53
site #10579 called "the one that matters most".)

The contract, unchanged

packages/spec/src/ui/component.zod.ts:825:

name: z.string().optional().describe('Stable section identifier for i18n lookup (snake_case) - resolves `objects.{object}._sections.{name}.label`; a nameless section renders its authored label in every locale'),

.optional() to Zod, load-bearing in practice: omitting it silently opts the section out
of localization, with nothing failing at author, build or runtime.

Why this is a separate card

The sweep's gate 3 is "zero changes outside the listed member sites", so these four could
not be folded in without breaking the per-member checklist the PR is audited against. The
fix is mechanical and identical to the three already made.

forms.mdx was also outside the page list of every other member card, so nothing in the
wave covers it.

Back-link: #10616, #10579


Generated by Claude Code

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    documentationImprovements or additions to documentation
    domain:devxDomain lane — seat card indexed by label:pm:seat
    on Aug 21, 2026
  2. added
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 21, 2026
  3. added theissue type on Aug 21, 2026
  4. os-zhuang commented on Aug 21, 2026

    @os-zhuang
    Contributor

    Triage (finding concentration round): promoted to pm:queue · type Task. Four named sites, fix mechanical and identical to the three the #10616 sweep already made; the corrected census (7 of 15 across 5 pages) stands as the card's evidence. No file overlap with the other post-sweep residue cards (#10710, #10711) or in-flight dispatches — parallel-safe. S, mode:subagent, sonnet; Clause-②: no.


    Generated by Claude Code

  5. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 21, 2026
  6. claude commented on Aug 21, 2026

    @claude
    ContributorAuthor
    {
      "issue": 10709,
      "status": "done",
      "branch": "claude/issue-10709-form-section-name",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/10827",
      "premise_still_valid": true,
      "summary": "Added the missing `name` to FIVE form-section literals under content/docs/ui/** (+5 lines, 0 deletions): forms.mdx 'Tell us about yourself'->about_you, forms.mdx 'About you'->about_you, forms.mdx 'Lead'->lead, views.mdx 'Basic Information'->basic_information, views.mdx 'Details'->details. The card's premise holds, but its census does not: my bracket-matching re-derivation finds 16 section literals across 5 pages with 8 nameless pre-sweep (measured at b6bb2ee454^) and 5 nameless on my base f4e5d916d6 -- not the card's 15/7/4. The extra site is content/docs/ui/forms.mdx:244 ('About you'), written `sections: [{` with the brace on the SAME line as the bracket; the card's scan was multi-line-aware but still required `{` to start a fresh line, so it reproduced a smaller copy of the single-line instrument error it was filed to correct. Per the dispatch ('trust yours and say so') I fixed five sites, not four. On the schema question: `name` is `.optional()` (packages/spec/src/ui/component.zod.ts:825) -- CONVENTIONAL, not required, so these examples were valid, not invalid; the weaker framing is the correct one. Naming convention was read off the 11 already-named sections in these same files (snake_case from the label, placed first, ahead of `label`) and is fully consistent -- no dominant form to pick. #10579's three sites are untouched (0 diff lines).",
      "tests": "All evidence at final commit 3b9d3ecce1 (union re-run AFTER the commit). CENSUS (multi-line-aware, bracket-matching parser -- NOT grep): per-page on base f4e5d916d6 -- forms.mdx 3 nameless of 3 sections; views.mdx 2 of 5; create-vs-edit-form.mdx 0 of 5; field-grouping-and-order.mdx 0 of 2; public-data-collection.mdx 0 of 1 => 5 of 16 across 5 pages. Same script at b6bb2ee454^ (pre-#10616-sweep) => 8 of 16. After the edit => 'section objects WITHOUT name: 0'. (2 further `sections: [` arrays in forms.mdx are elided `[/* ... */]` and hold no object literals.) GATES: `node scripts/pm/dispatch-gates.mjs` with NO paths (self-derived change set: 2 paths, committed 2, three-dot vs merge base f4e5d916d) named 14 families; all 14 EXIT=0, captured as `cmd > file 2>&1; ec=$?` before any pipe -- check:cross-package-test-inputs, check:doc-anchors, check:doc-authoring, lint check:doc-formula-expressions, check:docs-audit-scope, check:docs-redirects, spec check:empty-state, spec check:liveness, check:published-readme-links, check:role-word, spec check:strictness-ledger, spec check:variant-docs, scripts/check-cross-package-test-inputs.mjs, scripts/check-doc-frontmatter.mjs. check:doc-formula-expressions was RED on first run with `ERR_MODULE_NOT_FOUND: @objectstack/formula/dist/index.mjs` -- the unbuilt dependency closure in a fresh worktree, not my change; after `pnpm --filter '@objectstack/lint^...' build` its own verdict lines read `self-test: 30 cases passed` and `22 record-scoped formula example(s) across 416 files / 1443 TS blocks judged clean`. EDIT PROOF: each of the 5 insertions asserted EXACTLY ONE anchor hit before writing (a zero-hit string-replace is a silent no-op that exits 0); `git diff --stat` = 2 files, 5 insertions, 0 deletions. Control chars: `grep -naP '[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]'` on both files -> exit 1, no matches. NO ABLATION APPLIES -- docs-only, no guard under test, nothing to mutate and re-measure; the census re-run (5 nameless -> 0, same script, same tree) carries correctness instead. skip-changeset confirmed for the files actually touched, not defaulted: content/docs/** is consumed only by apps/docs, whose package.json is `\"private\": true`. Label applied additively via POST and read back after the labeler ran -- ['documentation','size/xs','skip-changeset'], so the whole-set PUT did not erase it.",
      "open_questions": [],
      "out_of_scope_findings": [
        "filed as #10830: nothing enforces the form-section `name` convention in content/docs/** examples -- the lint rule translation-section-name-missing walks app metadata only (never .mdx fences) and os:check type-checking passes because `name` is `.optional()`; the same census has now been hand-derived three times with three different numbers. Labels finding + domain:devx + documentation, unassigned, no pm:queue."
      ]
    }

    Generated by Claude Code

  7. removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationdomain:devxDomain lane — seat card indexed by label:pm:seat

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions