La route demande include_references + include_chunk_content à LightRAG et vérifie
chaque segment >= 6 mots entre « » / "…" / “…” dans les chunks réellement
récupérés (normalisation accents, casse, apostrophes, ponctuation, élisions [...]).
Un segment introuvable perd ses guillemets (texte conservé) ; champ optionnel
citations: { gardees, retirees }. Fonction pure dans server/utils/citations.ts,
réutilisée par scripts/verif-citations.mjs (qui gagne --max-total-tokens) ;
scripts/test-citations.mjs couvre les cas limites.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015vcVGz8i4WpZm2dixKUiSD
- REGLE_CITATIONS : constante unique appliquée aux 4 préambules (pensées, projets, croisé, auteur) :
ne citer entre guillemets que ce qui figure mot pour mot dans le contexte, sinon reformuler sans guillemets.
- Préambules + règle envoyés via le champ user_prompt de LightRAG /query ; query = question seule
(la recherche n'est plus polluée par le préambule).
- scripts/verif-citations.mjs : contrôle réutilisable (segments entre guillemets vs contexte only_need_context).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015vcVGz8i4WpZm2dixKUiSD