2.1 · Frontend dashboard counters and panels do not refresh after first load
Reported as: #20 viewer/response counts not updating · #21 end-of-game buff did not show · partial cause of stale-state symptoms across the dashboard.
Root cause
frontend/client/src/admin/AdminDashboard.tsx:328 and :335 call fingerprintValue(value) — a function that is not defined and not imported anywhere in the codebase. A grep across the full frontend tree returns zero definitions. The call is wrapped in smartSet, which is itself called inside Promise.allSettled callbacks, so the resulting ReferenceError is swallowed silently.
Net effect: every state setter that goes through smartSet — setDrafts, setScheduled, setProposals, setAnalytics, setFeedRunning, setFeedMinute, setEndedAt, setVenueLat, setTimelineBuffs — never runs after page load. The 4-second polling loop fires correctly and the API responses are correct, but the React state never updates.
Why this matters
It explains why viewer count and response count froze, why the "Ready to Send" panel never reflected new drafts, and likely contributed to the end-of-game buff not appearing.
Fix scope
Define the missing helper. The comment on lines 325–326 reads: "For arrays, uses length + first/last ID as a fast fingerprint instead of full JSON.stringify" — implying a simple length + first.id + last.id for arrays and JSON.stringify for primitives. One small function.