Observation-class finding, filed unassigned per Prime Directive #10. Found while reconciling the i18n checklist for #7686 (item 3); recorded there as a waiver, not fixed, because showcase code is outside that card's declared file surface.
What
packages/spec/src/system/translation.zod.ts declares a per-view empty-state translation surface:
objects.<object>._views.<view_name>.emptyState.title
objects.<object>._views.<view_name>.emptyState.message
No view in examples/app-showcase authors an emptyState at all — a grep for emptyState across examples/app-showcase/src returns nothing, in the view definitions and in src/system/translations/index.ts alike. The declared group therefore has no reachable instance on the stock fixture: a zero-row view renders the console's own built-in placeholder, which is console chrome and not a resolution of this key.
Why it is worth writing down
The QA run #7640 tried to drive this variant of i18n.surface-matrix and could not — there is no translated key to render, so the clause lands blocked(fixture) on every run rather than testing the resolver. The checklist now waives it explicitly (i18n.surface-matrix → fixtures.knownGaps, revision 3), which stops each sweep from rediscovering it, but the waiver is a debt marker: paying it down means authoring one emptyState onto a showcase view plus its zh-CN bundle entry, after which the waiver flips back to a live clause.
Note examples/app-showcase/src/coverage.ts does not track emptyState either, so the showcase's demonstrated-or-waived ratchet does not currently see this gap from its side.
Not a defect today
Nothing a user hits: the spec declares the surface, and an app that authors an emptyState presumably gets it translated — that is exactly what no fixture proves either way. The cost is a permanently unprovable clause in the i18n matrix. Recording it so triage grades it rather than leaving it inside a checklist waiver.
Options, not a decision
- Author the fixture — add
emptyState: { title, message } to one showcase view (a filtered slice that is genuinely empty on seed data reads best) and the matching objects.<object>._views.<view>.emptyState entry to the zh-CN bundle. Un-waives the clause and demonstrates the surface. - Leave it waived — accept that this one group is asserted by the spec's own tests rather than by an end-to-end run, and keep the knownGap as the record.
Source: QA run #7640 · checklist card #7686.
Observation-class finding, filed unassigned per Prime Directive #10. Found while reconciling the i18n checklist for #7686 (item 3); recorded there as a waiver, not fixed, because showcase code is outside that card's declared file surface.
What
packages/spec/src/system/translation.zod.tsdeclares a per-view empty-state translation surface:No view in
examples/app-showcaseauthors anemptyStateat all — a grep foremptyStateacrossexamples/app-showcase/srcreturns nothing, in the view definitions and insrc/system/translations/index.tsalike. The declared group therefore has no reachable instance on the stock fixture: a zero-row view renders the console's own built-in placeholder, which is console chrome and not a resolution of this key.Why it is worth writing down
The QA run #7640 tried to drive this variant of
i18n.surface-matrixand could not — there is no translated key to render, so the clause landsblocked(fixture)on every run rather than testing the resolver. The checklist now waives it explicitly (i18n.surface-matrix→fixtures.knownGaps, revision 3), which stops each sweep from rediscovering it, but the waiver is a debt marker: paying it down means authoring oneemptyStateonto a showcase view plus its zh-CN bundle entry, after which the waiver flips back to a live clause.Note
examples/app-showcase/src/coverage.tsdoes not trackemptyStateeither, so the showcase's demonstrated-or-waived ratchet does not currently see this gap from its side.Not a defect today
Nothing a user hits: the spec declares the surface, and an app that authors an
emptyStatepresumably gets it translated — that is exactly what no fixture proves either way. The cost is a permanently unprovable clause in the i18n matrix. Recording it so triage grades it rather than leaving it inside a checklist waiver.Options, not a decision
emptyState: { title, message }to one showcase view (a filtered slice that is genuinely empty on seed data reads best) and the matchingobjects.<object>._views.<view>.emptyStateentry to the zh-CN bundle. Un-waives the clause and demonstrates the surface.Source: QA run #7640 · checklist card #7686.