> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.datafortennis.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.datafortennis.com/_mcp/server.

# Releases and stable pagination

A release pins the accepted census and epoch, input cutoff, schema, mapping and
quality versions, and manifest hash. Preserve these fields with your analysis.
The cutoff describes the input boundary. It does not establish when every source
knew a fact or imply freshness to today's date.

Corrections become visible in a new release. Previously published releases remain
readable at their original snapshot while your current access permits it.
Discovering newer releases never silently moves an existing cursor to latest.

## Pagination

Use the opaque `page.next_cursor` exactly as returned, together with identical
filters and the pinned release. Stop at null. Do not decode, edit or generate
cursors, and do not reuse a cursor for a different resource or filter set.

The byte budget can shorten a page below the requested row limit. Advance using
the returned cursor rather than the last visible ID or an offset. A filtered
change-feed page can be empty and still contain a continuation.

Date windows are inclusive calendar days and at most 31 days. Unknown calendar
dates are excluded from those windows, not removed from the release census.

Large epochs and counters are serialized as decimal strings. For example,
`BigInt(response.meta.epoch)` is lossless; `Number(response.meta.epoch)` can lose
precision. Decimal metric values also remain strings.