diff --git a/05_activity_log/2026-07-30.md b/05_activity_log/2026-07-30.md
index 49abdd5..961bde7 100644
--- a/05_activity_log/2026-07-30.md
+++ b/05_activity_log/2026-07-30.md
@@ -1549,3 +1549,58 @@ nouvelles cibles résolvent) · `ci/guard_constraints.sh` EXIT 0. `crm/AGENT.md`
(`bim`/`ifc_speckle`/`rendu`/`mobile` = VPS-only, sans livrable in-repo → hors chantier.)
**Auto-score 4Big** : 96/100.
+
+---
+
+## Session 20260730_225912 · Buffer S8 · Gate 4Big check_docs : 0 faux positif (fixtures exclues + spec scorée)
+
+**Tâche** : **Sprint 8 · buffer L75 (corrections finales)**. Le chantier de cross-linking
+des fiches agents étant **clos** (commit f68f2e2 : 4 dernières fiches SEO/DevOps/Frontend/
+ONAPI), baseline sain établi : `check_docs.sh` EXIT 0, `guard_constraints.sh` EXIT 0,
+`validate_json.sh` EXIT 0. Cible de la session : réduire le **bruit** de la gate
+documentaire — la section « 2. Auto-score 4Big (SOFT) » émettait **9 avertissements ⚠**.
+
+**Diagnostic (analyser avant agir · #1)** : les 9 ⚠ se répartissent en deux natures
+**distinctes**, l'une un **faux positif**, l'autre un **vrai manque** :
+- **8 sur 9** sous `publiciste/fixtures/data_room/PXX/…` — ce sont des **INPUTS de test
+ synthétiques** consommés par le parser (`test_publiciste.py:25` `FIXTURES = fixtures/data_room`).
+ Le README de ces fixtures les déclare explicitement « **DONNÉES SYNTHÉTIQUES DE TEST …
+ ne doivent JAMAIS être publiés** » (`publiciste/fixtures/README.md:1-5`). Un input de
+ test n'est **pas un livrable scoré 4Big** — exactement le même statut que
+ `daily_reports/*`, déjà exclu de cette gate.
+- **1 sur 9** — `specs/CHOISIR_MON_UNITE_SPEC.md`, un **vrai livrable** (spec design-complete
+ validée par Michel, 5 décisions tranchées) qui n'affichait **aucun** auto-score.
+
+**2 solutions par nature (workflow #4 · toujours 2+ options)** :
+- *Fixtures* — A **exclure la racine** (root-cause : les inputs de test ne sont pas des
+ livrables) vs B ajouter un faux score à des fixtures « fictives ». **Choix A** : B
+ falsifierait des fichiers explicitement non-publiables. Portée **précise** :
+ `*/fixtures/data_room/*` (le sous-arbre d'inputs), **pas** `*/fixtures/*` — sinon
+ `fixtures/README.md` (doc réelle, déjà scorée) perdrait sa surveillance.
+- *Spec* — A l'**exclure** (specs = design docs) vs B lui **donner un vrai score**.
+ **Choix B** : la spec EST un livrable (contrainte #5 « score min 95 sur tout livrable »),
+ l'exclure masquerait un manque au lieu de l'honorer.
+
+**Fichiers modifiés (2)** :
+1. `ci/check_docs.sh` — nouvelle branche `case` : `05_deliverables_mvp/*/fixtures/data_room/*)
+ continue ;;` (SOFT gate section 2 uniquement ; liens internes de la section 1 restent
+ vérifiés partout, fixtures comprises).
+2. `05_deliverables_mvp/specs/CHOISIR_MON_UNITE_SPEC.md` — section **« Auto-score 4Big :
+ 95/100 »** ajoutée, avec table 4 volets + justification du **−5** (provisionnements
+ externes DocuSign/Speckle/PROJECT_META non tranchés, à lever au build downstream).
+
+**Anti-invention (#6)** : le seul chiffre chiffré cité dans le score (P01 = **2.484M USD
+Dumar tasación**) est une **citation verbatim** de la spec elle-même (`…:63`, section
+« Non-négociables ») — aucun nombre fabriqué. Le score 95 est une **auto-évaluation de
+rigueur de la spec**, explicitement **pas** un score d'implémentation (le build
+`/choisir-mon-unite` reste hors-périmètre worker · #8).
+
+**Vérifs post-édition** :
+- `check_docs.sh` : **9 ⚠ → 0 ⚠**, EXIT 0 (liens internes toujours OK).
+- **Test de non-régression de portée** : `fixtures/README.md` reste **gaté** (✓ score
+ présent) — seul le sous-arbre `data_room/` est exclu ; la spec affiche désormais ✓.
+- `guard_constraints.sh` EXIT 0 · `validate_json.sh` EXIT 0 (inchangés).
+
+**Hors périmètre worker (VPS · #8)** : néant (changements in-repo : gate CI locale + doc).
+
+**Auto-score 4Big** : 96/100.
diff --git a/05_deliverables_mvp/specs/CHOISIR_MON_UNITE_SPEC.md b/05_deliverables_mvp/specs/CHOISIR_MON_UNITE_SPEC.md
index d99c4b8..aee2c41 100644
--- a/05_deliverables_mvp/specs/CHOISIR_MON_UNITE_SPEC.md
+++ b/05_deliverables_mvp/specs/CHOISIR_MON_UNITE_SPEC.md
@@ -112,3 +112,20 @@ _Conservées pour traçabilité ; chaque point est résolu par la section
3. **Après login** → viewer 3D Speckle bâtiment + fiche unité complète + prix exact + financement
4. **CTA "Réserver cette unité"** → création reservation 10j ouvrables + génération contrat DocuSign
5. **Signature DocuSign** → dépôt 20% (Cardnet) → réservation confirmée → email + notification vendeur
+
+---
+
+## Auto-score 4Big : **95/100**
+
+Score de la **spec** (rigueur/complétude du design), **pas** d'une implémentation
+(le build `/choisir-mon-unite` reste hors-périmètre worker · contrainte #8, cf. en-tête).
+
+| Volet 4Big | Note | Justification |
+|---|---|---|
+| Masterplan / parcours | 96 | Parcours vendeur 4 étapes finalisé (projet → bâtiment → étage → unité) + 5 décisions Michel tranchées. |
+| Architecture technique | 95 | Speckle iframe/bâtiment, `Unit Reservation` ERPNext, webhook DocuSign, ``/`` spécifiés. |
+| Paysage / expérience | 95 | Design luxury `#0a0a12`+`#f0b429` (Fraunces/Cormorant), responsive mobile-first, FR/EN/ES. |
+| Ingénierie / conformité | 94 | Cardnet (pas Stripe), rendus réels only, prix vérifiés (P01 = 2.484M USD Dumar), zéro invention (#6). |
+
+**−5** : provisionnements externes non tranchés (compte DocuSign entreprise, `stream_id`
+Speckle par projet, extension `PROJECT_META` à P04/P06/P08/P09) — à lever au build downstream.
diff --git a/ci/check_docs.sh b/ci/check_docs.sh
index 7d776d5..c958a8c 100755
--- a/ci/check_docs.sh
+++ b/ci/check_docs.sh
@@ -46,6 +46,7 @@ echo "== 2. Auto-score 4Big sur les livrables (SOFT · CLAUDE.md #5 · ≥95/100
while read -r md; do
case "$md" in
05_deliverables_mvp/daily_reports/*) continue ;; # rapports : hors gate score
+ 05_deliverables_mvp/*/fixtures/data_room/*) continue ;; # fixtures : INPUTS de test synthétiques (cf. publiciste/fixtures/README.md), pas des livrables scorés
esac
if grep -qiE 'score|/100' "$md"; then
ok "$md — mention de score présente"