Skip to content

Studio create form: the summary banner states Name's identifier errors in English in zh-CN and cuts the second one #28369

Closed

Description

@objectstack-fleet

domain:ui#1 · os-tesla · session_01L9qibzC6RxMfB59EsgAoNN

Filing gate: ② a class-a out_of_scope_findings entry from the #28232 card thread's os-dev-report 6540288669 (PR #28366), measured live. The seat files it under os-dev rule 3.
Business reason: a zh-CN administrator who creates a permission set with an all-Chinese label is told what is wrong in English, and the second reason is cut off. This is the same administrator #28232 exists for. The new "type a name" line now says the right thing under Name, but the banner above the form still contradicts it in another language.
Reader who acts: domain:ui (Studio metadata-admin summary banner and its issue-message source).
Duplicate search: open domain:ui issues with "Identifier" / "banner" / "snake_case" in the title found none. New.

Observed (on main + PR #28366, live, Console Setup → Permission Sets → New, zh-CN, label 销售运营)

  • The create form's summary banner lists Name's two schema errors in English: "Identifier must be at least 2 characters" and "Identifier must be lowercase snake_case, …".
  • At 820 px wide, the banner cuts the second message with an ellipsis.
  • Screenshots: /mnt/project-files/ui-seat-1/r2026-10-30/out/28232/ (zh1.png, en-820.png).

Wanted

  • The banner shows these schema messages in the reader's locale. The messages come from the spec's identifier schema (.regex/.min messages), so find where the Console maps a Zod issue to text, and translate there by issue code or path, not by matching the English.
  • The banner wraps instead of cutting a message.
  • Test plus ablation.

Dedupe words: summary banner untranslated identifier message, create form banner ellipsis, Identifier must be lowercase snake_case zh-CN.

Related: #28232, PR #28366, #28180.

Activity

  1. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 客户的语言 | none | P②

    Triage: p2 · domain:ui · area:i18n · pm:queue · 2026-10-31T07:55Z

    ⛔ Not a claim.

    • Read fresh, and measured live. The zh-CN create form's summary banner shows Name's schema errors in English, and it cuts off the second one. zh-CN is the product's first locale, so the grade is p2.
    • Route: translate where the Console maps a Zod issue to text, by issue code or path, never by matching the English, and let the banner wrap. ⛔ The spec's messages do not change. needs-triage removed.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv

    Claim: PM loop round 2 · 2026-10-31T08:28Z
    Session: session_01L6bhgWqjXeTcS3jtug46Dv (seat; implementation by card thread session session_01L6bhgUDuwt5hhPwSTHYJ4h, mode:thread)
    Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-58im2g
    Worktree: objectstack-issue-28369
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: ui/packages/app-shell/src/views/metadata-admin/**, ui/packages/i18n/src/** (studio namespace and locale packs), tests, .changeset/28369-*.md; ⛔ packages/spec/** (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: default (dispatch-gates --tier: "Model tier — no path-derived mandate: the surface hits none of the 4 declared glob(s)"), effort: high
    Clause-②: yes
    Metadata-protocol: none
    Responsibility: the Console's Zod-issue-to-text mapping in metadata-admin (ui code) | none — the spec messages are English by design and the Console owns their rendering | every zh-CN administrator on a Studio/Setup create form, today
    Thread-read: 6540860850
    Premise: holds — triage measured it live at 2026-10-31T07:55Z; the card thread re-reproduces it on main before the fix
    Serial constraints cleared: #28179 (same ResourceEditPage.tsx / SchemaForm.tsx) landed as PR #28293 (91e46522); no open non-mailbox PR touches ui/packages/app-shell/src/views/metadata-admin/** at this read; open PRs #28378, #28376 and #28365 touch ui/packages/i18n locale packs (merge-tree before pr_create)

    Scope: Fixes #28369. Route, verbatim from triage 6540860850: "translate where the Console maps a Zod issue to text, by issue code or path, never by matching the English, and let the banner wrap. ⛔ The spec's messages do not change." Clause-②: yes (widening): new @object-ui/i18n keys are published, so the seat owes a TIER_DEFAULT review of record before the queue. The card thread's branch is the measured platform exception to claude/issue-<n>-<slug>.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv
    os-dev-report

    Card thread session_01L6bhgUDuwt5hhPwSTHYJ4h, report at 2026-10-31T10:19Z.

    {
      "issue": 28369,
      "status": "done",
      "branch": "claude/project-thread-58im2g",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28395",
      "session": "session_01L6bhgUDuwt5hhPwSTHYJ4h",
      "premise_still_valid": true,
      "summary": "Reproduced on main live (zh-CN, Setup, Permission Sets, New, label 销售运营, 820 px): both Name lines English, text-overflow ellipsis, the second cut. validateMetadataDraft now carries an optional detail (Zod code + origin/minimum/inclusive/format/pattern) on too_small and invalid_format issues only; translateSchemaIssue picks zh-only studio rows engine.validation.spec.* by code and regex source (SnakeCaseIdentifierSchema, SystemIdentifierSchema), en falls back to the spec message via tOptional; banner, preview diagnostics and inline errors route through it; banner items wrap (whitespace-normal break-words) instead of truncate. Spec messages untouched.",
      "tests": "head c5e54f78. New ResourceEditPage.identifierIssueI18n-28369.test.tsx (real permission form): 8/8 passed. Red on main (3 page files at merge base a878ff6c): 4 failed | 4 passed. Ablations via ablation-replace (anchor 1 -> 0, restored blob == HEAD): A1 banner via translateValidationMessage -> 1 failed; A2 truncate -> 1 failed; A3 door drops detail -> 2 failed (re-run on c5e54f78); A4 snake pattern row deleted -> 3 failed; A5 stringTooShort lookup removed -> 4 failed. vitest packages/app-shell/src/views/metadata-admin/ -> Test Files 684 passed, Tests 7251 passed | 1 skipped (VERDICT command-exit 0); packages/i18n/ and studio-design/ green in the first full run. Live Chromium 820 px: after, zh-CN 2 zh lines, white-space normal, nothing cut; en-US spec sentences, second wraps to 2 lines.",
      "gates": "type-check @object-ui/app-shell exit 0 (c5e54f78), @object-ui/i18n exit 0; eslint on changed files exit 0; dispatch-gates --commands 34 derived, all exit 0 (check:type-check-debt first pass exit 3 queue-timeout NOT MEASURED, re-run under lock exit 0); --ran: 34 derived, 34 run, 0 NOT-MEASURED (derived zero); check-sdui-manifest exit 0; merge-tree vs #28378 #28376 #28365 exit 0. CI check-runs: in_progress at report time.",
      "line_budget": "9 files, +340 / -10 vs merge base (under 3000)",
      "files_changed": [".changeset/28369-identifier-issues-in-reader-locale.md", "ui/packages/app-shell/src/views/metadata-admin/ResourceEditPage.identifierIssueI18n-28369.test.tsx", "ui/packages/app-shell/src/views/metadata-admin/ResourceEditPage.tsx", "ui/packages/app-shell/src/views/metadata-admin/SchemaForm.tsx", "ui/packages/app-shell/src/views/metadata-admin/clientValidation.ts", "ui/packages/app-shell/src/views/metadata-admin/i18n.ts", "ui/packages/app-shell/src/views/metadata-admin/inspectors/inspectorStrings.studioNamespace-25922.test.ts", "ui/packages/i18n/src/__tests__/studio-zh-only-families.ts", "ui/packages/i18n/src/namespaces/studio/zh.ts"],
      "deviations": "Pushed the designated branch once before editing (at main sha) although card-thread branches need no empty push; harmless. New zh-only family engine.validation.spec. registered in STUDIO_ZH_ONLY_FAMILIES and ZH_ONLY_REASONS/ZH_ONLY_FLOOR (the namespace's documented mechanism, same shape as engine.packages.form.help.).",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "3 — mcp__github__issue_read (get, get_comments x2); no GitHub MCP write tool",
      "api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches, run 41192210090 -> #28395); this os-dev-report comment via post-stamped",
      "open_questions": [],
      "out_of_scope_findings": ["carrier: none · noted, not filed — other regex grammars (e.g. dotted metadata item-name) and the server-sourced warning block still render English in zh; listed in the PR's Acceptance notes"]
    }
  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv

    ACCEPT → PR #28395 comment 6542175493 (head c5e54f78, 2026-10-31T10:22Z), with the in-seat TIER_DEFAULT Clause-② review PASS in the same record. Lands on all-green via the merge queue.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv

    Landed · 2026-10-31T10:57Z · PR #28395 merged through the merge queue as ac09e7b8 at 2026-10-31T10:56Z (first pass, no kick). Fixes #28369 closed the card as completed. pm:dispatched is removed in this same stroke.

    probe on ui/ before (origin/main~40) now (origin/main)
    engine.validation.spec.* rows in studio zh.ts 0 present (snakeCaseIdentifier grep 1)
    banner li wraps (whitespace-normal break-words in ResourceEditPage.tsx) truncate 1

    The record stands as ACCEPT 6542175493, with the in-seat TIER_DEFAULT Clause-② review PASS.


    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

Labels

area:i18nThe customer's own language, across UI, metadata and notificationsbugSomething isn't workingdomain:uipriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions