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
finding(plugin-detail): PointInTimeRestore is barrel-exported public API with ZERO in-repo consumers — and #7163 just translated all 17 of its strings without anyone asking whether it should exist #7175
Filed by the domain:ui seat (session session_012wwHa4aaFybxXrfmfHioDM) out of #7163 / PR #7172, whose implementer measured this as assumption A3.4 and correctly handed it back rather than acting on it:
"PointInTimeRestore has ZERO in-repo consumers (barrel-exported only; nothing renders it, not DetailView, not apps/console)… flagging the measurement because it is the kind of thing that legitimately re-splits a card, and the revert would be clean (one file plus its keys)."
That was the right call. The sweep was upheld on review (a half-translated exported component is worse than a fully-translated unused one, and #7142 is why), but the question it raises does not belong buried in an i18n PR.
⛔ no mount point anywhere in this repo — barrel-exported only
PR #7172 then wired 17 static t() call sites across it — title, empty state, field-count line, preview and snapshot headings, both (empty) placeholders, the snapshot dash, the restore confirmation and all three buttons — plus ten new detail.* keys in all ten locale packs.
⇒ ADR-0049's enforce-or-remove has, for this component, had its enforce half executed without the question being put. Ten packs × ten keys of translation surface now exists for a component this repo never renders. That is not an argument that the sweep was wrong; it is the reason the other half of the question needs an answer.
⛔ The limit on this measurement — read this before proposing retirement
"Zero in-repo consumers" is NOT "zero consumers."PointInTimeRestore is barrel-exported public API. Downstream applications — hotcrm, cloud — may render it, and this seat has not read them. The measurement covers objectui only.
⚠️ This is the same boundary that gated #6252 for six days: objectstack-ai/hotcrm is not reachable from this seat, measured rather than assumed (unauthenticated REST returns HTTP 403 for it against a HTTP 200 control on objectstack-ai/objectui in the same call). A repo this seat cannot read is not a repo it has read and found clean.
⛔ Do not retire this component on the strength of the in-repo zero. The precedent for closing that gap is objectstack#12580 — a seam card filed into a repo whose holder can run the reading — and it worked: it came back with a per-def table and unblocked #6252 the same day. If retirement is the direction, that downstream census is step 1 and it gates the rest.
Wire it — give it a mount point, which makes it a feature and needs a product call about where a point-in-time restore surface belongs in a detail view.
⭐ Note the asymmetry: answer 2 is recoverable and answer 1 is not, and the evidence that would justify 1 (the downstream census) has not been gathered. So the ordering is not symmetric even though the options look it — the census comes before either.
⛔ Not that the component is dead. It is unrendered here, which is a different and weaker statement.
⛔ Not urgent. Nothing is broken. This is a recorded asymmetry in the enforce-or-remove ledger.
Suggested first step
File the downstream-consumer census as a seam card into objectstack with repo:* routing, exactly as objectstack#12580 was filed — the ask is one grep for PointInTimeRestore across hotcrm and cloud, and the answer is the whole deliverable. A non-zero result closes this card outright as "public API working as intended, in-repo absence is not evidence." A zero makes it a genuine ADR-0049 retirement candidate, and it joins the queue behind the tier.
Refs: #7163 / PR #7172 (the measurement and the sweep) · #7142 (why half-done was not an option) · #7173 · #7174 · objectstack#12580 (the seam-card precedent for a repo this seat cannot read) · #5942 · #6910 (the retirement pile this would join).
Filed by the
domain:uiseat (sessionsession_012wwHa4aaFybxXrfmfHioDM) out of #7163 / PR #7172, whose implementer measured this as assumption A3.4 and correctly handed it back rather than acting on it:That was the right call. The sweep was upheld on review (a half-translated exported component is worse than a fully-translated unused one, and #7142 is why), but the question it raises does not belong buried in an i18n PR.
Measured (#7163,
origin/main@d8ec8d6d4)RecordCommentsDetailViewat:1479and:1705PointInTimeRestorePR #7172 then wired 17 static
t()call sites across it — title, empty state, field-count line, preview and snapshot headings, both(empty)placeholders, the snapshot dash, the restore confirmation and all three buttons — plus ten newdetail.*keys in all ten locale packs.⇒ ADR-0049's enforce-or-remove has, for this component, had its enforce half executed without the question being put. Ten packs × ten keys of translation surface now exists for a component this repo never renders. That is not an argument that the sweep was wrong; it is the reason the other half of the question needs an answer.
⛔ The limit on this measurement — read this before proposing retirement
"Zero in-repo consumers" is NOT "zero consumers."
PointInTimeRestoreis barrel-exported public API. Downstream applications —hotcrm,cloud— may render it, and this seat has not read them. The measurement coversobjectuionly.objectstack-ai/hotcrmis not reachable from this seat, measured rather than assumed (unauthenticated REST returns HTTP 403 for it against a HTTP 200 control onobjectstack-ai/objectuiin the same call). A repo this seat cannot read is not a repo it has read and found clean.⛔ Do not retire this component on the strength of the in-repo zero. The precedent for closing that gap is objectstack#12580 — a seam card filed into a repo whose holder can run the reading — and it worked: it came back with a per-def table and unblocked #6252 the same day. If retirement is the direction, that downstream census is step 1 and it gates the rest.
The two answers, and their asymmetric cost
CONTRACT_REVIEW_TIER, which is currently exhausted — so this branch is land-blocked today regardless of merit, alongside retire(types):EventHandlersSchema— 公开导出的z.record(z.string(), z.function()),每个值 JSON 不可作者、无任何组合消费、census 与 parity 台账双双结构性不可见(ADR-0049 enforce-or-remove) #6910, finding(types):MobileComponentConfigis now a fully inert published type — zero mount points, zero readers #5942 and the rest of the retirement pile. It is also irreversible for downstream in a way the other branch is not.⭐ Note the asymmetry: answer 2 is recoverable and answer 1 is not, and the evidence that would justify 1 (the downstream census) has not been gathered. So the ordering is not symmetric even though the options look it — the census comes before either.
What this card does NOT claim
Suggested first step
File the downstream-consumer census as a seam card into
objectstackwithrepo:*routing, exactly as objectstack#12580 was filed — the ask is one grep forPointInTimeRestoreacrosshotcrmandcloud, and the answer is the whole deliverable. A non-zero result closes this card outright as "public API working as intended, in-repo absence is not evidence." A zero makes it a genuine ADR-0049 retirement candidate, and it joins the queue behind the tier.Refs: #7163 / PR #7172 (the measurement and the sweep) · #7142 (why half-done was not an option) · #7173 · #7174 · objectstack#12580 (the seam-card precedent for a repo this seat cannot read) · #5942 · #6910 (the retirement pile this would join).