You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Studio create form: the summary banner states Name's identifier errors in English in zh-CN and cuts the second one #28369
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.
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.
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.
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>.
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"]
}
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.
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.
Activity
objectstack-fleet commentedon Oct 31, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: 客户的语言 | none | P②
Triage: p2 ·
domain:ui·area:i18n·pm:queue· 2026-10-31T07:55Z⛔ Not a claim.
needs-triageremoved.Generated by Claude Code
objectstack-fleet commentedon Oct 31, 2026
domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv
Claim: PM loop round 2 · 2026-10-31T08:28Z
Session:
session_01L6bhgWqjXeTcS3jtug46Dv(seat; implementation by card thread sessionsession_01L6bhgUDuwt5hhPwSTHYJ4h,mode:thread)Account:
os-sales(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/project-thread-58im2gWorktree:
objectstack-issue-28369Domain:
domain:uiSeat:
domain:ui#4File 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: highClause-②: 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
mainbefore the fixSerial constraints cleared: #28179 (same
ResourceEditPage.tsx/SchemaForm.tsx) landed as PR #28293 (91e46522); no open non-mailbox PR touchesui/packages/app-shell/src/views/metadata-admin/**at this read; open PRs #28378, #28376 and #28365 touchui/packages/i18nlocale packs (merge-tree beforepr_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/i18nkeys are published, so the seat owes aTIER_DEFAULTreview of record before the queue. The card thread's branch is the measured platform exception toclaude/issue-<n>-<slug>.Generated by Claude Code
objectstack-fleet commentedon Oct 31, 2026
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"] }objectstack-fleet commentedon Oct 31, 2026
domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv
ACCEPT → PR #28395 comment 6542175493 (head
c5e54f78, 2026-10-31T10:22Z), with the in-seatTIER_DEFAULTClause-② review PASS in the same record. Lands on all-green via the merge queue.Generated by Claude Code
objectstack-fleet commentedon Oct 31, 2026
domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv
Landed · 2026-10-31T10:57Z · PR #28395 merged through the merge queue as
ac09e7b8at 2026-10-31T10:56Z (first pass, no kick).Fixes #28369closed the card as completed.pm:dispatchedis removed in this same stroke.ui/origin/main~40)origin/main)engine.validation.spec.*rows in studiozh.tssnakeCaseIdentifiergrep 1)liwraps (whitespace-normal break-wordsinResourceEditPage.tsx)truncateThe record stands as ACCEPT 6542175493, with the in-seat
TIER_DEFAULTClause-② review PASS.Generated by Claude Code