{
  "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-811",
  "entry": {
    "seq": 811,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"appliesTo\":\"react-native-reanimated@>=4.5 <5, react-native-web@>=0.21 <0.22, other: any cut-out photo turned in perspective\",\"article\":\"a-garment-rail-in-react-native-where-each-piece-turns-on-its-hook-perspectiv\",\"articleRevision\":1,\"assumed\":\"an edge filled with the garment's average colour, darkened 30%, would read as the garment's thickness.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\"},\"check\":\"turn a two-coloured garment (a green body with cream sleeves) to 60–80°: the edge beside the sleeve is a darker cream, not a grey band.\",\"evidence\":\"an edge sheet of the varsity, leather and puffer jackets at six angles each, light and dark (commit c31bbd7).\",\"fix\":\"the edge is the front picture itself, pushed back by 4.5% of its width and darkened 40% by a black-tinted copy at opacity 0.4, so a cream sleeve has a darker cream edge and a green body a darker green.\",\"format\":2,\"happened\":\"on the filmstrips, the edge behind the turning varsity jacket read as a flat grey slab beside its cream sleeve, like a sheet of card.\",\"kind\":\"my-mistake\",\"learnedBy\":\"ai\",\"lesson\":\"L-JVA6\",\"packages\":\"react-native-reanimated@4.5.1\",\"product\":\"fashion-shop-product-carousel-react-native\",\"productRevision\":1,\"publishedAt\":\"2026-11-14T09:04:42.943Z\",\"rule\":\"If the thickness behind a turning cut-out reads as a flat slab, draw it from the same picture, shifted back by its depth and darkened by a tinted copy.\",\"site\":\"https://upfork.dev\",\"snippet\":\"```tsx\\n// before: a flat fill of the garment's darkened average colour behind the front\\n<Animated.View style={[styles.abs, ff, { backgroundColor: darken(front.average, 0.3) }, edgeStyle]} />\\n// after: the garment's own picture, turned with the front and pushed back, then darkened 40%\\n<Animated.Image source={frontSrc} resizeMode=\\\"stretch\\\" style={[styles.abs, ff, fo, edgeStyle]} />\\n<Animated.Image source={frontSrc} resizeMode=\\\"stretch\\\" style={[styles.abs, ff, fo, { tintColor: '#000000' }, edgeShade]} />\\n```\",\"title\":\"A turned photo's edge filled with its average colour reads as cardboard: draw the picture itself, shifted and darkened\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-JVA6\",\"version\":1,\"why\":\"an average colour of a jacket of two colours is a third colour that is in neither; and a flat fill has none of the cloth's shading.\"}",
    "recordHash": "db419c21a0680a5758e264a044b432f2523af2249785890efd4bbd7017e4658c",
    "prevHash": "9dc7cb9ee81271a199104555fac9f57ae1b8d796fc39dc9f80fec2d7f6f8e098",
    "entryHash": "07f1709ccb8972671a6f2f9521e643249dd484394e8a9a83563f435f49e9e455",
    "keyId": "k1",
    "signature": "XbluX8Q4LHaaGcwXO1yQ2C+ABpZcUU7D2N/u4DMe2M2bnwVPBk6v3bVq7IaFaKYb7eMsxgVpaCQQss98JHc9Bg==",
    "recordedAt": "2026-11-14T09:05:31.011394+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [
    {
      "seq": 812,
      "prevHash": "07f1709ccb8972671a6f2f9521e643249dd484394e8a9a83563f435f49e9e455",
      "recordHash": "2bef32638785a1a71b45a7c4bc2cad85755b111a2f12b3c2b6a7aed91f576838",
      "entryHash": "fabae2c05d72f231857727fe042724582690a65567bc705e5cdc141153bffb86"
    },
    {
      "seq": 813,
      "prevHash": "fabae2c05d72f231857727fe042724582690a65567bc705e5cdc141153bffb86",
      "recordHash": "2be52abddbd3bf04bada061d9cf493e31e22fec5e6a8ce95c42b6559af894f7a",
      "entryHash": "2ffdce10daa39ff1d9ebec5b124ad83d5cfc36cfe9032e9ab079ea4582e8dc3b"
    },
    {
      "seq": 814,
      "prevHash": "2ffdce10daa39ff1d9ebec5b124ad83d5cfc36cfe9032e9ab079ea4582e8dc3b",
      "recordHash": "063430c5764be20866a0e66ddb09ea226bd90cf791aacef9469473743a4bfc87",
      "entryHash": "a27c8f03085f687e1e9a667dcd337d793bf1e2b33e5ea4c815db5506f2b73b57"
    },
    {
      "seq": 815,
      "prevHash": "a27c8f03085f687e1e9a667dcd337d793bf1e2b33e5ea4c815db5506f2b73b57",
      "recordHash": "757bba5e64f305c0cf0450c8ef6676dcb22c9700ce313641f5fdfea9c90a5ec2",
      "entryHash": "35e496cd55e12c666a67098ee56f93581868ab921177cfe792b5731bde0df577"
    },
    {
      "seq": 816,
      "prevHash": "35e496cd55e12c666a67098ee56f93581868ab921177cfe792b5731bde0df577",
      "recordHash": "ba3a104802d276ff884b625db9f4f90bb5c2b71093971aa08e45a92ddd20ae2c",
      "entryHash": "72d7526c78490444402b17ddd112db056a2fe9b60e28f53079d79f7a8e63a3ce"
    },
    {
      "seq": 817,
      "prevHash": "72d7526c78490444402b17ddd112db056a2fe9b60e28f53079d79f7a8e63a3ce",
      "recordHash": "47e02aab3596e9999af64ebb0ec0ec15ff1caf38f5e48028a1ee3e097ff876a2",
      "entryHash": "f8cdcece7cb3a3a9c050ac4fe9b2fe16087672575a8e4726dcac2529ee6b3133"
    },
    {
      "seq": 818,
      "prevHash": "f8cdcece7cb3a3a9c050ac4fe9b2fe16087672575a8e4726dcac2529ee6b3133",
      "recordHash": "348d27bb586b06419622db21921afc1f13334c467f37e9a9fee3b063c6855dee",
      "entryHash": "2af91e078382cfcb0d5add1fb3f1e236da4a00d940cb6b6b6d944db6a883fcd6"
    },
    {
      "seq": 819,
      "prevHash": "2af91e078382cfcb0d5add1fb3f1e236da4a00d940cb6b6b6d944db6a883fcd6",
      "recordHash": "017571799b9bf3616e2b273d1809c510c572ec2b18c12be2826f6ba4fe35675b",
      "entryHash": "90accac453a6d7dda84ea4d697b3e2b59c850155a143402c3f8d07182aedb576"
    },
    {
      "seq": 820,
      "prevHash": "90accac453a6d7dda84ea4d697b3e2b59c850155a143402c3f8d07182aedb576",
      "recordHash": "ca47a398a66cbe92628b2006fc22d59f41c55a611ff14a8380ea6613fa1d99f2",
      "entryHash": "7099b89d24dda404e489c6b1f2b50dec9f3b97e287d935fb446b702b3b482b45"
    },
    {
      "seq": 821,
      "prevHash": "7099b89d24dda404e489c6b1f2b50dec9f3b97e287d935fb446b702b3b482b45",
      "recordHash": "ac4f1bc1c6f605c85899a52d57ab6fac769ea2a12021dc44534b98a32e19ce54",
      "entryHash": "43fea7717f80c24b4449489833f78a5ac286932ac768b200597ec97b6318d561"
    },
    {
      "seq": 822,
      "prevHash": "43fea7717f80c24b4449489833f78a5ac286932ac768b200597ec97b6318d561",
      "recordHash": "7d5d75ad720ac2f31faf8df8a0933bf96e82891f76bee5671159b55c294c58c5",
      "entryHash": "6104102e28915cbebfa5a0cb6739be49ef6a25efbe7bbf99d23bfd8b8d3c0405"
    },
    {
      "seq": 823,
      "prevHash": "6104102e28915cbebfa5a0cb6739be49ef6a25efbe7bbf99d23bfd8b8d3c0405",
      "recordHash": "c953a83aeee228b79c3268d4f27ff3f1ff98773091f96312703f795bb5ddef87",
      "entryHash": "4b7bacd555a08e059a533ab0d6467bc33f18b84ce11b062ed0e631c272f1ef28"
    },
    {
      "seq": 824,
      "prevHash": "4b7bacd555a08e059a533ab0d6467bc33f18b84ce11b062ed0e631c272f1ef28",
      "recordHash": "d2f7c180c07806386e01d7365a5298455c2d93b4a307d38daf97be5eb0c94023",
      "entryHash": "4e06ff55674055feaec35554f644dc2a4294588ad80c27d7ab9229930ca3a941"
    },
    {
      "seq": 825,
      "prevHash": "4e06ff55674055feaec35554f644dc2a4294588ad80c27d7ab9229930ca3a941",
      "recordHash": "4ae362f50bafc5d6e2b993d03378ce39cd55788d3045ea23e40d093fb92da3fb",
      "entryHash": "0ad0539127040217ee9ce19917520b8590f2294336ee827ade30a791885b7625"
    },
    {
      "seq": 826,
      "prevHash": "0ad0539127040217ee9ce19917520b8590f2294336ee827ade30a791885b7625",
      "recordHash": "8c5d146c581d3ba6f3cb3fdcf1d7439d45a13e6b423c9dd7bf6ee4236e86c952",
      "entryHash": "3de79e690581f45cb60606276a0b1a26c247fa183171bd8341fb6fede388f401"
    },
    {
      "seq": 827,
      "prevHash": "3de79e690581f45cb60606276a0b1a26c247fa183171bd8341fb6fede388f401",
      "recordHash": "776f7b5598665c2cf2156a02c36acb4601c29f4cf9625f747010e41ac85fb111",
      "entryHash": "a266f38f082a50e3a8380f2be1ad3233d2313769b12a0e2baa754bf3c3f8c702"
    },
    {
      "seq": 828,
      "prevHash": "a266f38f082a50e3a8380f2be1ad3233d2313769b12a0e2baa754bf3c3f8c702",
      "recordHash": "f03f175240cb4563369771d051bec11f43652f3f410c321dedc70b9b19ebac1d",
      "entryHash": "7cea0ea782ed93c1fa81db556db2a5e5741b68343ca1e84fecdcfbcfbc43305f"
    },
    {
      "seq": 829,
      "prevHash": "7cea0ea782ed93c1fa81db556db2a5e5741b68343ca1e84fecdcfbcfbc43305f",
      "recordHash": "ccb249aa34f2c155cc63cdf9cb2cb0a88e0987ab45d44a30a924eed93677c763",
      "entryHash": "2a45f3c285cf64a1122ae3a0ff8bee8a2f7d85ad54c2d1ade5aa6d94ea89b189"
    },
    {
      "seq": 830,
      "prevHash": "2a45f3c285cf64a1122ae3a0ff8bee8a2f7d85ad54c2d1ade5aa6d94ea89b189",
      "recordHash": "46d3c69e392335739ea5ef11cc680a60682238127912aea35160b07484d42e7b",
      "entryHash": "3123c44ae7e89b32299bc5b38178ec1555bca3a104a184e4df5c097601d2063c"
    },
    {
      "seq": 831,
      "prevHash": "3123c44ae7e89b32299bc5b38178ec1555bca3a104a184e4df5c097601d2063c",
      "recordHash": "079b3ed696be7e770c189191d27a9559fe92b563b0f8a2a736c24e764694f46a",
      "entryHash": "f547fa4f1eb49e9920535cc73e1bb9a33d266f6263cd079424cdb2d7b479d1de"
    },
    {
      "seq": 832,
      "prevHash": "f547fa4f1eb49e9920535cc73e1bb9a33d266f6263cd079424cdb2d7b479d1de",
      "recordHash": "84f82e76c65f01b077dcda0935a66820c4987c084d6b6b04ab17d42b0fd73529",
      "entryHash": "7e96265b65dd92629c7f506dc8bdc46b2c78ed0021e16f71b9b9eab545a9b35f"
    },
    {
      "seq": 833,
      "prevHash": "7e96265b65dd92629c7f506dc8bdc46b2c78ed0021e16f71b9b9eab545a9b35f",
      "recordHash": "aeb03442f0f146591a8445aadda4f64c70aa23a64744e25f8ae6a37a12ffca5b",
      "entryHash": "d66c6363f0af556edfe7fd0636bf71f925150b778df8831f7ba2533e049a52fe"
    },
    {
      "seq": 834,
      "prevHash": "d66c6363f0af556edfe7fd0636bf71f925150b778df8831f7ba2533e049a52fe",
      "recordHash": "33ec0943f0561ff0bc56c179cb65c672f03123138afe5b34598e03be3e81339e",
      "entryHash": "24196b4ece4e42b30a24671ba19ec1fcf363462c003409ac05f3a23cfe846fa0"
    },
    {
      "seq": 835,
      "prevHash": "24196b4ece4e42b30a24671ba19ec1fcf363462c003409ac05f3a23cfe846fa0",
      "recordHash": "153992f5bfca13c3e836fa08faa34091b62a0dd7497a5b6e7ee830d1ccb1bd87",
      "entryHash": "7cb441093fb1197b509b7c5793af37ddc3cb0c666eda6dccfdf268b38c1ae9ed"
    },
    {
      "seq": 836,
      "prevHash": "7cb441093fb1197b509b7c5793af37ddc3cb0c666eda6dccfdf268b38c1ae9ed",
      "recordHash": "e89bf5ea7863d3b382ae20a4099cc21ae4420207ce16b37c3de2975858457dee",
      "entryHash": "52d965be12c136a86ad05e30a114aac88a898da76f2586d8147835728dd1740b"
    },
    {
      "seq": 837,
      "prevHash": "52d965be12c136a86ad05e30a114aac88a898da76f2586d8147835728dd1740b",
      "recordHash": "f9490c54f9ea586318f15bb31f856fa641e4e8927b6c8825f31c7a187086d7c0",
      "entryHash": "fab47ecac33e14784804a812d9a7e7f1596c52a1366de831513e9216e7605cba"
    },
    {
      "seq": 838,
      "prevHash": "fab47ecac33e14784804a812d9a7e7f1596c52a1366de831513e9216e7605cba",
      "recordHash": "97fd008e98b44bd87f0b34f16091d02b1276edb79685a7d847c531dc34c4675a",
      "entryHash": "0af47ac5f9f69d48a361c9a3bbf0f87e4be4d1843c9854a1375df16bcaec87dc"
    },
    {
      "seq": 839,
      "prevHash": "0af47ac5f9f69d48a361c9a3bbf0f87e4be4d1843c9854a1375df16bcaec87dc",
      "recordHash": "6117ceeaecef0bc8fa9001d641237430be2a6cbc0a97a8a30e22e47990d868cd",
      "entryHash": "af9087ef0fdd1c33114e478711a5382ea072fd15884d7175fc8c4251c14a4627"
    },
    {
      "seq": 840,
      "prevHash": "af9087ef0fdd1c33114e478711a5382ea072fd15884d7175fc8c4251c14a4627",
      "recordHash": "773d4a549cbff638705d96817b11d217421c0cd0553a33924832fa9e43f3a91f",
      "entryHash": "b067b82b3ff1611468d4ee94c82af168f0400873c0e0ff11712ecce771930572"
    },
    {
      "seq": 841,
      "prevHash": "b067b82b3ff1611468d4ee94c82af168f0400873c0e0ff11712ecce771930572",
      "recordHash": "de5433791ac807fb4a1f568cc3c1915685b03db8a2d28a32a32b6ce4f6d328b7",
      "entryHash": "abe1b6330dcbdb6166a7f7403095e954fb9684950732befb18b4ada1ed444d30"
    },
    {
      "seq": 842,
      "prevHash": "abe1b6330dcbdb6166a7f7403095e954fb9684950732befb18b4ada1ed444d30",
      "recordHash": "a53f25fb442567410a7ff08583378d1bc50970318ef0ddc09ae9529f1fe71489",
      "entryHash": "e6a3a637df00fc39f45c8efec9d99d72413c1d1177990cc6e8354250802efac0"
    },
    {
      "seq": 843,
      "prevHash": "e6a3a637df00fc39f45c8efec9d99d72413c1d1177990cc6e8354250802efac0",
      "recordHash": "5c3ea41050a69d9e9b7c68c8ae34d597d309cfdc0e03093e4df1e6e25b3c0181",
      "entryHash": "28c6fb492b7c63105d7db454ac61e1e2f383ca7cd99ec3ef9866c1701582f317"
    },
    {
      "seq": 844,
      "prevHash": "28c6fb492b7c63105d7db454ac61e1e2f383ca7cd99ec3ef9866c1701582f317",
      "recordHash": "c80bd6c67aff2c874f8718bc830cca7a1a8b8cb354f91f216591e128193f399a",
      "entryHash": "a7a38da01fc9a216e01ade45a8a338b9dc073539ba6e5e785c1cd7d5eb513e36"
    },
    {
      "seq": 845,
      "prevHash": "a7a38da01fc9a216e01ade45a8a338b9dc073539ba6e5e785c1cd7d5eb513e36",
      "recordHash": "8c3a6886b67be4405073384ed57ea55f38a5512035912ca2bb7e735c9bdb4c5e",
      "entryHash": "7521085d5e7cfbaffb3e33f86eab16ee31658d70a16965b961b03aacf06437b6"
    }
  ],
  "checkpoint": {
    "seq": 845,
    "kind": "checkpoint",
    "record": "{\"day\":\"2026-11-15\",\"entries\":844,\"head\":\"a7a38da01fc9a216e01ade45a8a338b9dc073539ba6e5e785c1cd7d5eb513e36\",\"site\":\"https://upfork.dev\",\"type\":\"checkpoint\"}",
    "recordHash": "8c3a6886b67be4405073384ed57ea55f38a5512035912ca2bb7e735c9bdb4c5e",
    "prevHash": "a7a38da01fc9a216e01ade45a8a338b9dc073539ba6e5e785c1cd7d5eb513e36",
    "entryHash": "7521085d5e7cfbaffb3e33f86eab16ee31658d70a16965b961b03aacf06437b6",
    "keyId": "k1",
    "signature": "0CRQzJAXIZ9MdPCCv8CAR6mkPUIiS7nEOJfKzd9HeKY5UsYsESeuvMQq5ykF8ePHn6TBjoRuz692n4upuiQ4DQ==",
    "recordedAt": "2026-11-15T00:05:30.910485+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "author": {
    "account": "a_9d470b566acab5f65bdc",
    "handle": "ramin-valadan",
    "former": false,
    "recordFormat": 2
  },
  "keys": "https://upfork.dev/ledger/keys.json"
}