feat(analytics dashboard): expose committed render lifecycle - #5286
feat(analytics dashboard): expose committed render lifecycle#5286zygisS22 wants to merge 2 commits into
Conversation
Implemented-with: factorial-f0
🔍 Review policy: FeatureThe PR title starts with Required approvals
How this was decided
Policy source: |
✅ No untranslated copy addedEvery user-visible string in this PR comes from the i18n layer. Codebase total unchanged at 133. |
✅ Storybook docs — no pages lostEvery page reachable on ✏️ 5 updated ✏️ Updated — 5 page(s)/story/stories across 2 file(s)The source file behind each of these changed. Detection is per file, so editing one story flags its siblings too.
🔇 Added but not in the sidebar — 1Expected for snapshot-only and internal stories (
Links point at this PR's Storybook build — browse the full Storybook. Snapshot of the Storybook index (docs pages + stories) compared against |
🔍 Visual review for your branch is published 🔍Here are the links to: |
📦 Alpha Package Version PublishedUse Use |
✅ No New Circular DependenciesNo new circular dependencies detected. Current count: 0 |
♿ Accessibility (axe) — components changed in this PR4 issues across 4 stories — all non-blocking (
Scope: only stories in the files/component folders this PR changed. It can't yet flag downstream ripple from shared-code/token changes, or diff against |
✅ No breaking public API changesNo public exports were removed, renamed, or had existing props/types changed in a breaking way compared to Comparing ➕ Additive changes (safe) — 4
|
Summary
Add two generic host contracts to
F0AnalyticsDashboard:renderCycleKey.F0 contains no last-view, comparison, analytics-domain, or persistence logic. Collections deliberately emit no lifecycle events in this slice, so consumers that require a full render receipt fail closed.
Contract
onItemRenderStateChangeemits{ itemId, renderCycleKey, state }only after loading, ready, or error UI commits. A changing cycle key refreshes item data, and stale asynchronous responses cannot emit ready/error for a newer cycle. Grid and fullscreen mounts are mutually exclusive and covered by regression tests.itemBadgereturns compact label/accessibility metadata. F0 owns neutral styling and keyboard behavior; the host owns meaning and click behavior. No health or positive/negative semantics are inferred.Validation
F0AnalyticsDashboardtestsThe installed Storybook test runner currently exits on its own Vite migration notice and does not honor the documented path filter, so the full runner is the remaining local validation limitation.
Rollout / compatibility
This is additive and has no feature flag. Factorial must consume a released F0 package version before enabling its saved-dashboard comparison UI.
Consumer draft: Factorial #111763.