Uh oh!
There was an error while loading. Please reload this page.
test(rest,dogfood): enumerate the object-extension fold's property classes, and locate #8037 in i18n (#8037) - #8258
Merged
Conversation
…asses, and locate #8037 in i18n (#8037) `mergeObjectDefinitions` touches six keys in three merge kinds — `fields` (key-keyed spread), `validations`/`indexes` (concatenated), and the three scalars `label`/`pluralLabel`/`description` (last-writer-wins). A fold therefore has three distinct failure modes, and a field-name pin sees one: that is how #8027 escaped #8015's pin, and #8037 escaped both. Adds a sweep over all six properties across twelve host shapes, asserting each read against the registry's resolved schema (ADR-0029 D9.2) rather than against another route. The sweep establishes that #8037 is NOT a fold defect: the fold returns the same body — `label` included — to the by-name read and to the layered read. `translateObject` resolves each scalar as `catalog ?? document`, the showcase catalog declares `showcase_account.label = "Account"`, and only the two translated reads are affected because `?layers=true` is deliberately not translated. The same mechanism defeats a TENANT's rename, which is strictly more severe and is escalated rather than decided here. No behaviour change — tests only. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016UoPTH7ScgJhAEgPF2WAUP
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Contributor
📓 Docs Drift CheckNo hand-written docs reference the 0 changed package(s). ✅ |
huangyiirene
marked this pull request as ready for review
August 13, 2026 00:48
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 13, 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 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.
Part of #8037
Part of, notFixes— this must NOT close#8037. The card asked for alabelleak in the object-extension fold to be fixed. The dev's measurement relocates the defect: the divergence is in i18n, not in the fold. So the card's own premise is corrected rather than satisfied, and a design fork is left open (see below).Opened by the PM on the dev agent's behalf. The cloud dev container cannot reach the GitHub API (403 on every call); it can only
git push. The branch, commit, tests and changeset are entirely the dev's work.What this is — test-only, no source change
Three files, 708 insertions, 0 deletions: a changeset and two test files. No production code is modified.
packages/rest/src/meta-object-extension-property-classes.test.ts— +468 (new)packages/rest/src/…-object-extension-scalar-divergence.dogfood.test.ts— +178 (new).changeset/object-extension-fold-property-class-sweep.md— +62Why the enumeration is the deliverable
This is the third card in one family, and the family exists because each pin was blind to the next defect:
GET /meta/object/:name(present in the list route) — the overlay's fields can never be set through the UI #7556 / PR fix(metadata-protocol): an object extension reaches the by-name/metaread, not just the list (#7556) #8015 reconciled the by-name and list reads onfields.objectExtensionsfield from the resolved schema, andeffectivecontradictscodein the same response #8027 / PR fix(metadata-protocol): an object's overlay row is a base layer, not its resolved schema (#8027) #8045 then foundvalidations/indexesduplicated — invisible to fix(metadata-protocol): an object extension reaches the by-name/metaread, not just the list (#7556) #8015's pin because that pin compares field names, and the field spread is idempotent.labelonto?layers=trueonly — the two reads #7556 reconciled on FIELDS now disagree on LABEL #8037 arrived next, aboutlabel.mergeObjectDefinitionshandles its inputs three different ways:fields(key-keyed spread, idempotent),validations/indexes(concatenated, not idempotent), and scalars likelabel(last-writer-wins). A pin over one class proves nothing about the others — which is exactly how three cards arrived in sequence. This PR enumerates every property class the fold touches, so the next member of the family fails on a unit here instead of arriving as a fourth card.⭐ That enumeration is worth landing on its own merits even though the
labelfix is not here.⛔ Open decision — why this card stays open
The dev stopped rather than choosing, correctly. The fork it recorded:
That is product semantics about i18n precedence, not an implementation detail. It is being carried to the maintainer; ⛔ this PR does not pre-empt it.
Review status
Draft pending my review of the diff and CI convergence. Test-only changes cannot regress behaviour, but a test that pins the wrong thing is worse than no test — so the enumeration's assertions get read on their own terms, ⛔ not accepted because "tests are additive".
Generated by Claude Code