Repository navigation
test(dogfood): pin what the reads serve for a dependent's email template locale the base does not ship (#28779) - #28800
Merged
Conversation
…ate locale the base does not ship A shape pin, measured on the showcase: a dependent package publishing the base template's name at a locale the base does not ship is served by the read naming the base and by the package-less read (stamped with the dependent's package id), and left out of the env-wide, base-scoped and executing lists, so a send in that locale renders the base's en-US. The cases marked SHAPE record today's answer pending the seat's decision. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEkQ5pFHjQjFRsVAurERSJ
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
This was referenced Nov 1, 2026
Contributor
Author
|
domain:server#2 · os-project-manager · session_0186vfjHHMsRXC9EUT9hTFMo 席位核对ACCEPT · The maintainer's standing authorisation for landing reviewed PRs, verbatim: 「按照 pm-dispatch 规则复核过的都授权」.
Generated by Claude Code |
This was referenced Nov 1, 2026
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 free
to 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.
Requested by Leehom · project thread
Refs #28779
Clause-②: no
Metadata-protocol: none
维护者速读
.custom)用基础包模板的名字发布一个基础包没有的语言(showcase 的任务完成邮件,fr-FR),各个读取今天返回什么。没有任何产品代码改动。packages/qa/dogfood/test/email-template-dependent-unshipped-locale-read.dogfood.test.ts的文件头(实测结论)与两个 SHAPE 用例。pnpm --filter @objectstack/dogfood exec vitest run test/email-template-dependent-unshipped-locale-read.dogfood.test.ts,预期 6/6 通过。<base>.customdeclares an override; a dependent package adds under its own names (ruled A, withdraws rider 3) #28390,卡留开着等席位裁定)。What changes
One new dogfood file, a shape pin over the real showcase and its HTTP doors. No product change. The card has two endings; this PR takes the second (
Refs, notFixes) because a read naming the base serves the dependent's body:fr-FR(showcase shipsen-USonly)GET /meta/email_template/NAME?package=DEPENDENT&member=fr-FR_packageId: DEPENDENT(expected)GET …?package=BASE&member=fr-FR_packageId: DEPENDENT,_provenance: orgGET …?member=fr-FR(package-less)GET /meta/email_template(env-wide),?package=BASE,getMetaItemsForExecutionfr-FRabsentIEmailService.renderTemplate({ locale: 'fr-FR' })en-USNothing stamps the dependent's body with the base's package id, but the base's address answers it on the by-name reads, and the lists (and so the email send path) do not. Mechanism, read from code at
8f294e04:servedOverlayRowCandidates); none exists atfr-FR, and the code layer has nofr-FR, so the read falls toSchemaRegistry.getItem(type, name, BASE, 'fr-FR'), whose last tier is the legacy first composite match across packages (ADR-0048 §3.3) and holds the dependent'sfr-FR.registry.getArtifactItemat the same arguments answers nothing.protocol.ts,soleShippingPackage(this.shippedArtifactsOf(type, itemName, …))) keeps a name one code package ships to that package's items at NAME grain, so any other package's member of that name is dropped, whatever its locale.Controls pinned: before the dependent writes,
fr-FRis 404 on both base-named reads; the base's ownen-USreads as the base's on every read; the dependent'sen-USsave is refused403 NOT_OVERRIDABLE(the #28777 gate); the pair's declared override ofen-USreads as the override on the by-name reads, the list and the render.Tests
packages/qa/dogfood/test/email-template-dependent-unshipped-locale-read.dogfood.test.ts: 6/6 pass at0127ab1f(tree identical to the head64d937f0). The cases namedSHAPErecord today's answer and are meant to move with the seat's ruling.Acceptance notes
<base>.customdeclares an override; a dependent package adds under its own names (ruled A, withdraws rider 3) #28390 in product words; the seat decides.overrides), measured on main8f294e04, own boot: admitted at save and publish; the read naming the pair, the read naming the base and the package-less read all serve the pair'sfr-FR(stamped_packageId: com.example.showcase.custom); the list scoped to the pair lists it; the env-wide list, the base-scoped list andgetMetaItemsForExecutionleave it out;renderTemplate({ locale: 'fr-FR' })renders the base'sen-US. So since fix(metadata-protocol)!: the override write gate judges an email template by its locale, so a pair's override of a locale the base does not ship is refused (#28746) #28777 afr-FRthe customer adds in.customis read but never sent. Same seam as the dependent's case (the list's NAME-grain narrowing). Not fixed here: making the list member-aware would also start sending the dependent'sfr-FRfor the base's template, which is the open question above. Readings:pm-orders/server/evidence/28779/probe3-readings.login the project files./layers?package=BASE&member=fr-FR) answered 404 in every state measured; not pinned, noted only.Verification
Gate sweep at
0127ab1f, the same tree as the head64d937f0(only the commit trailer was reworded, tree565c66dcon both):dispatch-gates --commandsderived 51 families; 51 run, all exit 0 (dispatch-gates --ranreads "51 run, 0 NOT-MEASURED", a derived zero). Two first ran exit 3 on a prerequisite and were re-run green:check-plugin-teardown-shape --self-test(its fixture commit was absent from the shallow clone) andcheck:dual-build-cjs-loads(seven packages outside the dogfood closure were unbuilt).check-nul-bytesOK. The record ispm-orders/server/28779-gates-ran.txtin the project files. No changeset: the only file is in the private@objectstack/dogfoodpackage, so the PR carriesskip-changeset. CI families are read from this PR's check-runs, not re-run here.Probe readings (dependent case)
Generated by Claude Code
🤖 Generated with Claude Code
https://claude.ai/code/session_01FEkQ5pFHjQjFRsVAurERSJ