# Sortie — gabarit du rapport et schéma JSON

Le rapport est ce que l'utilisateur lit ; le sidecar est ce qui rend le suivi possible.

Emplacement — un dossier par couple page + requête :

```
~/Documents/SEO/<client>/audits/<page>--<requête>/
├── v1.md            ← rapport lisible
├── v1.json          ← sidecar machine
├── v1.source.txt    ← contenu tel qu'audité
└── v2.md
```

`vN+1` si un `vN` existe — jamais d'écrasement. Slug de page : `home` pour la racine, chemin aplati sinon (`blog-mon-article`). Slug de requête : la requête en kebab-case.

Arborescence complète du dossier client, types figés :

```
~/Documents/SEO/<client>/
├── audits/    ← ce skill
├── cartes/    ← seo-preparation-semantique (réutilisables entre audits)
├── pages/     ← rédaction en aval
└── briefs/    ← inputs fournis par le client
```

---

## Gabarit du rapport

```
AUDIT SÉMANTIQUE — <titre / URL / chemin> — v1 — YYYY-MM-DD
Requête : "..."
Profil  : B2B — CMO SaaS 50p — secteur X — Lead Gen — audience mixte — N/A
Version cible : refonte

== PÉRIMÈTRE ==
Source : Markdown (fichier local) — 2431 mots
Couches observables    : 11/11 (dont C6 et C10 partielles)
Champs non observables : C10.meta-description, C10.schema-org
⤷ pour les auditer : fournir l'URL ou le HTML rendu
Carte de référence : générée par sous-agent aveugle au contenu ✅

== VERDICT ==
Surprise Score Sémantique : 42/100 — Acceptable mais réplicable
  « Score calibré sur projection corpus Claude. Pour une calibration exacte :
    audit GEO avec scores algorithmiques. »
Couverture standard : 64 %  (cible ≥ 70 %) ❌
Couverture surprise : 18 %  (cible ≥ 30 %) ❌
Score de couverture : 6/11 couches conformes
Décision : corrections P0 puis P1 avant republication

== DÉTAIL PAR COUCHE ==
[C1 → C11, format de references/layers-c1-c11.md]
Couches comptées : C2, C3.  Couches jugées : les autres.

== HORS SCOPE DÉTECTÉ ==
| Terme | Occ. | Densité | Lecture | Action |
| « netlinking » | 12 | 0.48 % | pollution — autre intention | Déplacer vers la page netlinking |
Passage cité : « ... »

== PLAN DE CORRECTION ==
P0 — Bloquants (ne franchit pas l'admission)
- [C10.title] Gap : title sans différenciateur → Action : réécrire en intégrant
  l'angle de divergence « ... »
- [C11.phase-3] Gap : phase Generation non couverte → Action : ajouter une FAQ
  de 5 questions citables isolément

P1 — Importants (indexé mais Low Surprise)
- [C2.entity.bm25] Gap : 0,10 % mesuré vs 0,30 % attendu → Action : développer
  dans la section admission

P2 — Améliorations
- [C6.calculateur] Gap : absent → Action : créer (Action Engine flag levé)

== DELTA vs v1 (si applicable) ==
```

---

## Delta de re-audit

Si un `.audit-v(N-1).json` existe à côté du contenu, le charger et ouvrir le rapport sur cette section.

```
== DELTA vs v1 (2026-07-29) ==
Surprise Score : 42 → 67  (+25)
Score couverture : 6/11 → 9/11
P0 résolus : 3/3 ✅
P1 résolus : 2/5  (ouverts : C2.entity.bm25, C5.preuve-adoption, C8.axe-2)
RÉGRESSIONS :
  - [C2.entity.passage-ranking] 0,72 % → 0,08 % — l'entité pivot a été diluée
    par la réécriture
NOUVEAUX HORS SCOPE :
  - « growth hacking » (7 occ, 0,28 %) — apparu avec la nouvelle intro
```

Les **régressions** sont la partie la plus utile du delta : une réécriture qui corrige trois P0 en cassant une entité pivot n'a pas progressé, et rien d'autre ne le révèle. Les chercher systématiquement, y compris quand le score global monte.

---

## Schéma du sidecar JSON

Les identifiants sont déterministes — c'est ce qui permet d'apparier deux audits. Sans eux, un re-audit repart de zéro et personne ne sait si les corrections ont servi.

Conventions d'ID : `C2.entity.<slug>`, `C3.ngram.<slug>`, `C4.pain.<slug>`, `C5.preuve.<slug>`, `C10.<champ>`, `C11.phase-<n>`, `oos.<slug>`.

```json
{
  "version": 1,
  "date": "2026-07-29",
  "query": "comment fonctionne le passage ranking",
  "profile": {
    "market": "B2B",
    "role": "CMO SaaS 50p",
    "sector": "...",
    "objective": "Lead Gen",
    "audience": "mixte",
    "geo": "N/A",
    "target_version": "refonte"
  },
  "source": {
    "type": "markdown",
    "path": "ma-page.md",
    "word_count": 2431
  },
  "reference_map": {
    "generated_by": "subagent",
    "blind_to_content": true
  },
  "scope": {
    "observable": ["C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11"],
    "partial": ["C6","C10"],
    "na": [
      { "id": "C10.meta-description", "reason": "absent du Markdown" },
      { "id": "C10.schema-org", "reason": "absent du Markdown" }
    ]
  },
  "surprise_score": {
    "total": 42,
    "verdict": "acceptable-mais-replicable",
    "components": {
      "proprietary_entities": 0.31,
      "high_surprise_verbatims": 0.20,
      "lexical_distance": 0.55,
      "quotation_statistics": 0.25
    },
    "simulated": true
  },
  "coverage": {
    "conforming_layers": 6,
    "observable_layers": 11,
    "standard": 0.64,
    "surprise": 0.18
  },
  "layers": {
    "C2": {
      "regime": "counted",
      "entities": [
        {
          "id": "C2.entity.bm25",
          "label": "BM25",
          "target_density": 0.3,
          "variants": ["BM25", "bm-25"],
          "occurrences": 2,
          "density": 0.10,
          "status": "sous-densifie"
        }
      ]
    },
    "C10": {
      "regime": "judged",
      "fields": [
        { "id": "C10.title", "status": "gap", "evidence": "« ... »",
          "action": "réécrire en intégrant l'angle de divergence" },
        { "id": "C10.meta-description", "status": "na" }
      ]
    }
  },
  "out_of_scope": [
    { "id": "oos.netlinking", "term": "netlinking", "occurrences": 12,
      "density": 0.48, "reading": "pollution", "action": "déplacer" }
  ],
  "corrections": {
    "P0": ["C10.title", "C11.phase-3"],
    "P1": ["C2.entity.bm25", "C5.preuve-adoption", "C8.axe-2"],
    "P2": ["C6.calculateur"]
  },
  "warnings": []
}
```

Le champ `reference_map.blind_to_content` doit être renseigné honnêtement : `false` quand la carte a été produite dans le contexte principal faute de sous-agents. C'est cette valeur qui permet, en relisant un vieil audit, de savoir si ses conclusions étaient fiables ou possiblement sous-détectées.
