Files
oto-enterprise-os-dtp/05_activity_log
Claude Code DTP Worker 607b22282b [DTP-Worker] Sprint 8 · buffer L60 · Domaine SEO (3e surface) : la CARTE hreflang (« carte alternate FR/EN/ES + x-default par page ») était décrite EN PROSE dans le README du module seo sans AUCUN gate d'IDENTITÉ. Les deux blocs SEO existants gatent le COMPTE de mots-clés (artefact seo_keywords) et les @type du graphe schema.org (artefact seo_schema_org) — jamais le jeu de langues hreflang, qui vit dans un TROISIÈME artefact (seo_hreflang) au contenu distinct. Ce jeu est DATA-DERIVED : langues de contenu = {a.hreflang} − {x-default} de seo/out/seo_hreflang.json (byte-gaté par check_artifacts) = {en,es,fr} · x_default_lang = fr. Aucun gate ne comparait ces CODES à l'artefact : AJOUTER une langue au bundle (pt → 4 langues de contenu) · RETIRER/ÉCHANGER es ferait dériver la prose (README:17) en silence pendant que la carte byte-gatée dit autre chose — « vert trompeur » qu'aucune suite tests/ (qui teste des FONCTIONS de génération, pas la prose du README) n'attrape → nouveau bloc recomputant l'ENSEMBLE des langues de contenu depuis seo_hreflang.json (zéro duplication de la carte du générateur #6) et exigeant que la cellule les nomme EXACTEMENT (absent ET en trop via set-diff · casse normalisée) + mentionne x-default. Cohérences croisées en bonus (mordent un artefact INTERNEMENT incohérent) : carte UNIFORME (toutes les pages portent le même jeu d'alternate) · x-default présent sur CHAQUE page · langue par défaut (x_default_lang) ∈ langues de contenu (ni vacante ni étrangère) · pour chaque page x-default.href == canonical == href de la langue par défaut (l'invariant README:61). Un claim absent échoue AUSSI. 7 morsures vérifiées : prose échange ES→PT captée (absents=[es] en trop=[pt]) · prose retrait ES (sous-ensemble) capté · prose x-default supprimé capté · prose reformulée (carte INTROUVABLE) captée · artefact +langue pt sur 1 page (non uniforme) capté (2 jeux distincts + prose absents=[pt]) · artefact x_default_lang→de (défaut étranger + href incohérent) capté · artefact x-default.href≠canonical sur 1 page capté ; restauré = green : [en,es,fr] + x-default == seo_hreflang · uniforme · défaut fr · href cohérent (10 pages). État courant : aucune langue périmée (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail « 3e surface SEO ») mis à jour · 7 gates re-verts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 18:07:08 +00:00
..
[DTP-Worker] Sprint 8 · buffer L60 · Domaine SEO (3e surface) : la CARTE hreflang (« carte alternate FR/EN/ES + x-default par page ») était décrite EN PROSE dans le README du module seo sans AUCUN gate d'IDENTITÉ. Les deux blocs SEO existants gatent le COMPTE de mots-clés (artefact seo_keywords) et les @type du graphe schema.org (artefact seo_schema_org) — jamais le jeu de langues hreflang, qui vit dans un TROISIÈME artefact (seo_hreflang) au contenu distinct. Ce jeu est DATA-DERIVED : langues de contenu = {a.hreflang} − {x-default} de seo/out/seo_hreflang.json (byte-gaté par check_artifacts) = {en,es,fr} · x_default_lang = fr. Aucun gate ne comparait ces CODES à l'artefact : AJOUTER une langue au bundle (pt → 4 langues de contenu) · RETIRER/ÉCHANGER es ferait dériver la prose (README:17) en silence pendant que la carte byte-gatée dit autre chose — « vert trompeur » qu'aucune suite tests/ (qui teste des FONCTIONS de génération, pas la prose du README) n'attrape → nouveau bloc recomputant l'ENSEMBLE des langues de contenu depuis seo_hreflang.json (zéro duplication de la carte du générateur #6) et exigeant que la cellule les nomme EXACTEMENT (absent ET en trop via set-diff · casse normalisée) + mentionne x-default. Cohérences croisées en bonus (mordent un artefact INTERNEMENT incohérent) : carte UNIFORME (toutes les pages portent le même jeu d'alternate) · x-default présent sur CHAQUE page · langue par défaut (x_default_lang) ∈ langues de contenu (ni vacante ni étrangère) · pour chaque page x-default.href == canonical == href de la langue par défaut (l'invariant README:61). Un claim absent échoue AUSSI. 7 morsures vérifiées : prose échange ES→PT captée (absents=[es] en trop=[pt]) · prose retrait ES (sous-ensemble) capté · prose x-default supprimé capté · prose reformulée (carte INTROUVABLE) captée · artefact +langue pt sur 1 page (non uniforme) capté (2 jeux distincts + prose absents=[pt]) · artefact x_default_lang→de (défaut étranger + href incohérent) capté · artefact x-default.href≠canonical sur 1 page capté ; restauré = green : [en,es,fr] + x-default == seo_hreflang · uniforme · défaut fr · href cohérent (10 pages). État courant : aucune langue périmée (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail « 3e surface SEO ») mis à jour · 7 gates re-verts.
2026-07-31 18:07:08 +00:00