Files
nas-runbooks/hermes-tt/ria-179-articles-fiabilite-citation.md
T

4.9 KiB

RIA (Reglement Interieur Achats) — 179 articles verbatim dans le RAG, fiabilite citation

Instance auteur : hermes-tt Date : 2026-08-06 Tags : [ria, rag, nyora-notes-tt, fts, achats] Statut : valide


Probleme

Ingestion du RIA (reglement interieur achats TT, 179 articles) dans NyoraNotes REST (:8787) avec exigence stricte de Nabil : toute question RIA doit retourner l'article ou les articles correspondants, cites VERBATIM sans aucune modification. Audit demande apres l'ingestion initiale pour valider avant mise en confiance operationnelle.

Verification manuelle a revele que 12 des 179 fichiers articles/article-NNN.txt (et les notes NyoraNotes correspondantes) se terminaient par les premieres lignes du TITRE/Chapitre/Section qui introduit le groupe d'articles SUIVANT, au lieu que ce texte de structure reste attache a la suite. Consequence demontree en conditions reelles : la recherche FTS pénalité retard remontait l'article 97 en position 2 (score -7.3) alors que l'article 97 traite en realite des delais de signature de contrat, sans rapport avec les penalites — il ne remontait que parce que son fichier se terminait par "Section 1 - Delais et penalites de retard" (titre de la section qui commence a l'article 98).


Contexte et contraintes

  • Source : reglement-interieur-achats-TT.docx, hash MD5 a6b534bb06473ce2ab6ac0f13ca4b0ea (verifie).
  • Extraction mecanique DOCX->XML vers 179 fichiers article-NNN.txt (parse_ria_articles.py) + fichier canonique RIA_INTEGRAL_179_articles.txt.
  • Le fichier canonique integral N'EST PAS affecte (les headers TITRE/Chapitre y sont normaux et attendus, c'est un document continu).
  • Seuls les fichiers PAR ARTICLE (split) sont concernes, car le parseur attachait le header de section suivant a la fin de l'article precedent plutot qu'au debut du suivant.
  • Ingestion NyoraNotes : 179 notes "RIA — Article N" + 1 note index = 180 notes, tags ria, hermes-tt, article.

Ce qui NE fonctionne PAS

Tentative Erreur obtenue Raison de l'echec
Faire confiance au rapport d'ingestion sans re-verifier le contenu reel des fichiers Aucune erreur visible dans le rapport — le defaut n'apparait qu'en testant des requetes FTS reelles Le rapport verifiait "la question renvoie le bon article en position 1" mais pas "aucun autre article n'est pollue par du texte hors-sujet"
Se fier au seul comptage (179 fichiers, 180 notes, sequence 1-179 complete) Comptage correct, mais insuffisant Un comptage exact ne garantit pas la purete du contenu de chaque fichier

Solution validee

  1. Detection : scanner les 6 dernieres lignes non-vides de chaque fichier article-NNN.txt, chercher un match sur ^(TITRE|Chapitre|Section\s+\d) en debut de ligne complete.
  2. 12 fichiers concernes : 2, 5, 41, 97, 109, 127, 132, 142, 148, 152, 164, 172.
  3. Pour chacun : tronquer le fichier a la derniere ligne substantielle de l'article (avant le header), reecrire le fichier local.
  4. Recuperer l'ID de la note NyoraNotes correspondante (GET /notes?tag=ria&limit=100&page=N, filtrer par titre "RIA — Article N").
  5. PUT /notes/{id} avec le nouveau contenu (# RIA — Article N + texte article corrige).
  6. Aucune reindexation FTS manuelle necessaire : la recherche reflete le contenu corrige immediatement apres le PUT (verifie sur article 97 / requete "penalite retard").

Verification

curl -s -H "Authorization: Bearer $TOKEN" --get http://localhost:8787/search --data-urlencode "q=penalite retard"
# Attendu : article 99 en position 1, article 97 absent du top (ou present uniquement si legitimement pertinent)

Confirme le 06/08/2026 : article 97 n'apparait plus dans les 5 premiers resultats pour "penalite retard", le classement restant (99, 129, 30, 40, 105) est desormais coherent avec le contenu reel de chaque article.


Pieges specifiques DSM / NAS

  • mcp-nas : la commande docker n'est PAS disponible directement dans le shell du container mcp-nas (pas de docker.sock monte, pas de binaire docker). Il faut passer par ssh nas-host (alias configure vers Best0f@172.17.0.1:22222) puis utiliser le binaire complet /usr/local/bin/docker.
  • L'API NyoraNotes REST pagine avec le parametre page (1-indexe), PAS offset — passer offset est silencieusement ignore et retourne toujours la page 1.
  • limit est plafonne a 100 par l'API (le depasser renvoie une 422 Pydantic, pas une troncature silencieuse).
  • Le hash affiche dans les noms de fichiers du pipeline OneDrive (ex. ...a6b534bb.md) est un MD5, pas un SHA256.

References

  • Skill : gsd-ao-evaluation/references/ria-articles-cles.md (procedure de citation verbatim, articles cles, structure du RIA)
  • Fichier canonique : /opt/data/workspace/reference/RIA/RIA_INTEGRAL_179_articles.txt
  • Memoire hermes-tt : /opt/data/memories/MEMORY.md (entree RIA ajoutee 06/08/2026)