Skip to content

Commit fe768fa

Browse files
V48 Gate 3 (specification-implementation): every tooltip carries ALL its sections
Hover stat/pill tooltips: TelemetryPillExplainer.generic is REQUIRED again — a rich tooltip without the second (generic type copy) section no longer compiles. Every stat call site now passes both sections: route header metric chips, panel disclosure summaries, and proof-root rows (product-route-shell generics); session/authority/earning/ opportunity rows (DEPOSIT_STAT_TOOLTIP_GENERICS in deposit-stat-explainers.ts); table overview stat chips + state pills. Inline (i) explainers: every BitcodeExplainer entry across the product registries now carries all six sections (kicker, title, summary, detail, 'Use this to' points, current source + canon references): - bitcode-transaction-explainers: references added to all 20 entries (shared source/canon ref consts + per-entry component paths) - terminal-workspace-explainers: kicker + points added to 26 entries - auxillary-pane-explainers: references added to all 6 entries - bitcode-public-explainers: references added to all 7 entries (deposit-explainers already complete; all cited source paths verified to exist.) Spec: presentation-laws section gains the all-sections tooltip law — the two tooltip families and their complete required section sets, with the hover family's second section enforced at the type level. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 3fd3d19 commit fe768fa

10 files changed

Lines changed: 335 additions & 2 deletions

BITCODE_SPEC_V48_NOTES.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,17 @@ shared transactions/telemetry components) is governed by these laws:
604604
(copy: `uapi/app/deposits/deposit-stat-explainers.ts`). Tooltips are
605605
viewport-height capped and INTERACTIVE: overflow scrolls inside the
606606
tooltip (pointer can travel in; inner scrolls do not dismiss it).
607+
- **All tooltips carry ALL their sections.** Two tooltip families, each
608+
with a complete required section set:
609+
- Hover stat/pill tooltips (`TelemetryPillExplainer`): kicker + title +
610+
SPECIFIC copy (this exact value) + GENERIC type copy below the divider.
611+
`generic` is TYPE-REQUIRED — a tooltip without the second section does
612+
not compile.
613+
- Inline (i) explainers (`BitcodeExplainer`): kicker, title, summary,
614+
detail, 'Use this to' points, and references (current source files +
615+
current canon). Every explainer entry on the product surfaces
616+
(transaction filters/table, deposit sections, terminal workspace)
617+
carries all six.
607618
- **The one rich dropdown.** Every pick-one control is the shared
608619
SearchableSelect combobox (square, text-searchable): all seven table
609620
filters, provider, repository, branch, and commit. The deposit source

uapi/app/auxillaries/components/auxillary-pane-explainers.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ export const auxillaryPaneExplainers: Record<
1818
"Keep MCP API and ChatGPT App entry posture predictable",
1919
"Decide whether proofs open visually, mixed, or as raw evidence",
2020
],
21+
references: {
22+
source: [
23+
"uapi/app/auxillaries/components/AuxillariesInterfacesPane.tsx",
24+
],
25+
canon: ["BITCODE_SPEC_V48_NOTES.md — deposit/read product-surface presentation laws"],
26+
},
2127
},
2228
interfacesPrompt: {
2329
kicker: "Interfaces auxillary",
@@ -31,6 +37,12 @@ export const auxillaryPaneExplainers: Record<
3137
"Bias toward throughput, quality, or balanced review",
3238
"Preserve one reusable non-ledgerized instruction surface",
3339
],
40+
references: {
41+
source: [
42+
"uapi/app/auxillaries/components/AuxillariesInterfacesPane.tsx",
43+
],
44+
canon: ["BITCODE_SPEC_V48_NOTES.md — deposit/read product-surface presentation laws"],
45+
},
3446
},
3547
interfacesModels: {
3648
kicker: "Interfaces auxillary",
@@ -44,6 +56,12 @@ export const auxillaryPaneExplainers: Record<
4456
"Keep provider and model evidence in telemetry",
4557
"Treat conversation-only model choice as outside settlement authority",
4658
],
59+
references: {
60+
source: [
61+
"uapi/app/auxillaries/components/AuxillariesInterfacesPane.tsx",
62+
],
63+
canon: ["BITCODE_SPEC_V48_NOTES.md — deposit/read product-surface presentation laws"],
64+
},
4765
},
4866
btdWallet: {
4967
kicker: "Wallet auxillary",
@@ -57,6 +75,12 @@ export const auxillaryPaneExplainers: Record<
5775
"Surface whether BTC and wallet binding are already attached",
5876
"Keep team and membership posture visible beside fee and share posture",
5977
],
78+
references: {
79+
source: [
80+
"uapi/app/auxillaries/components/AuxillariesWalletPane.tsx",
81+
],
82+
canon: ["BITCODE_SPEC_V48_NOTES.md — deposit/read product-surface presentation laws"],
83+
},
6084
},
6185
btdShares: {
6286
kicker: "Wallet auxillary",
@@ -70,6 +94,12 @@ export const auxillaryPaneExplainers: Record<
7094
"Keep settlement reading explicit before closure",
7195
"Control how BTD-specific detail re-enters Terminal and interface surfaces",
7296
],
97+
references: {
98+
source: [
99+
"uapi/app/auxillaries/components/AuxillariesWalletPane.tsx",
100+
],
101+
canon: ["BITCODE_SPEC_V48_NOTES.md — deposit/read product-surface presentation laws"],
102+
},
73103
},
74104
btdAdvanced: {
75105
kicker: "Wallet auxillary",
@@ -83,5 +113,11 @@ export const auxillaryPaneExplainers: Record<
83113
"Decide how BTD detail should open back into transaction views",
84114
"Keep replay and closure posture aligned to one account preference",
85115
],
116+
references: {
117+
source: [
118+
"uapi/app/auxillaries/components/AuxillariesWalletPane.tsx",
119+
],
120+
canon: ["BITCODE_SPEC_V48_NOTES.md — deposit/read product-surface presentation laws"],
121+
},
86122
},
87123
};

uapi/app/deposits/DepositPageClient.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ import BitcodeInlineExplainer from "@/components/base/bitcode/execution/BitcodeI
7272
import { DEPOSIT_SECTION_EXPLAINERS } from "@/app/deposits/deposit-explainers";
7373
import {
7474
DEPOSIT_AUTHORITY_BLOCKERS_EXPLAINER,
75+
DEPOSIT_STAT_TOOLTIP_GENERICS,
7576
DEPOSIT_AUTHORITY_ROW_EXPLAINERS,
7677
DEPOSIT_DISCLOSURE_BOUNDARY_EXPLAINER,
7778
DEPOSIT_EARNING_ROW_EXPLAINERS,
@@ -2279,6 +2280,7 @@ export default function DepositPageClient() {
22792280
kicker: "Earning intelligence",
22802281
title: "Likely demand",
22812282
specific: DEPOSIT_EARNING_ROW_EXPLAINERS["Likely demand"],
2283+
generic: DEPOSIT_STAT_TOOLTIP_GENERICS.earningIntelligence,
22822284
}}
22832285
>
22842286
<dt className="text-[0.58rem] uppercase tracking-[0.14em] text-neutral-500">
@@ -2300,6 +2302,7 @@ export default function DepositPageClient() {
23002302
kicker: "Earning intelligence",
23012303
title: "Unfit Need opportunities",
23022304
specific: DEPOSIT_EARNING_ROW_EXPLAINERS["Unfit Need opportunities"],
2305+
generic: DEPOSIT_STAT_TOOLTIP_GENERICS.earningIntelligence,
23032306
}}
23042307
>
23052308
<dt className="text-[0.58rem] uppercase tracking-[0.14em] text-neutral-500">
@@ -2324,6 +2327,7 @@ export default function DepositPageClient() {
23242327
kicker: "Earning intelligence",
23252328
title: "Expected compensation",
23262329
specific: DEPOSIT_EARNING_ROW_EXPLAINERS["Expected compensation"],
2330+
generic: DEPOSIT_STAT_TOOLTIP_GENERICS.earningIntelligence,
23272331
}}
23282332
>
23292333
<dt className="text-[0.58rem] uppercase tracking-[0.14em] text-neutral-500">
@@ -2348,6 +2352,7 @@ export default function DepositPageClient() {
23482352
kicker: "Earning intelligence",
23492353
title: "Supply recommendations",
23502354
specific: DEPOSIT_EARNING_ROW_EXPLAINERS["Supply recommendations"],
2355+
generic: DEPOSIT_STAT_TOOLTIP_GENERICS.earningIntelligence,
23512356
}}
23522357
>
23532358
<dt className="text-[0.58rem] uppercase tracking-[0.14em] text-neutral-500">
@@ -2381,6 +2386,7 @@ export default function DepositPageClient() {
23812386
kicker: "Opportunity root",
23822387
title: opportunity.label,
23832388
specific: DEPOSIT_OPPORTUNITY_ROOT_EXPLAINER,
2389+
generic: DEPOSIT_STAT_TOOLTIP_GENERICS.opportunityRoot,
23842390
}}
23852391
>
23862392
<dt className="text-[0.56rem] uppercase tracking-[0.12em] text-neutral-500">
@@ -2426,6 +2432,7 @@ export default function DepositPageClient() {
24262432
specific:
24272433
DEPOSIT_AUTHORITY_ROW_EXPLAINERS[row.label] ??
24282434
"Organization authority state for this deposit route.",
2435+
generic: DEPOSIT_STAT_TOOLTIP_GENERICS.governance,
24292436
}}
24302437
>
24312438
<dt className="text-[0.58rem] uppercase tracking-[0.14em] text-neutral-500">
@@ -2483,6 +2490,7 @@ export default function DepositPageClient() {
24832490
specific:
24842491
DEPOSIT_SESSION_ROW_EXPLAINERS[row.label] ??
24852492
"Source-safe session state for this deposit route.",
2493+
generic: DEPOSIT_STAT_TOOLTIP_GENERICS.sessionState,
24862494
}}
24872495
>
24882496
<dt className="text-[0.58rem] uppercase tracking-[0.14em] text-neutral-500">

uapi/app/deposits/deposit-stat-explainers.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,18 @@ export const DEPOSIT_DISCLOSURE_BOUNDARY_EXPLAINER =
9797

9898
export const DEPOSIT_AUTHORITY_BLOCKERS_EXPLAINER =
9999
"The concrete deposit actions the organization authority currently denies, and why. Repairing these unblocks the Submit deposit stage.";
100+
101+
/**
102+
* Section (b) generic copy for the stat tooltips — the what-is-this-type
103+
* text rendered below the specific copy, per tooltip kicker.
104+
*/
105+
export const DEPOSIT_STAT_TOOLTIP_GENERICS = {
106+
sessionState:
107+
"Session state rows are the source-safe state of this deposit route — derived from the connected source package and this session's measurements, never from withheld source content.",
108+
governance:
109+
"Governance rows come from the organization policy + wallet authority evaluation that gates every deposit action; denied actions list their blockers.",
110+
earningIntelligence:
111+
"Earning intelligence rows come from the DepositorEarningSupplyIntelligence measurement: network demand, unfit-Need opportunities, and expected compensation for this supply.",
112+
opportunityRoot:
113+
"Proof roots are source-safe hashes anchoring measurements into proof readback — auditable without revealing withheld content.",
114+
} as const;

0 commit comments

Comments
 (0)