[DTP-Worker] Sprint 8 · buffer · SEO/fiche agent : gate d'IDENTITÉ des 2 métriques data-derived (schema.org 10 nœuds · hreflang 10 pages FR/EN/ES) de 03_agents/seo/AGENT.md ancré sur seo_schema_org.json ⨯ seo_hreflang.json

Les blocs SEO schema.org/hreflang ne gataient que seo/README.md ; la fiche
restituait N nœuds (Organization + M Residence) et N pages × langues sans gate.
Recompute des memes artefacts byte-gates + coherence arithmetique total==1+M.
8 morsures verifiees, working tree byte-restaure, 7 gates re-verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-01 11:10:08 +00:00
parent 71999e04c4
commit c4487fdcf7
3 changed files with 147 additions and 1 deletions
+53
View File
@@ -1166,3 +1166,56 @@ interdit absolu) · **7 gates re-verts** (`check_readme_claims`/`check_artifacts
aucune écriture dans un `out/` ⇒ 0 dérive d'artefact ; le câblage réel de l'endpoint
OTOIA + web-component reste côté agent Frontend / VPS).
- **Auto-score 4Big** : 96/100.
## Session `20260801_110311` · Buffer S8 · SEO — IDENTITÉ des 2 métriques data-derived (schema.org · hreflang) de la fiche agent
**Contexte** : Sprint 8 · buffer (roadmap fonctionnellement close ; poursuite de la
série anti-dérive CLAUDE.md #6, classe « fiche agent qui restitue des attributs
data-derived, gatée uniquement en AGRÉGAT » — mémoire
[[agent-fiche-role-attrs-ungated]] ; même patron que la cellule chat_otoia de la
fiche Frontend Console traitée à la session précédente).
**Dérive silencieuse fermée** :
- `03_agents/seo/AGENT.md:25-26` — le tableau « Livrable réellement produit »
restitue DEUX sorties byte-gatées du bundle SEO à côté du compte de mots-clés
(lui déjà gaté sur README ET fiche) :
- L25 : « graphe JSON-LD : **10 nœuds** (`Organization` + 9 `Residence`) »
- L26 : « **10 pages** × FR/EN/ES + `x-default` »
- Les blocs SEO schema.org (`SEO_SG_RD`) et hreflang (`SEO_HL_RD`) amont ne lisent
QUE `seo/README.md` — JAMAIS la fiche. `SEO_FI` n'était utilisé que par le bloc
de COMPTE de mots-clés. Ces deux cellules étaient donc des surfaces data-derived
ungated : RENOMMER le `@type` des listings, AJOUTER/RETIRER un projet (→ N nœuds
& N pages dérivent) ou ÉCHANGER une langue de contenu périme la fiche pendant que
les trois artefacts byte-gatés (`seo_schema_org.json`/`MANIFEST.json` et
`seo_hreflang.json`) disent autre chose — « vert trompeur » qu'aucune suite
`tests/` (FONCTIONS du builder, jamais la prose de la fiche) n'attrape.
- **État courant** : aucune métrique périmée — 10 nœuds (1 `Organization` + 9
`Residence`) · 10 pages · langues `fr/en/es` + `x-default` (anti-invention #6,
rien à réécrire). Le défaut est la **surface ungated**.
**Gate ajouté** (`ci/check_readme_claims.sh`, bloc « SEO · FICHE AGENT » inséré
après le bloc hreflang README, réutilise les vérités déjà recomputées par les blocs
schema.org/hreflang amont — zéro duplication #6) :
- L25 (regex `graphe JSON-LD : \*\*(\d+) nœuds\*\* \(`<racine>` \+ (\d+)
`<listing>`\)`) : total == `schema_org_nodes` · racine == `@type` singleton du
graphe · M == `listings` · type listing == `@type` uniforme des listings ·
cohérence arithmétique `total == 1 + M`.
- L26 (regex `\*\*(\d+) pages\*\* × ([A-Z/]+) \+ `x-default``) : `|pages|` == carte
hreflang · jeu de langues (lower) == langues de contenu de l'artefact (set-diff :
absent ET en trop).
- Un claim absent échoue AUSSI (INTROUVABLE = régression #6).
**8 morsures vérifiées** (restauré vert après chacune) : nœuds `10→11` · listing
`Residence→Apartment` · racine `Organization→LocalBusiness` · listings `9→8`
(casse l'arithmétique ET la bijection) · pages `10→12` · langue `es→pt` · retrait
`es` (`FR/EN`) · retrait du claim L25 (INTROUVABLE). Working tree byte-restauré
(`git checkout --`, **JAMAIS** `git clean`, interdit absolu) · **7 gates re-verts**
(`check_readme_claims`/`check_artifacts`/`check_docs`/`guard_constraints`/
`check_regression`/`check_ci_integrity`/`validate_json`).
- `ci/README.md` (clause de la table récap du pipeline + paragraphe détaillé « Fiche
agent SEO — 2 métriques data-derived » après le paragraphe hreflang) mis à jour.
- **Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo ;
aucune écriture dans un `out/` ⇒ 0 dérive d'artefact ; l'injection réelle des
balises hreflang/JSON-LD dans les pages reste côté agent Frontend/SEO / VPS).
- **Auto-score 4Big** : 96/100.