Uh oh!
There was an error while loading. Please reload this page.
docs(plugin-detail): downstream-consumer census for PointInTimeRestore — hotcrm zero (controls hold), cloud NOT MEASURED - #7191
Conversation
…nTimeRestore objectui#7163 measured zero IN-REPO consumers for the barrel-exported `PointInTimeRestore`. That is not the same claim as zero consumers, because the component is published public API, so this records the downstream reading instead. hotcrm, measured at a6be39a3d by anonymous shallow clone: zero on every spelling (case/separator-insensitive, named import, type import, lazy import, kebab and snake type strings), against a positive control of 104 plugin-detail node references resolved in that same repo on that same instrument. It is also structurally unreachable there -- hotcrm has zero @object-ui imports and PointInTimeRestore is never registered with ComponentRegistry, so a metadata app has no type string to name it with. cloud is reported as NOT MEASURED: refused on three independent channels, two of them beside a live control in the same command. Bonus, at no marginal cost: PointInTimeRestore is one of seven plugin-detail barrel exports that are neither registered nor mounted anywhere in this repo, so it is the visible instance of a class rather than an isolate. No source, behaviour, or public-surface change. Retires nothing.
os-warren
commented
Sep 1, 2026
PM review — |
Uh oh!
There was an error while loading. Please reload this page.
Part of #7175 — this is the census only. ⛔ It deliberately does not close that card: whether a zero downstream justifies retirement is the PM's call, not this PR's.
Positive control, per repo — read this line first
Every number below is uninterpretable without it:
hotcrm@a6be39a3dplugin-detailnode references resolvedobjectui@899730e0acloudResult
No measured consumer anywhere renders⚠️ NOT MEASURED is not zero and not green.
PointInTimeRestore.hotcrmis a measured zero with controls that hold.cloudcould not be read at all and is reported as its own category —In
hotcrmthe component is not merely absent, it is structurally unreachable:hotcrmis a metadata app with 0 real@object-uiimports (the 3 mentions are all prose comments), so its only channel to an objectui component is a registered type string.PointInTimeRestoreis never passed toComponentRegistry.register—plugin-detailmakes 16 registrations and none is this one — and there is no auto-registration pattern in the barrel (0 hits).Spellings covered (all zero in hotcrm, all firing in objectui)
point[-_ ]?in[-_ ]?time[-_ ]?restore, case-insensitive (covers kebab, snake, camel, Pascal)PointInTimeRestoreexact identifierPointInTimeRestorePropsRevisionEntryco-exported typepoint[-_ ]?in[-_ ]?timeimport(...)formplugin-detailspecifierEvery near-miss attributed. The one semantic hit —
test/forecast-manual-override.test.ts:279, "deleting the manual row restores automated snapshotting" — is forecast snapshots, not revision history. Sibling identifier hits (DetailSection4,CommentInput3, …) are all prose, test docstrings, or@objectstack/spec/uitype names.Channel evidence — exit codes captured BEFORE any pipe
hotcrma6be39a3dobjectui(same-shape control)899730e0acloudcould not read Usernamels-remotecloudls-remotehotcrm(control)cloudyou don't have access to objectstack-ai/cloudcloudrefused on three independent channels, two beside a live control.Bonus (free, from the same instrument)
PointInTimeRestoreis one of seven ofplugin-detail's 29 component-shaped barrel exports that are neither registered nor mounted anywhere in this repo:CommentInput,DiffView,InlineCreateRelated,MentionAutocomplete,PointInTimeRestore,RecordNavigationEnhanced,RelationshipGraph. None has a dynamic reference either. ⇒ this is the visible instance of a class, not an isolate — the difference between one retirement card and an enforce-or-remove ledger. ⛔ Nothing here acts on the other six.RecordCommentsis also unregistered yetDetailViewmounts it at:1479and:1705. The class above is specifically both doors closed.The in-repo mount probe first matched a JSX opening tag as "the component name followed immediately by a space, a slash, or a closing angle bracket". It reported 0 mounts for
RecordComments— a component known to be mounted twice.Cause: grep is line-oriented, and in this codebase those JSX tags end the line — the opening tag is last on its line and the props start on the lines below — so the required trailing character was never on the same line and could never match. Fixed by allowing end-of-line as an alternative to that character class, which returns the expected 2 for
RecordComments.The whole sibling table was re-derived after the fix and gated on that control passing. A probe that cannot see its own known-positive is not measuring.
(The exact before/after patterns are written out in the audit doc, where markdown is not sanitizer-rewritten — the first version of this PR body had them eaten as HTML tags, which is its own small instance of the same lesson.)
Not committed as a test — on purpose
The method clones external repos, so it cannot run in CI, and a committed test that cannot run renders as coverage while measuring nothing (#7183). It is recorded as a re-runnable recipe in the audit doc instead.
Gates — union re-run at final commit
ca198eaa2check-control-bytesexit 0 — "check-control-bytes: OK (scanned 5956 tracked text file(s); skipped 85 binary)."check-changeset-presenceexit 0 — "No source or published contract of a released package changed in this range, so no changeset is owed."check-changeset-overwriteexit 0 — "No pre-existing changeset was modified or deleted."check-changeset-no-majorexit 0 — "No changeset declares amajorbump."check-doc-linksexit 0 — "Links are valid across 17 scan roots."The doc gates (
check-doc-component-types,check-doc-fence-languages,check-doc-snippet-types) walkcontent/docsand package READMEs only, so they do not readdocs/audits/**;lint:rootignoresdocs/**.Scope
⛔ No retirement, no deprecation, no
@deprecatedtag, no barrel change, no code removal. Diff is one new audit doc plus one empty-frontmatter changeset. Retiring a published component is ADR-0049 / ADR-0087 and narrows public surface; this PR only makes that decision possible.Session: https://claude.ai/code/session_012wwHa4aaFybxXrfmfHioDM