Repository navigation
refactor(types): retire the orphaned ObjectTrigger and ObjectRelationship exports - #6085
Merged
yinlianghui merged 1 commit intoAug 24, 2026
Merged
Conversation
…ship exports Both interfaces existed solely to type members of the hand-written object document mirror that objectui#5362 retired when it derived ObjectSchemaMetadata from @objectstack/spec/data's ServiceObject. The spec's object document declares neither a triggers nor a relationships member, so the two interfaces have had nothing to type since that derivation landed. Measured before removing: zero references in this repo outside the declaration and the src/index.ts re-export, and zero in the sibling objectstack checkout (which does import @object-ui/types in eleven files). Absence of spec correspondence verified at type level against the installed @objectstack/spec 17.2.0 rather than inherited. Declaration and barrel entry removed together for each symbol. Type-only; nothing is emitted and no runtime behaviour moves. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CSoz9uGhaaSgiq3hshtN7L
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
yinlianghui
marked this pull request as ready for review
August 24, 2026 16:32
yinlianghui
deleted the
claude/issue-5859-retire-orphaned-object-exports
branch
August 24, 2026 16:44
This was referenced Aug 24, 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.
Fixes #5859
Retires
ObjectTriggerandObjectRelationshipfrom@object-ui/types— two hand-written interfaces orphaned by theObjectSchemaMetadataderivation (#5362). Option A of the card, per the triage adjudication of 2026-08-24.Verified at head
2d5cadc6d.What was removed
ObjectTriggerpackages/types/src/field-types.ts:817packages/types/src/index.ts:477ObjectRelationshippackages/types/src/field-types.ts:902packages/types/src/index.ts:480Both halves for both symbols — declaration and barrel entry together. Deleting either half alone is a build break or a dead declaration. 58 lines removed, type-only; nothing is emitted and no runtime behaviour moves.
Why they are orphans
Both existed solely to type members of the hand-written object-document mirror that #5362 retired:
triggers?: ObjectTrigger[]andrelationships?: ObjectRelationship[]. That mirror is now derived from@objectstack/spec/data'sServiceObject, and the spec's object document declares neither member.DataModelDesigner'srelationshipsstate is its own local model and never referenced these types.Measurements
The card's premise was re-measured rather than inherited. Every instrument below was given a control, because a zero-hit from an untested instrument is not a measurement.
Reference sweep (
packages/,apps/,examples/,*.ts/*.tsx,node_modulesanddistexcluded): both names appear only at their own declaration and the barrel re-export. Control by the identical method:ObjectSchemaMetadatain 3 files,ObjectIndexin 2,FieldMetadatain 26 — the instrument finds live names.Cross-repo probe in the sibling
objectstackcheckout (head3637731): zero hits for both names. Control: that repo imports@object-ui/typesin 11 files, so the probe could have found a cross-repo consumer had one existed.Spec correspondence, verified at type level against the installed
@objectstack/spec17.2.0 rather than by grep: neithertriggersnorrelationshipsis a key ofServiceObject. The probe carried controls in both directions —fieldsandnameassert present, and flipping one expectation made it fail witherror TS2322, so the instrument can produce both answers. Thetriggershits elsewhere in the spec are the plugin-manifest legacy alias (triggersmaps tohooks) and webhook/automation events, neither of which is the object document.Verification, and why the green means something
A deletion's verification is the reverse of a feature's: the sweep staying green is the positive evidence nothing consumed the symbols.
That green is weak alone — it is equally consistent with a build that never looked. So the same sweep was shown to go red: removing
FieldMetadata, a live sibling on the same barrel line, rebuilt todist, producederror TS2724: '"@object-ui/types"' has no exported member named 'FieldMetadata'at three consumer sites inpackages/plugin-detail, exit 2. The sweep detects exactly the failure a wrongly-removed export causes.pnpm --filter @object-ui/types type-checkvitest run packages/types/src— 56 files, 615 testspnpm --filter '...@object-ui/types' type-check— 42 consumers, allDoneeslintover the merge-base deltaanywarnings, 0 errors)pnpm check:esm-specifiersThe prefix form
...@object-ui/typesis the downstream/dependent direction — 42 packages, against 1 for the suffix form, which is the correct direction for a published-type removal.apps/siteandpackages/componentspass because@object-ui/react-runtimewas built first.check:esm-specifierswas run although the diff moves no relative import.Caveat this PR cannot measure away
In-repo zero is not npm zero. This is a published removal and an external consumer cannot be detected from this repository. An application importing either name will fail to compile after release. The changeset names both symbols verbatim so a host can search its own sources, and states the caveat rather than implying the removal is free.
Changeset ships
minor, notmajor: objectui's major tracks@objectstack's, andcheck-changeset-no-major.mjsrefusesmajoroutright.Draft, not enqueued, no auto-merge — the PM lands it.
Generated by Claude Code