Context
The design-system sync (apps/ui/.design-sync/, merged in #4870) covers 55 components from apps/ui/src/components/{ui,metagraphed,metagraphed/charts}/, uploaded to a live Claude Design project. The scope was pinned via cfg.componentSrcMap in .design-sync/config.json — an explicit enumeration, not an auto-discovered list (see .design-sync/NOTES.md for why: no library build exists for apps/ui yet, so the sync runs in a synth-entry fallback mode that needs a hand-scoped source directory to avoid bundling app-context-dependent components).
DailyRollupFreshness (apps/ui/src/components/metagraphed/freshness.tsx) landed in #4856 — merged after the sync scope was pinned, so it was never added. It's a small composite: FreshnessIndicator (dot-only mode) + InfoTooltip, used in three section headers (metagraph-panel.tsx, neuron-detail-card.tsx, validators-panel.tsx) to show a compact daily-rollup freshness signal without eating horizontal space on narrow viewports.
It was checked for sync-eligibility (2026-07-11): zero @tanstack/react-router/@tanstack/react-query imports — it only composes two components that are already in the sync scope (FreshnessIndicator, InfoTooltip), both under components/metagraphed/. No new risk, no new dependencies to vet.
Requirements
- Add
"DailyRollupFreshness": "src/components/metagraphed/freshness.tsx" to cfg.componentSrcMap in apps/ui/.design-sync/config.json.
- Symlink it into the scoped staging directory the sync build reads from (
apps/ui/.design-sync/.cache/scope-src/core/ — gitignored, regenerated per sync session; see .design-sync/NOTES.md's "Re-sync risks" section, which already flags that this staging mechanism isn't yet a committed script).
- Author a
.design-sync/previews/DailyRollupFreshness.tsx preview with realistic props (an at timestamp both fresh and stale, matching the pattern used for the other 15 authored previews in this sync) — don't ship it as an unauthored floor card if a 2-line realistic preview is this cheap.
- Rebuild, validate (render check must show 0
bad), capture, and grade the new preview good.
- Re-upload to the live Claude Design project via the existing incremental-upload plan (base files re-ride since a rebuild touches the stamped bundle header).
- Update
.design-sync/NOTES.md to note the addition and drop it from being an "unaccounted-for gap."
Deliverables
apps/ui/.design-sync/config.json updated with the new componentSrcMap entry.
apps/ui/.design-sync/previews/DailyRollupFreshness.tsx (new, committed).
- The live Claude Design project shows
DailyRollupFreshness as a 56th verified, graded component.
.design-sync/NOTES.md updated.
Expected outcome
The sync scope has zero known gaps against what's actually in apps/ui/src/components/{ui,metagraphed}/ as of the merge this issue is filed against. Future components added to the app won't auto-appear here either (no CI hook exists yet — a separate, larger concern) but at least this specific known gap is closed.
Context
The design-system sync (apps/ui/.design-sync/, merged in #4870) covers 55 components from
apps/ui/src/components/{ui,metagraphed,metagraphed/charts}/, uploaded to a live Claude Design project. The scope was pinned viacfg.componentSrcMapin.design-sync/config.json— an explicit enumeration, not an auto-discovered list (see.design-sync/NOTES.mdfor why: no library build exists forapps/uiyet, so the sync runs in a synth-entry fallback mode that needs a hand-scoped source directory to avoid bundling app-context-dependent components).DailyRollupFreshness(apps/ui/src/components/metagraphed/freshness.tsx) landed in #4856 — merged after the sync scope was pinned, so it was never added. It's a small composite:FreshnessIndicator(dot-only mode) +InfoTooltip, used in three section headers (metagraph-panel.tsx,neuron-detail-card.tsx,validators-panel.tsx) to show a compact daily-rollup freshness signal without eating horizontal space on narrow viewports.It was checked for sync-eligibility (2026-07-11): zero
@tanstack/react-router/@tanstack/react-queryimports — it only composes two components that are already in the sync scope (FreshnessIndicator,InfoTooltip), both undercomponents/metagraphed/. No new risk, no new dependencies to vet.Requirements
"DailyRollupFreshness": "src/components/metagraphed/freshness.tsx"tocfg.componentSrcMapinapps/ui/.design-sync/config.json.apps/ui/.design-sync/.cache/scope-src/core/— gitignored, regenerated per sync session; see.design-sync/NOTES.md's "Re-sync risks" section, which already flags that this staging mechanism isn't yet a committed script)..design-sync/previews/DailyRollupFreshness.tsxpreview with realistic props (anattimestamp both fresh and stale, matching the pattern used for the other 15 authored previews in this sync) — don't ship it as an unauthored floor card if a 2-line realistic preview is this cheap.bad), capture, and grade the new previewgood..design-sync/NOTES.mdto note the addition and drop it from being an "unaccounted-for gap."Deliverables
apps/ui/.design-sync/config.jsonupdated with the newcomponentSrcMapentry.apps/ui/.design-sync/previews/DailyRollupFreshness.tsx(new, committed).DailyRollupFreshnessas a 56th verified, graded component..design-sync/NOTES.mdupdated.Expected outcome
The sync scope has zero known gaps against what's actually in
apps/ui/src/components/{ui,metagraphed}/as of the merge this issue is filed against. Future components added to the app won't auto-appear here either (no CI hook exists yet — a separate, larger concern) but at least this specific known gap is closed.