Repository navigation
docs(plugin-spec): use the page's own @vendor/* placeholder in the peerDependencies examples - #18912
Merged
Merged
Conversation
… peerDependencies example Both `peerDependencies` examples pinned `'@objectstack/ui': '^2.0.0'` — a package declared in neither this repo nor the npm registry, inside a block the page itself calls proposal-only. The page already carries a placeholder convention for a third-party package that need not exist (`@vendor/email` in the sibling `optionalDependencies` key five lines above, `@vendor/analytics` further down), while every `@objectstack/*` example on the page names a package that really exists. Rename both sites to `@vendor/ui`, keeping the block and the range. This invents nothing: the convention is already on the page, and the two disclaimers that name `peerDependencies` as proposal-only are untouched. Claude-Session: https://claude.ai/code/session_017ef78bLdybu3AffehKkhfk Co-authored-by: Claude <noreply@anthropic.com>
os-try-charles
marked this pull request as ready for review
September 18, 2026 05:37
This was referenced Sep 18, 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 #18417
What changed
Both
peerDependenciesexamples oncontent/docs/protocol/kernel/plugin-spec.mdxpinned'@objectstack/ui': '^2.0.0'— a package that is declared in neither this repo nor the npmregistry. Both sites now read
'@vendor/ui': '^2.0.0'. The block stays, the range stays, thetwo proposal-only disclaimers stay.
Two lines, one file. Sites were located by content, not by line number.
Why this arm (D), and why it invents nothing
Triage chose arm D — keep the block, move the name to the page's own placeholder form.
Reproduced independently on this branch, tree
objectstack-ai/objectstackat84ba4a847600dbecb55fcd2e31322ada19496f58(the branch base), file counts taken from the pageitself:
@vendor/emailon the pageoptionalDependencieskey, five lines above the defect@vendor/analyticson the pagepackage.jsonin the repo declaring a@vendor/*name@vendor/*really is a placeholder family"name": "@objectstack/core"packages/core/package.json— the scan reaches@vendor/ui@vendor/email(the name the page already ships)@objectstack/core(firing control)The page's other convention —
@objectstack/*names a package that exists — was measured pername rather than assumed:
core,spec,clieach resolve to a realpackages/*/package.json;uiresolved to nothing, which is this card.Arms B (name a real package) and C (delete the block) were both ruled out by triage, and A is the
defect itself. D is the only arm that satisfies both of the page's existing conventions at once.
The one page convention that looked like a third one, and why it does not conflict
@objectstack/testing(3 occurrences, Plugin Testing section) is also declared nowhere and isalso 404 on npm — so the page does tolerate an inert
@objectstack/*name in one place. It is nota counter-example to D:
"there is no such published package today"; the two
peerDependenciesdisclaimers disclaim themanifest key (the schema declares it) and say nothing about the package. Different subject;
the precedent does not reach this site.
@objectstack/uipackageis planned — inventing a fact, which is the objection that ruled out arm B.
shared across plugins" — a third-party shared library, which is precisely what
@vendor/*marks,and precisely what
@mycompany/*(the reader's own org, 3 names on the page) does not.No third convention conflicts with D, so this does not go back to triage.
The follow-on delivery item triage proposed is NOT owed — reasoning
Triage suggested bringing the first example at line 71 inside the reach of the proposal-only
callout, on the premise that the nearest disclaimer is roughly 355 lines later. That premise does
not hold, twice over:
peerDependenciesexplicitly ("The displayName / author / license / homepage /optionalDependencies / peerDependencies / metadata / config / marketplace keys above are
proposal-only — the schema declares none of them"). It sits 112 lines after the first
example, not 355.
"src/manifest.ts — proposed authoring wrapper (see the callout below for the fields
ManifestSchema actually declares today)". The pointer is already inside the block, above the
defect.
A reader hitting line 71 is therefore inside a block that announces itself as a proposal and points
at the callout that grades it. Adding a third synonymous disclaimer to one page would be a new
defect, not a repair, so nothing further is added here.
Verification
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 39families for this change set. All 39 were run; reconciliation with
--ranreports39 derived, 39 run, 0 UNRUN.(
check:doc-formula-expressions,check:doc-security-posture,check:docs-transcript-driftatexit 3;
check:docsandcheck:skill-examplesat exit 1 with prerequisite text). After building@objectstack/spec,@objectstack/lint...,@objectstack/formulaand@objectstack/client-react...,all five re-ran at exit 0.
check:skill-examplesis the one that actually reads this page's fencedTypeScript: "258 prose examples type-check across 3 surface(s)".
grep -naPfor the control range returns exit 1, nomatches.
nothing whose failure could be demonstrated.
Changeset
skip-changeset, measured rather than assumed: of the 70 non-private workspace packages, 0carry a
files[]entry matching content or docs; positive control on the same scan, 70 ship adistentry. Nothing published moves, so no released package takes a version bump from this diff.Acceptance notes
@objectstack/testingis inert in the same way@objectstack/uiwas, at 3 sites in the PluginTesting section. It is already disclaimed in place by its own callout, and that section is held by
the epic docs + scaffold:
plugin-spec.mdxstops promising the non-existent@objectstack/testingand points at@objectstack/verify; thecreate-objectstackblank template ships a test story (epic hotcrm#1579, step 5b) #15952, so it is left alone here — noted, not filed.Generated by Claude Code