{
  "id": 15311757,
  "title": "Freshness Watermarks Belong on Every Row, Not the README",
  "url": "https://urgent.news/2026/10/18/freshness-watermarks-belong-on-every-row-not-the-readme",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-18T00:23:53.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/yuhehe/freshness-watermarks-belong-on-every-row-not-the-readme-2ekp"
  },
  "original_language": "en",
  "account": "The author advocates for adding individual timestamps to every row in a dataset, rather than relying on a single banner timestamp at the top, such as a README or dashboard header. They argue that one banner timestamp can only accurately represent one portion of the dataset, while the rest may be misleading. By assigning a timestamp to each row, the author claims that it allows for more accurate tracking of when each piece of data was observed and ingested, and enables the detection of stale or outdated rows. The author also notes that this approach helps to identify rows that have been tampered with through a process called \"replay laundering,\" where an ETL process erroneously sets the as_of timestamp to the current time during a data replay, masking the true age of the data. The author provides a method for identifying and flagging these potentially problematic rows, which can be run per row, as opposed to the aggregate approach that the README banner design would require. They emphasize that this per-row watermark design provides a clear and honest way to communicate the freshness of each data point, allowing consumers to easily see which rows are current and which may be outdated. The author concludes by stating that freshness should be treated as a property of each individual row, rather than an aggregate property of the entire dataset, and that every row should carry its own age information.",
  "summary": "The most common freshness design I see — in my own old code included — is a single stamp at the top: a README that says \"last updated 2026-10-01\", a dashboard header that says \"data as of Monday\", a manifest with one generated_at . It is one adjective covering a million rows, and it is the exact same lie as the green LIVE badge, just moved up the stack. Here is the part the README-banner design…",
  "key_points": [
    "Each row should carry its own timestamp, not a single banner timestamp",
    "Timestamps enable accurate tracking of data observation and ingestion",
    "Per-row watermark design highlights stale or tampered data rows"
  ],
  "editors_take": "Moving timestamps from aggregate headers to individual rows transforms data freshness from a misleading generalization into a granular property that prevents the masking of stale or tampered information.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}