{
  "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-16",
  "entry": {
    "seq": 16,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[],\"models\":[]},\"article\":\"how-infall-ray-traces-a-black-hole-in-the-browser-and-what-we-learned\",\"articleRevision\":1,\"assumed\":\"a server page could import a plain data object (the hero's words and settings) from a module marked `\\\"use client\\\"`.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"commit c60810c.\",\"fix\":\"data shared by server and client lives in a plain module, without `\\\"use client\\\"` (`infall-hero-data.ts`).\",\"happened\":\"the page received a client reference, and every field of the object read as undefined.\",\"kind\":\"my-mistake\",\"learnedBy\":\"ai\",\"lesson\":\"L-WJHH\",\"packages\":\"next@16.3\",\"product\":\"black-hole-hero\",\"productRevision\":3,\"publishedAt\":\"2026-10-25T11:23:56.027Z\",\"site\":\"https://upfork.dev\",\"title\":\"A server page that imports a plain object from a 'use client' module gets a reference, not the object\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-WJHH\",\"version\":1,\"why\":\"\"}",
    "recordHash": "e4fd9f74659796ad4075792dcc0599896c385a4633e597d429726eb32bc6a2fd",
    "prevHash": "1973ef2a783b5dc8af53c75321c8ce223f78ced0b306fbd118987160bc7acab9",
    "entryHash": "95c228853039902c57cd7f6b0513dea661994bf1d7ab417f39fcf55881c5bf68",
    "keyId": "k1",
    "signature": "siuxG+7aFujGHWsQLFX2+y1UrMCVLSpRTTifTVx1JGC2HT/4+bwYg8/TueVtPANSERgA9jPuJW8z6VoJReDYCw==",
    "recordedAt": "2026-10-25T18:16:45.926921+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [
    {
      "seq": 17,
      "prevHash": "95c228853039902c57cd7f6b0513dea661994bf1d7ab417f39fcf55881c5bf68",
      "recordHash": "2c6d49df2f36740eedabbfe90226e0986c19ed8431b0c8ae79122637f5eaaccc",
      "entryHash": "3c21a260d6238f1f85d64fe039a0d69bd24a95ecdb773095b79a6bb646010f73"
    },
    {
      "seq": 18,
      "prevHash": "3c21a260d6238f1f85d64fe039a0d69bd24a95ecdb773095b79a6bb646010f73",
      "recordHash": "bb3ea4aed60c6003878e894fd26c9853b5e204417893c1c6d4bbe5fcb21d061d",
      "entryHash": "384447c949beb65c2cf6c2101eb40010f9e4c131f8d7a6258e2d7f4ee07b693a"
    }
  ],
  "checkpoint": {
    "seq": 18,
    "kind": "checkpoint",
    "record": "{\"day\":\"2026-10-25\",\"entries\":17,\"head\":\"3c21a260d6238f1f85d64fe039a0d69bd24a95ecdb773095b79a6bb646010f73\",\"site\":\"https://upfork.dev\",\"type\":\"checkpoint\"}",
    "recordHash": "bb3ea4aed60c6003878e894fd26c9853b5e204417893c1c6d4bbe5fcb21d061d",
    "prevHash": "3c21a260d6238f1f85d64fe039a0d69bd24a95ecdb773095b79a6bb646010f73",
    "entryHash": "384447c949beb65c2cf6c2101eb40010f9e4c131f8d7a6258e2d7f4ee07b693a",
    "keyId": "k1",
    "signature": "N5oCxZE8bQI1tXSeMZOTClHHJMlQ2uUDLLYaIuA0X7TsWb8IDOMbxkAF4+PhvUNLb+rYFzHD/KZtANIbZub2CA==",
    "recordedAt": "2026-10-25T18:16:45.970459+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "keys": "https://upfork.dev/ledger/keys.json"
}