Uh oh!
There was an error while loading. Please reload this page.
docs(spec): sync i18n-label-resolver's pickLocalized reference to objectui#3907 - #7953
Conversation
…ectui#3907 (#7864) objectui PR #4359 hardened pickLocalized to own-property reads plus a string filter on every limb, collapsing to zero the two rule departures resolveI18nLabel documented as deliberate narrowings of its reference. The verbatim copy embedded in i18n-label-resolver.test.ts stayed green while silently stale. - Refresh the verbatim reference copy to objectui origin/main d8d0d66 / blob 30fcb0a8 and update the pin comment. - Flip the two assertions that pinned the old prototype-chain and object-stringification behavior to the converged answers (a guard makes its limb miss, it does not abort resolution). - Mirror the 18-vector CONVERGED table from objectui's plugin-list parity suite into PARITY_VECTORS as the sync's acceptance fixture. - Reword the "the two deliberate departures" describe title and the resolver's module doc to record the convergence, keeping only the two differences that survive: the miss spelling ('' vs undefined) and the top-level scalar pass-through, which objectui#3907 did not touch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016YBUGvukaeVu9DjKdsHJa9
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
📓 Docs Drift CheckThis PR changes 1 package(s): 106 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
⛔ 7 release-owned page(s) also reference the affected code. These are read-only:
|
Uh oh!
There was an error while loading. Please reload this page.
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 31582369294 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 失败的 job(日志抽取,best effort):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
os-zhuang
commented
Aug 12, 2026
Queue-ejection triage receipt (spec-surface lane seat, session Readings taken (per the triage checklist above):
Verdict: checklist branch 3 (not ours, not yet a proven flaky) ⇒ single re-queue. ⛔ If the SAME signature ejects this PR again: no further re-queue — escalate and file the flaky finding for Generated by Claude Code |
Fixes#7864
What was wrong
objectui PR #4359 (objectui#3907) hardened
pickLocalizedto own-propertyreads plus a
typeof === 'string'filter on every limb, collapsing to zerothe two RULE departures
resolveI18nLabel(
packages/spec/src/ui/i18n-label-resolver.ts, from #6765) documented asdeliberate narrowings of its reference.
i18n-label-resolver.test.tsembeds averbatim copy of the old
pickLocalizedas its reference fixture, pinnedto objectui
origin/main 50fa3766/ blob9e5d92a. Because the copy is localrather than imported, that suite stayed green while silently stale.
What changed
origin/main d8d0d665dceba53dada4994f1eeef9f83bf1cf91/ blob30fcb0a86343b9b937432a1b2ea89e0a78321f46(last touched by objectui PRfix(spec)!: 退役处方指向 protocol 17 —— 这趟车真正会发的 major (#4350) #4359 / objectui#3907), and updated the pin comment.
pickLocalizedReference({ en: 'Owner' }, 'constructor')to be'Owner'(was
.toContain('function Object')), and the off-spec-value case nowexpects
pickLocalizedReference(offSpec, 'zh-CN')to be'Owner'(was.toBe('[object Object]')) — per objectui PR fix(spec)!: 退役处方指向 protocol 17 —— 这趟车真正会发的 major (#4350) #4359's own miss-vs-abortcorrection: "A guard makes its limb miss; it does not abort the
resolution...
pickLocalized({ en: 'Pricing' }, 'constructor')is'Pricing', not''."CONVERGEDtable from objectui'splugin-list/src/__tests__/i18nLabel-resolver-parity.test.tsintoPARITY_VECTORSas the sync's acceptance fixture — every row is nowasserted against the refreshed reference AND against
resolveI18nLabel,plus the single-pass "every vector agrees" check.
(Note: the issue and its triage comment describe this as a "19-vector"
table; measured count on objectui
origin/mainis 18 — noted for therecord, not blocking.)
describe('...the two deliberate departures...')title andbody to
'the rule departures converged with objectui#3907; one departure survives', and the resolver's module doc## Two deliberate departuressection to
## Rule departures — converged as of objectui#3907, zero remain+ a new## What still differssection.What did NOT change (guard honored)
The top-level scalar pass-through departure (
pickLocalized(42, 'en')⇒'42'vsresolveI18nLabel(42, 'en')⇒undefined, pinned in'refuses an off-contract scalar rather than stringifying it') survives untouched —it concerns the value parameter, not a limb, and objectui#3907 did not touch
it. Zero runtime-code lines changed in
i18n-label-resolver.ts; only themodule-doc prose moved.
Changeset measurement
The reworded module-doc prose is a non-
.zod.tsfile, so no reference-pageregeneration is expected. Measured directly: after
pnpm --filter @objectstack/spec build, the rewritten## Rule departures/## What still differssections appear verbatim inpackages/spec/dist/ui/index.d.ts:713-767, immediately preceding theexported
resolveI18nLabeldeclaration. Since it reachesdist/**/*.d.ts, apatch changeset was added
(
.changeset/i18n-label-resolver-parity-doc-sync.md) rather thanskip-changeset.Verification
pnpm --filter @objectstack/spec build— green (dist regenerated, docreaches
.d.tsas noted above).pnpm --filter @objectstack/spec test(full package suite, flock-serialized,--max-old-space-size=4096): 381 test files / 10067 tests passed.vitest run src/ui/i18n-label-resolver.test.ts: 1 file / 99tests passed (up from the pre-change file's assertion count — the 18
mirrored CONVERGED vectors plus the flipped/reworded departure tests).
pnpm --filter @objectstack/spec typecheck(tsc --noEmit+scripts-typecheck + test-typecheck): green, 0 new errors; the
@ts-expect-errordirectives on the scalar-refusal test still hold (test-typecheck debt count
unchanged at 57 files / 265 errors, per the shrink-only ledger
@ts-expect-error退役 pin 在packages/spec里是幽灵检查:tsconfig 把**/*.test.ts排除出唯一的tsc --noEmit#5286).node scripts/check-nul-bytes.mjs: OK.pnpm check:adr-anchors: OK (self-test + full audit green).npx changeset status: the new patch changeset parses and propagatescorrectly.
Generated by Claude Code