Found while implementing #5916 (stage state in the accessible name), in the same file but outside that card's fence — filing rather than folding in.
packages/plugin-detail/src/renderers/record-path.tsx has three author-facing aria-label literals that #5916 deliberately did not touch. The card that filed #5916 named them in passing ("rather than the hardcoded English the component currently uses for its container labels") as the reason #5916 needed i18n keys, not as a request to fix them.
Two distinct defects
1. English literals on a localized surface. Both the desktop and the mobile row:
aria-label={(schema.aria)?.label || 'Record path'}
A zh/ja/ar session hears Record path for the list itself, while every stage inside it now announces in the session locale (#5916 added detail.pathStage* to all ten packs). So one control announces in two languages at once. The fallback should be a pack key like the stage states are; the schema.aria.label author override stays ahead of it.
2. aria-label on an element with no role, which is ignored. The lost-terminal alt group:
<div className="flex items-start gap-1.5 pl-2 border-l border-border/40" aria-label="Alternative terminal stages">
This is a plain div — a generic role. Browsers do not expose an accessible name on generic elements, so this label reaches nobody today: it is not merely untranslated, it is inert. Whatever the group should announce, it needs a role that takes a name (or a different mechanism) before the string matters. Worth deciding whether the group should be announced at all, since the stages inside it already say closed lost after #5916.
Scope note
Not folded into #5916: (1) is an i18n defect rather than that card's WCAG 1.4.1 colour-alone defect, and (2) needs a decision about what the group should be, not a mechanical string swap. Neither shape is pinned by existing evidence, so both fail the bounded-in-place bar.
Related: #5916 (the stage-state fix, which leaves these three literals exactly as they were).
Generated by Claude Code
Found while implementing #5916 (stage state in the accessible name), in the same file but outside that card's fence — filing rather than folding in.
packages/plugin-detail/src/renderers/record-path.tsxhas three author-facingaria-labelliterals that #5916 deliberately did not touch. The card that filed #5916 named them in passing ("rather than the hardcoded English the component currently uses for its container labels") as the reason #5916 needed i18n keys, not as a request to fix them.Two distinct defects
1. English literals on a localized surface. Both the desktop and the mobile row:
A zh/ja/ar session hears
Record pathfor the list itself, while every stage inside it now announces in the session locale (#5916 addeddetail.pathStage*to all ten packs). So one control announces in two languages at once. The fallback should be a pack key like the stage states are; theschema.aria.labelauthor override stays ahead of it.2.
aria-labelon an element with no role, which is ignored. The lost-terminal alt group:This is a plain
div— agenericrole. Browsers do not expose an accessible name on generic elements, so this label reaches nobody today: it is not merely untranslated, it is inert. Whatever the group should announce, it needs a role that takes a name (or a different mechanism) before the string matters. Worth deciding whether the group should be announced at all, since the stages inside it already sayclosed lostafter #5916.Scope note
Not folded into #5916: (1) is an i18n defect rather than that card's WCAG 1.4.1 colour-alone defect, and (2) needs a decision about what the group should be, not a mechanical string swap. Neither shape is pinned by existing evidence, so both fail the bounded-in-place bar.
Related: #5916 (the stage-state fix, which leaves these three literals exactly as they were).
Generated by Claude Code