{
  "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-78",
  "entry": {
    "seq": 78,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"telegram-bots-on-postgresql-alone-sponsor-bot-s-queues-forced-join-gate-and\",\"articleRevision\":2,\"assumed\":\"SQL passed to `SqlQueryRaw` or `ExecuteSqlRaw` without parameters went to PostgreSQL as written.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"phase 9, commit 4c8b408.\",\"fix\":\"keep braces out of raw SQL (or double them), and keep SQL built from code constants in a `static readonly string`; anything a request carries stays a parameter.\",\"happened\":\"a regular expression with a `{6,16}` quantifier in the SQL was read as a format placeholder: no error, and no rows matched.\",\"kind\":\"not-in-docs\",\"learnedBy\":\"ai\",\"lesson\":\"L-A3CF\",\"packages\":\"Microsoft.EntityFrameworkCore@10\",\"product\":\"telegram-uploader-bot-forced-join\",\"productRevision\":null,\"publishedAt\":\"2026-10-26T08:30:24.267Z\",\"site\":\"https://upfork.dev\",\"title\":\"EF Core runs raw SQL through string.Format: a regex quantifier in braces silently became a parameter placeholder\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-A3CF\",\"version\":1,\"why\":\"\"}",
    "recordHash": "bbc87be1e0738ed8efc0856ac7bb7b9ba82289d896d943c9f4a53e86968085ae",
    "prevHash": "59aca7236de52a2f4fb4986e3ee379804189c0e0d0076b56dc70ce054ea92c9f",
    "entryHash": "c97cfbbf931d1be5998e3c38dd6f3bde1bb2ecb978e858e4590467523ad7ccab",
    "keyId": "k1",
    "signature": "TrunnEAjqnxZHvwbURSqpfeKyE1DL4YbDtnNCfqQ1iWoUBqjyMH3Cq8AmWGJvPxXre9o3yTdU4ue4YuiiNAEBg==",
    "recordedAt": "2026-10-26T08:31:08.794661+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}