You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Five more published service READMEs document a .configure() entry point and classes that exist nowhere in the repo — the same defect class as #9517, unfixed by it #9532
Found while implementing #9517 (plugin-audit's published README). That card's own text asked for this check — "worth checking the sibling plugin READMEs in the same pass: if this one drifted this far unnoticed, the mechanism (no gate reads published READMEs against exports) is not specific to this package." It is not. ⛔ Filed rather than fixed in that PR: five packages, each needing its own measurement of its real surface, which is nowhere near the bounded in-place bar.
What is wrong
Five published service READMEs document an entry point that does not exist, in the same shape #9517 documented:
# no class in this repo exposes a static configure()
git grep -n "static configure" -- 'packages/**/*.ts' # → nothing
# and the identifiers themselves are not exported anywhere
git grep -c "export .*ServiceAnalytics\b" -- 'packages/**/src/**/*.ts' # → 0 files
git grep -c "export .*ServiceAutomation\b" -- 'packages/**/src/**/*.ts' # → 0 files
git grep -c "export .*ServiceCache\b" -- 'packages/**/src/**/*.ts' # → 0 files
git grep -c "export .*ServiceJob\b" -- 'packages/**/src/**/*.ts' # → 0 files
⇒ It is not a renamed or moved API. The class the README imports does not exist, and the static it calls has never existed on anything. A reader following any of these five writes code that cannot compile — and because all five are in their packages' files arrays with private unset, these are the pages npm renders.
Why this is worth its own card
#9517 was graded urgent because a published README is the artifact a prospective user reads first, and because nothing detects this class: no gate reads a published README against its package's actual exports. Fixing plugin-audit closed one instance. The mechanism is untouched, and here are five more instances of it, found by a single grep.
⚠️ Severity is deliberately not asserted here. #9517's extra weight came from a SOC 2 / HIPAA / GDPR banner on top of the fabricated API; I have not checked whether any of these five carries a comparable claim, only that the entry point is fabricated. That check belongs to whoever picks this up.
Suggested disposition
Two separable pieces, and the second is the one that stops this recurring:
A gate, which is the actual fix for the class: something that reads each published README's import { X } from '@objectstack/<pkg>' lines and its X.method( call sites against the package's built .d.ts, and fails when a documented symbol is absent from the exports. That is the check whose absence let both plugin-audit's shipped README documents an auditService API and a row shape that do not exist — a published compliance-capability claim with no runtime behind it #9517 and this drift for as long as they did. ⚠️ Worth scoping carefully — a naive version will drown in false positives on prose and pseudo-code — but the narrow form (only import statements naming a workspace package, only in files listed in files) is tractable.
Refs: #9517 (the plugin-audit instance, and the ruling that shaped its rewrite) · PR #9531 (that rewrite).
Found while implementing #9517 (plugin-audit's published README). That card's own text asked for this check — "worth checking the sibling plugin READMEs in the same pass: if this one drifted this far unnoticed, the mechanism (no gate reads published READMEs against exports) is not specific to this package." It is not. ⛔ Filed rather than fixed in that PR: five packages, each needing its own measurement of its real surface, which is nowhere near the bounded in-place bar.
What is wrong
Five published service READMEs document an entry point that does not exist, in the same shape #9517 documented:
packages/services/service-analyticsServiceAnalytics.configure({...})files: ['dist','README.md','CHANGELOG.md'],privateunsetpackages/services/service-automationServiceAutomation.configure({...})packages/services/service-cacheServiceCache.configure({...})packages/services/service-i18n.configure({...})packages/services/service-jobServiceJob.configure({...})Two independent measurements, both zero:
⇒ It is not a renamed or moved API. The class the README imports does not exist, and the static it calls has never existed on anything. A reader following any of these five writes code that cannot compile — and because all five are in their packages'
filesarrays withprivateunset, these are the pages npm renders.Why this is worth its own card
#9517 was graded urgent because a published README is the artifact a prospective user reads first, and because nothing detects this class: no gate reads a published README against its package's actual exports. Fixing plugin-audit closed one instance. The mechanism is untouched, and here are five more instances of it, found by a single grep.
Suggested disposition
Two separable pieces, and the second is the one that stops this recurring:
auditServiceAPI and a row shape that do not exist — a published compliance-capability claim with no runtime behind it #9517 — measure the surface, delete what is false, document only what can be pointed at. Five independent judgment calls; not mechanical.import { X } from '@objectstack/<pkg>'lines and itsX.method(call sites against the package's built.d.ts, and fails when a documented symbol is absent from the exports. That is the check whose absence let both plugin-audit's shipped README documents anauditServiceAPI and a row shape that do not exist — a published compliance-capability claim with no runtime behind it #9517 and this drift for as long as they did.importstatements naming a workspace package, only in files listed infiles) is tractable.Refs: #9517 (the plugin-audit instance, and the ruling that shaped its rewrite) · PR #9531 (that rewrite).