{
  "observationSize": {
    "status": "measured",
    "rawHtmlBytes": "UTF-8 bytes of the page's HTML body as fetched.",
    "observationBytes": "Bytes of jawbd's compact JSON response to POST /observe for the same URL.",
    "validity": "The page is fetched before and after the observation; a capture is discarded if the HTML changed in between.",
    "units": "Bytes, not model tokens.",
    "results": "/agent/observations.json"
  },
  "markdownSize": {
    "status": "measured",
    "command": "jawb open --incognito <url>; jawb read --format md (with --js where the page needs JavaScript)",
    "mdBytes": "Bytes of the Markdown jawb read returns (result.bytes).",
    "sourceBytes": "Bytes of the HTML the executor read (result.source_bytes).",
    "scope": "main when read found the page's main content, body when it converted the whole page.",
    "validity": "Taken in the same capture run as the observation; a read that returns no Markdown is discarded.",
    "units": "Bytes, not model tokens.",
    "results": "/agent/observations.json"
  },
  "timeToFirstActionableObservation": {
    "status": "planned",
    "metric": "Time from request to the first observation an agent can act on.",
    "comparison": "Conventional Chromium automation vs. jawb.",
    "workload": "Identical tasks, sites, network conditions, and success criteria.",
    "reported": "Median and p95, with the run date and harness version.",
    "results": null
  }
}
