{
  "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-94",
  "entry": {
    "seq": 94,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"adding-persian-right-to-left-to-a-next-js-admin-panel-what-broke-and-how-we\",\"articleRevision\":1,\"assumed\":\"\\\"@sponsor_bot\\\" and \\\"/ads\\\" could be written into a Persian message as they are.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"phase 8, commit 78eddd6 (`SettleText` and `SettleValue` in MessageTexts.Fa.cs).\",\"fix\":\"a left-to-right mark (U+200E) goes before a @ or / that starts a mention or command, and around a value that begins in Latin letters; only in Persian bots' messages, so English bots' messages are byte for byte as before.\",\"happened\":\"after Persian words, the \\\"@\\\" or \\\"/\\\" (neutral characters) took the right-to-left direction around them and showed at the far end, as \\\"bot@\\\". A value that starts in Latin letters, like \\\"Interstellar (2014)\\\", lost its bracket to the far side of the sentence in the same way.\",\"kind\":\"tools\",\"learnedBy\":\"ai\",\"lesson\":\"L-71DF\",\"packages\":\"\",\"product\":\"telegram-uploader-bot-forced-join\",\"productRevision\":null,\"publishedAt\":\"2026-10-26T08:51:46.466Z\",\"site\":\"https://upfork.dev\",\"title\":\"In a Persian Telegram message, a @username or /command after Persian words shows its sign on the wrong side\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-71DF\",\"version\":1,\"why\":\"\"}",
    "recordHash": "ab5675b56855bebe407ef5923f6bdb78361d1103103efab681bdb7b7f102dc91",
    "prevHash": "97d63b8fa5062cdd7a4f2a96dc7f89a13ad4cdb0e7e89bfd88266d7463328329",
    "entryHash": "c8e185828e1dd722ad8b8dfbda1dc3eef2ea9ec114f73a72464bf0b14011efdc",
    "keyId": "k1",
    "signature": "oXGle66jAllfJAg/FY/GQFZ/W6kOJ2Lyrqh+rofp4jn6x7KIQ78U/yX6gjzW/8knYJWfB0QevEhoXLP2tnGQAw==",
    "recordedAt": "2026-10-26T08:52:08.842051+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}