Uh oh!
There was an error while loading. Please reload this page.
docs(qa): reconcile the i18n checklist items with the shipped contract (#7686, #7684) - #7715
Merged
Merged
Conversation
#7686, #7684) Five itemised edits to docs/qa/platform-checklist/areas/i18n.json, all falling out of the i18n area run #7640. No other file is touched. build-gates-hold (rev 2) — step 4 was a no-op: perturbing a bundle VALUE is green by design under merge mode, where the committed file is its own baseline. Reworded to the structural perturbation (remove/rename a KEY) that actually bites, with the symlink-farm technique that drives it without touching a repo file; the drift clause and both negatives now say a green value edit is not a gate defect. surface-matrix (rev 3) — the _sections step pointed at the task detail page, whose record:details block authors label-only sections that render their EN label in every locale by design. The variant is addressable after all: it now reads off the named-section form views (task.view.ts tabbed/wizard/split, contact.view.ts), whose section names the bundle already translates, and the nameless record page is written down as a knownGap plus a qualifier on the resolver negative. The emptyState variant is waived as blocked(fixture) — no showcase view authors one — with the debt recorded rather than faked. studio-follows-app-locale (rev 3) — the mixed-language clause forbade what the frozen coverage debt guarantees, contradicting the sibling item that already declares that debt legitimate. It now judges against the bundle: translated keys render translated, untranslated keys render their EN source label, a raw dotted key is the unconditional FAIL. notification-localized-and-clears (rev 3) — c0/c4 assumed a per-recipient localized notification title, a capability the spec retired (translation.zod.ts:341; sys_user has no locale; #3403). c0 now asserts the flow-authored literal title with placeholders interpolated, c4 asserts the title is recipient-independent, and the retirement is cited on the item so the premise is not re-asserted. The mechanical read/clear clauses are untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015hRud1GLYg5io28iSJmQGh
A waiver is a debt marker and needs a live reference; the fixture gap was filed unassigned as #7714 after the first commit was written. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015hRud1GLYg5io28iSJmQGh
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
This was referenced Aug 11, 2026
huangyiirene
marked this pull request as ready for review
August 11, 2026 12:10
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#7686
Fixes#7684
Five itemised edits to
docs/qa/platform-checklist/areas/i18n.json, all falling out of the i18n area run #7640. Docs-only, one file, no code and nocoverage.jsonchange.Per-card checklist
#7686 — items 1–4 (item 5 is #7684 below, not double-edited)
build-gates-holdstep 4/tmpsymlink-farm technique that drives it red-then-green without touching a repo filebuild-gates-holdacceptance c2build-gates-holdnegativessurface-matrix_sectionsstep_sectionsgroup)"task.view.ts's tabbed/wizard/split form views andcontact.view.ts's default form, whose sectionnames the bundle already translates — and records why the task detail page cannot servesurface-matrix_sectionsgapfixtures.knownGapsentry: therecord:detailsblock ontask-detail.page.tsauthors label-only sections, andcomponent.zod.tsdocuments that a nameless section renders its authored label in every locale; the resolver negative gains the matching qualifier so English there can no longer be filed as a resolver defectsurface-matrixemptyStatestepemptyState.title/message"blocked(fixture), with an explicit ⛔ against manufacturing coverage from the console's built-in zero-row placeholdersurface-matrixemptyStategapfixtures.knownGapswaiver naming the missing fixture and its debt, pointed at the tracking issue #7714surface-matrixvariantsview empty states (…)·detail section labels (…)blocked(fixture)· via a named-section form view)studio-follows-app-localeclause 1studio-follows-app-localefixtures / negativeknownGaps; unqualified negativeknownGapsmirrors the sibling's (451 untranslated declared labels held flat bycheck-i18n-coverage.mjs+i18n-coverage-baseline.json; #7640'sAnnouncement/Business Unit/ … are inside it), and the negative carries the same qualifier#7684 — c0/c4 rewritten per the PM ruling
{record.*}placeholders interpolated; an English title on a Chinese session is the PASS, an unsubstituted placeholder is the FAIL — interpolation, not translation, is what the clause testsPOST /notifications/read+ survives-reload re-readfixtures.knownGaps+source):translation.zod.ts:341guidance verbatim,sys_userhas nolocale,notify-node.tsinterpolatescfg.titlewith no locale lookup, #3403 moved assignment notifications to app-authored flows (pinned byaudit-writers.test.ts)collab.assignmentnotification"localStorage['objectui-locale']takes language-onlyzh;zh-CNis rejected and silently boots en — #7640); the trigger names the showcase flow'stask.assignednotify node, with ⛔ notcollab.assignmentnotificationskey to "fix" it is a FAIL of the fixEvery touched item bumps
revisionand appends ahistoryentry per the README lifecycle rule (build-gates-hold1→2;surface-matrix2→3;studio-follows-app-locale2→3;notification-localized-and-clears2→3).Premise verification (before editing, against
origin/main@21888ab)notification-localized-and-clearsc0/c4 assume a per-recipient localized title — a capability the spec retired #7684's ruling premise holds.packages/spec/src/system/translation.zod.ts:341still carries thenotificationsretirement guidance verbatim, and no notification-copy translation group has appeared.sys_userdeclares nolocalefield.notify-node.tscomputes the title asinterpolate(cfg.title …)with no locale consulted.collab.assignmentsurvives only in regression pins asserting the kernel does not emit it.plugin-audit'scollab.mentionwriter does resolve a per-recipient title (messages.mentionedYouviaresolveWriteLocale(tenantId, uid)). That is a different producer resolving the long-declaredmessagesgroup — not anotificationsgroup and not the app-flow path this item drives — so it is not the fork condition the ruling named, and no fork-report was warranted. It is written intoknownGapsso the next author overshoots in neither direction._sections/emptyStatefixtures, clause-1 frozen-debt reconcile #7686 item 2's premise is partly false, and the item is better for it. The card read_sectionsas having "no addressable surface on this fixture". True of the task detail page; false of the object's form views —task.view.ts(tabbed/wizard/split) andcontact.view.tsdeclare stable sectionnames, and the showcase bundle already translates exactly those (概览/排期/详细信息, 联系方式/工作信息/状态/备注). So the clause is adjusted to what the fixture affords rather than waived, and the nameless record page is documented as the gap.emptyStateacrossexamples/app-showcase/srcreturns nothing; the showcase's frozen debt is the 451-label entry inscripts/i18n-coverage-baseline.json.Gates
pnpm check:platform-checklist— identical before and after this change: one problem,coverage.json · qa: UNCLASSIFIED, the known base red tracked at finding:check:platform-checklistis red onmain— the newqaliveness ledger is neither mapped nor waived in coverage.json #7347. No new structural, revision/history orenumSourcefinding.JSON.parseclean.node scripts/check-nul-bytes.mjs— OK, 7104 text files, no raw control bytes; plus a targeted self-scan of the edited file (clean).git diff --stat—docs/qa/platform-checklist/areas/i18n.json | 116 +++--, one file, 1:1 with the declared surface.Docs-only, releases nothing → no changeset;
skip-changesetapplied.Out-of-scope finding filed
emptyState, so theobjects._views.<view>.emptyStatetranslation surface has no fixture to test #7714 — the showcase authors no view empty state, so the declaredobjects._views.[view].emptyStatesurface has no fixture. Filed unassigned,finding; the checklist waiver points at it.Generated by Claude Code