test(kb): couvre le chantier B-full (B3) livré sans test — caviardage + isolation groupe + modération #25

Merged
kevin merged 1 commit from test/kb-b3-coverage into main 2026-07-17 09:46:55 +00:00
Owner
No description provided.
test(kb): couvre le chantier B-full (B3) livré sans test — caviardage, isolation groupe, porte de modération
All checks were successful
CI / Backend — pytest (pull_request) Successful in 44s
CI / i18n — usage → locales (pull_request) Successful in 4s
f02aeff129
Le chantier KB entreprise B-full (scope group, modération curateur,
caviardage secrets-only) a été livré v5.76→5.79 mais JAMAIS testé
(ni unitaire ni runtime). Ces tests verrouillent ses invariants de
sécurité — le socle de l'offre multi-tenant souveraine.

1. test_kb_group_caviardage (10, purs) — le contrat B3c :
   - scope group = sanitize_secrets_only : masque TOUS les motifs de
     secret (clé=valeur, Bearer, FERNET, hex 64+, password) mais GARDE
     les PII (email/tél/IP/chemin = infos client, matière d'équipe) ;
   - scope collective = sanitize_for_collective : masque secrets ET PII ;
   - contraste prouvé en une assertion (même entrée → secret mort dans
     les deux, PII vivante en group / morte en collective).

2. test_kb_group_isolation (3, Postgres) — le REMPART, testé sur le VRAI
   _vector_search avec un store HOSTILE qui fuit tous les chunk_ids
   toutes collections confondues : la sécurité vient donc uniquement du
   filtre SQL d'hydratation. Prouve qu'un non-membre ne récupère jamais
   un chunk d'un groupe où il n'est pas, que le privé d'autrui reste
   invisible, et que la porte de modération (pending_review) cache un
   doc de groupe jusqu'à approbation — même pour un membre.

3. test_kb_retrieval_fusion étendu — isolation au niveau du VECTOR STORE :
   chaque groupe a sa collection (kb_chunks_group_<gid>), distincte des
   autres groupes / du privé / du collectif ; group sans group_id retombe
   sur le privé (jamais de collection groupe fourre-tout).

Tests only, zéro changement runtime. Les 3 DB s'exécutent en CI (service
Postgres), skip propre sans DATABASE_URL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
kevin merged commit f96ef3c44c into main 2026-07-17 09:46:55 +00:00
kevin deleted branch test/kb-b3-coverage 2026-07-17 09:46:56 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kevin/Gungnir!25
No description provided.