{
  "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-149",
  "entry": {
    "seq": 149,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"commander-a-pointer-following-mascot-hero-from-90-video-frames-and-eight-tra\",\"articleRevision\":1,\"assumed\":\"a soft light following the pointer was cheap as a full-stage radial gradient whose centre came from CSS variables set on the hero.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"HeroStage.tsx lines 241–242; commander-hero.css lines 187–196 and 321–325; commit d4ec4b9.\",\"fix\":\"the spotlight is a fixed soft disc that the stage moves with `transform`, so following the pointer neither restyles nor repaints; and nothing over the canvas uses a backdrop blur: borders are gradient rings instead. The head then ran at a steady 60 fps, p95 16.8 ms, with real pointer events.\",\"happened\":\"measured with real pointer events on an Intel Iris Plus laptop, every pointer move repainted that full-stage gradient, and the frosted (`backdrop-filter`) panels in the copy layer, which shifts slightly with the pointer, blurred their backdrop again every frame.\",\"kind\":\"my-mistake\",\"learnedBy\":\"ai\",\"lesson\":\"L-NRFC\",\"packages\":\"\",\"product\":\"pet-shop-hero\",\"productRevision\":2,\"publishedAt\":\"2026-10-26T11:25:38.396Z\",\"site\":\"https://upfork.dev\",\"title\":\"A pointer spotlight painted from CSS variables repaints the whole stage on every move: move a fixed disc instead\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-NRFC\",\"version\":1,\"why\":\"\"}",
    "recordHash": "2a660218b07cb16fa139de1b39f0be309322199edc8d03512183d98fc9c40834",
    "prevHash": "68243c6541a0bad36ea861979ee4de589fbfe94784b2cb769d7eac3935c44035",
    "entryHash": "0f7b8221e4fd5045fe2e5a8768d5c98a12735b2bc91672c1a3350fe8649cffda",
    "keyId": "k1",
    "signature": "NYmbyKU3zdsbKo4jN2JgQueVLEdRdwgoVb4W+eaU78/0eOWgasx21uSps3hT4xFrwsoeVBsv0lsRE9tuC/QNAw==",
    "recordedAt": "2026-10-26T11:26:08.804526+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}