TenureBadgeCalculator
Computes tenure snapshots from subscriber token records. Source of truth for how long a subscriber has been a member and which milestone label applies. TenureBadgeAppender consumes its output; add-ons can call it directly when they need tenure data outside the badge pipeline. Results are cached in the benecaster_tenure object cache group with a DAY_IN_SECONDS TTL, auto-invalidating at midnight without an explicit flush.