Audits · août 2026Audit — pilier growth-web

Audit — pilier growth-web

Onzieme tour de la rotation (docs/team/roster.md, @codebase-auditor). Lecture seule sur le code. Ce tour differe des six precedents : les six piliers restants ont ete audites en une passe, a la demande. La profondeur…

Onzieme tour de la rotation (docs/team/roster.md, @codebase-auditor).

Lecture seule sur le code. Ce tour differe des six precedents : les six piliers restants ont ete audites en une passe, a la demande. La profondeur par pilier est donc moindre, et chaque document dit ou il s'arrete. La sonde commune est la meme partout : les invariants que le roster declare pour le pilier.

Perimetre : src/app/(marketing)/** (hors intelligence et marketplace), content/**, messages/**, src/lib/seo, sitemap.ts, llms.txt.

Etat du depot : origin/main a 3e23edb7, 27 aout 2026.

Ce qui a ete verifie

SondeResultat
Invariant — les six langues portent les memes clesrespecte — 9 221 cles dans chacune, exactement
Invariant — « aucun tiret cadratin ni demi-cadratin dans la copy »violé
Occurrences dans messages/2 393 sur six langues
… dont fr.json374 chaines (370 cadratins, 4 demi-cadratins)
Garde verifiant cette regleaucune
messages/CLAUDE.md restate-t-il la reglenon

L'invariant i18n est tenu de facon remarquable : 9 221 cles dans les six fichiers, au caractere pres. Aucun autre pilier de la rotation n'a produit un resultat aussi net sur une contrainte de completude.


Constat 1 — la regle de copie la plus stricte du depot est violee 2 393 fois, et rien ne la verifie

Severite : faible (cosmetique), mais elle touche la premiere ligne que lisent les visiteurs et les crawlers. → backlog/growth-web/0069

docs/team/roster.md:292 :

« Regle de copie stricte : aucun tiret cadratin ni demi-cadratin dans la copy UI ou marketing »

messages/ est la copie UI et marketing. Denombrement :

FichierOccurrences
de.json475
en.json444
fr.json425
pt.json410
it.json342
es.json297
Total2 393

Ce sont de vraies chaines de copie, pas des artefacts. Echantillon fr.json :

  • meta.home.description — « BoostEcom est le systeme d'exploitation IA de l'e-commerce Shopify. Connecte un store, definis une vision, et ** : ** … ». C'est la meta description de la page d'accueil : la phrase que voient tous les moteurs et tous les crawlers IA.
  • agents.registry.atlas.bio — « Atlas est l'agent fondateur de la plateforme BoostEcom ** : ** le systeme d'exploitation de votre boutique ».

Aucune garde : ni script dans scripts/, ni claim dans check-doc-claims.mjs, ni mention dans messages/CLAUDE.md. La regle vit dans un seul document que rien ne relie a la copie qu'elle regit.

Pourquoi la regle ne peut pas etre appliquee telle qu'elle est ecrite

Un cas du denombrement mérite d'etre isole, parce qu'il change ce que devrait faire un correctif :

pricing.cards.rows.dailyBonus.values.free  =  "—"

La chaine est un tiret cadratin, seul. C'est un usage typographique legitime : le tiret de tableau qui veut dire « sans objet ». Une garde qui interdit le caractere sans distinguer les usages casserait cette cellule, ou forcerait a l'ecrire autrement pour de mauvaises raisons.

L'invariant vise clairement le tiret comme ponctuation de phrase, la tournure qui fait sonner un texte comme genere. Il ne vise pas le tiret comme glyphe. Ecrit en absolu (« aucun »), il ne distingue pas les deux, et c'est ce qui le rend inapplicable en l'etat autant que sa violation le rend inopérant.


Ce que cet audit n'a pas couvert

  • Les deux autres moities de l'invariant de copie, « pas de tournures It's not just X, it's Y ni Whether you're A or B » : non sondees. Elles demandent une lecture, pas un grep.
  • sitemap.ts et llms.txt — la regle « une page publique nouvelle y entre » n'a pas ete verifiee page par page. sitemap.ts a ete lu, mais seulement pour l'invariant intelligence du tour precedent.
  • content/** (MDX) — non ouvert, alors que c'est la surface editoriale principale et donc la plus exposee a la meme regle.
  • src/lib/seo, les JSON-LD, l'OG : non ouverts.
  • La qualite de la traduction : la sonde compte des cles, elle ne lit pas ce qu'elles disent. Six fichiers equilibres peuvent porter six textes mauvais.