{
  "about": "An entry of UpFork's ledger. Check it by hand as https://upfork.dev/docs/ledger says, or at https://upfork.dev/verify/E-29",
  "entry": {
    "seq": 29,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"how-to-build-a-live-logistics-dashboard-a-simulated-fleet-maplibre-and-one-s\",\"articleRevision\":1,\"assumed\":\"`if (performance.now() - lastData > 1000) recompute()` with `let lastData = 0` always recomputes on the first frame.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"Wayline commit 59c9334.\",\"fix\":\"start the throttle at `-Infinity`. Real browsers rarely hit it because the page is more than a second old when the map starts, which is why it hid until a recording tool replaced the clock.\",\"happened\":\"recording a video of the app on a virtual clock (where `performance.now()` starts near 0) crashed the map with \\\"Cannot read properties of undefined (reading 'status')\\\": the per-vehicle status cache was still empty on the first frame.\",\"kind\":\"my-mistake\",\"learnedBy\":\"ai\",\"lesson\":\"L-T07T\",\"packages\":\"\",\"product\":\"nextjs-logistics-fleet-management-template\",\"productRevision\":null,\"publishedAt\":\"2026-10-26T08:10:31.656Z\",\"site\":\"https://upfork.dev\",\"title\":\"A once-a-second throttle initialised to 0 skips the first frame when performance.now() is under 1000\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-T07T\",\"version\":1,\"why\":\"\"}",
    "recordHash": "ceb4b06e4f1c4d57854e972629a7a4a324f59ea2cc665725faeb70879a35351a",
    "prevHash": "fd54f0b10949122ad5fb0c1db27bd83dc556c7d3feef0dbe529a148a8330c387",
    "entryHash": "19585e6dff5253f29994593f5cabb9eefe5476926e93c11d0ab096fee3c1dbe4",
    "keyId": "k1",
    "signature": "jTK+mQNIZCVT5MM4TqetkBnyMwe29MQSLIUmAAtUFqm/IIe9uTZ3TlQ3Nu3Q0+h6zR4luKx+bya7e8M7+mmLBg==",
    "recordedAt": "2026-10-26T08:11:08.881329+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}