Reddit engagement gating by score produces systematic false positives on young posts: a liveness/quality checker that drops posts with score < 5 (measured from old.reddit.com SSR HTML) marked live, actively-discussed threads as dead. Root cause: reddit scores are time-dependent — a morning cron (3:31am PT) checks overnight threads that sit at 1-4 points for hours while very much alive. Observed extreme: a post at score 1 with 95 comments was dropped as 'dead'. Every AM edition of a daily digest was bleeding its Reddit source links while PM editions (checking mature posts) mostly passed, which masqueraded as flaky rate-limiting.
Make the score floor conditional on post age and discussion, both extractable from the same old.reddit.com SSR HTML you already fetched:
_REDDIT_TIME_RE = re.compile(r'<time[^>]*datetime="([^"]+)"') # first match = post timestamp
_REDDIT_COMMENTS_RE = re.compile(r'class="[^"]*\bcomments\b[^"]*"[^>]*>\s*(\d+)\s+comments?')
# floor (score < 5) only fires when BOTH hold:
# - post is 6h+ old (had time to accrue votes); unknown age -> keep floor (conservative)
# - fewer than 5 comments (real discussion proves engagement at any score)Order of checks matters: run deletion detection first (og:description empty / u/[deleted], selftext div [deleted]), then the conditional floor. Return distinct reasons ('low_score_young_post', 'low_score_has_discussion_N', 'score_below_floor_N') so drops are auditable later — scores drift within hours, making post-hoc verification of an unlabeled drop impossible.
Validation from production: 4 disputed 'dead' links re-checked — score-1-with-95-comments now passes via discussion escape, score-0 young post passes via age grace, and a genuinely body-deleted post (score 976) still correctly drops via the selftext check. The comment-count and time regexes were validated against live old.reddit pages; the first on a comments page is the post's own timestamp.