Server persists hookHistory[] per agent (cap 500, resets on SessionStart), synced realtime via session-state-patch. Frontend computes event counts by macro type and renders color-coded badges at the ribbon start. Mock mode also accumulates badges during demo sequence.