Skip to content

test(rest,dogfood): enumerate the object-extension fold's property classes, and locate #8037 in i18n (#8037) - #8258

Merged
huangyiirene merged 1 commit into
mainfrom
claude/issue-8037-extension-label-leak
Aug 13, 2026
Merged

test(rest,dogfood): enumerate the object-extension fold's property classes, and locate #8037 in i18n (#8037)#8258
huangyiirene merged 1 commit into
mainfrom
claude/issue-8037-extension-label-leak

Conversation

@huangyiirene

Copy link
Copy Markdown
Collaborator

Part of #8037

⚠️Deliberately Part of, not Fixes — this must NOT close#8037. The card asked for a label leak 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 — +62

Why 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:

mergeObjectDefinitions handles its inputs three different ways: fields (key-keyed spread, idempotent), validations/indexes (concatenated, not idempotent), and scalars like label (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 label fix is not here.

⛔ Open decision — why this card stays open

The dev stopped rather than choosing, correctly. The fork it recorded:

should the catalog lose to an explicit override, or should the untranslated diagnostic be reconciled with the translated reads?

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

…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
@vercel

vercelBot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredAug 13, 2026 12:36am

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

No hand-written docs reference the 0 changed package(s). ✅

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/lteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Object-extension fold leaks the extension's label onto ?layers=true only — the two reads #7556 reconciled on FIELDS now disagree on LABEL

2 participants

@huangyiirene@claude