{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"slug":"source-quote-law","verification":{"valid":true,"entries":12,"head":"13b562c2ebbd0e7b8c336f6e8541d7788337d4a42723e79b5dec27fe61b96201"},"count":12,"sources":[{"id":"s1","url":"functions/_lib/source_law.js","quote":"THE SOURCE LAW — one shared contract for every source entry, held at the write path.","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"genesis","hash":"3a0858b23cc074813ec1651a0e8ac0fb35358fa0983239b80793deab5b361d3a"},{"id":"s2","url":"functions/_lib/source_law.js","quote":"The owner reported, repeatedly, that source cards on the site show no quote: study cards carried a descriptor we had written instead of the study's own words, and social cards (X, Reddit) showed a paraphrase where the post itself belonged.","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"3a0858b23cc074813ec1651a0e8ac0fb35358fa0983239b80793deab5b361d3a","hash":"753bb1ea4b90c9f5ceb74233a160cf786a9f43085416e2751028ac816dbdc5a9"},{"id":"s3","url":"functions/_lib/source_law.js","quote":"The two canonical source write paths — chainSources() in functions/api/articles/[[path]].js and POST /api/protocol/sources — accepted an entry with no quote at all, and even stamped it `quote_status: \"na\"` as though absence were a legitimate state.","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"753bb1ea4b90c9f5ceb74233a160cf786a9f43085416e2751028ac816dbdc5a9","hash":"a544232cb731f2b506ade05e33a29e09d149aed3bf07782868b4bad07cf8c432"},{"id":"s4","url":"functions/_lib/source_law.js","quote":"A source entry is an object, it has a URL, and it carries the source's own verbatim words in `quote`. The words in `quote` are never our words: they may not equal the title, the summary, or the plain-language gloss.","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"a544232cb731f2b506ade05e33a29e09d149aed3bf07782868b4bad07cf8c432","hash":"190e8b8c2a63ffefff9350eda4ab781a4453b847fadb99719ef77cdb15961a03"},{"id":"s5","url":"functions/_lib/source_law.js","quote":"export const SOURCE_LAW = Object.freeze({ key: 'SOURCE_QUOTE_LAW', rule: 'A source entry is an object with a URL and the source\\'s own verbatim words in `quote`. The quote is what the reader sees inside the card, so it may not be the title, the summary or our plain-language gloss, and it may not be absent.', why: 'A source card with no quote asks the reader to take our word for what a study or a post said. That is the one thing this site exists not to do.', min_quote_chars: 40, });","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"190e8b8c2a63ffefff9350eda4ab781a4453b847fadb99719ef77cdb15961a03","hash":"d112bd0e7f705c4396d69c47c5411d55dcdf368a96a9f13f7edb0ffc607b83a7"},{"id":"s6","url":"functions/_lib/source_law.js","quote":"if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) { return { ok: false, errors: [`${at} is ${Array.isArray(raw) ? 'an array' : typeof raw}, not a source object. A source is {type,url,title,quote,...}. A bare string renders as an empty card.`], }; }","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"d112bd0e7f705c4396d69c47c5411d55dcdf368a96a9f13f7edb0ffc607b83a7","hash":"82e9377a178fc5a31fbc9d79f58bd6ebdea5e77b287e77202b7111b5c8422a45"},{"id":"s7","url":"functions/_lib/source_law.js","quote":"Check a whole submitted list. Returns every violation, not just the first — an agent that has to come back six times learns to route around the gate instead of fixing the data.","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"82e9377a178fc5a31fbc9d79f58bd6ebdea5e77b287e77202b7111b5c8422a45","hash":"1bff73345314f0f68ed8e36ba5bd6b66652d51887189a9c8ca648ee1dc16ccce"},{"id":"s8","url":"functions/_lib/source_law.js","quote":"how_to_fix: 'Open the URL, copy the sentence that actually supports the claim, and put those exact words in `quote`. Keep your own description in `summary` or `plain`.',","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"1bff73345314f0f68ed8e36ba5bd6b66652d51887189a9c8ca648ee1dc16ccce","hash":"1ccb9e37dd75fb6e865c169d87779ee9545060256efec05f8d065f07579d0bbf"},{"id":"s9","url":"functions/_lib/source_law.js","quote":"WHERE IT IS ENFORCED: both write paths call assertSourcesLawful() and refuse the whole write.","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"1ccb9e37dd75fb6e865c169d87779ee9545060256efec05f8d065f07579d0bbf","hash":"5d9020f2bf8fd8326871e2751057bdbc082d17f4ce20bcc5f716fe33a1ffe761"},{"id":"s10","url":"functions/_lib/source_law.js","quote":"WHAT KEEPS IT ENFORCED: scripts/check-source-quotes.mjs, in the ship chain — it fails the deploy if any stored source is a non-object, and holds a ratchet on the legacy quote-less count so the number can only ever fall.","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"5d9020f2bf8fd8326871e2751057bdbc082d17f4ce20bcc5f716fe33a1ffe761","hash":"655fcd71c2665bef318662398c0929efb314f4d22ebbb728f879a4982f7ce106"},{"id":"s11","url":"functions/_lib/source_law.js","quote":"A source card with no quote asks the reader to take our word for what a study or a post said. That is the one thing this site exists not to do.","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"655fcd71c2665bef318662398c0929efb314f4d22ebbb728f879a4982f7ce106","hash":"0ea25898d642d6149aa25b1360dcd3fbb4abc517910b55e0d2fa92acecd7ec3f"},{"id":"s12","url":"functions/_lib/source_law.js","quote":"export const QUOTE_IS_THE_BODY = Object.freeze([ 'x', 'twitter', 'reddit', 'hackernews', 'imessage', 'whatsapp', 'statement', 'book', 'pubmed', 'study', 'trial', 'paper', 'journal', 'anecdotal', 'forum', ]);","type":"study","accessed_at":"2026-08-06T03:58:53.287Z","prev":"0ea25898d642d6149aa25b1360dcd3fbb4abc517910b55e0d2fa92acecd7ec3f","hash":"13b562c2ebbd0e7b8c336f6e8541d7788337d4a42723e79b5dec27fe61b96201"}]}