Voici ce qui compte comme prouvé de bout en bout : l'agent a trouvé le défaut, décidé la correction, l'a publiée, fusionnée, puis a vérifié le site en ligne. Certains étaient de vrais problèmes du site ; la plupart étaient des exercices plantés. Rien de cela ne prouve que les classements se sont améliorés. Ce que les humains ont fait autour de la boucle est listé plus bas, avec chaque type de défaut que ce site ne peut pas prouver.
22 sur 30 types de défauts
19 exercés par un exercice planté · 3 par un défaut trouvé en conditions réelles · 8 non prouvables sur ce site
Le total correspond à chaque type de défaut que l’agent est conçu pour corriger sans intervention humaine, chacun validé sur toute la chaîne dans notre suite de tests. Cette page compte ceux qui l’ont aussi fait en direct, sur ce site. Aucune liste plus courte ne se cache derrière le premier nombre : chaque type pas encore prouvé en direct est listé ci-dessous avec sa raison.
Les reçus vérifiés avant le 11 octobre 2026 ont été enregistrés par une vérification qui confirmait seulement que le fichier modifié se chargeait. Le 11 octobre, chaque défaut compté ici a été revérifié sur le site en ligne avec la règle d’audit elle-même : tous sont corrigés.
Reçus lus le 2026-10-11 08:43 UTC
Les mêmes preuves sous forme de données : proof.json. Le dépôt est privé : les numéros de pull request sont donc indiqués en texte simple, et chaque trace porte son propre extrait de diff.
Planté, trouvé, proposé, approuvé, publié, fusionné, vérifié. Un tiret signifie que l'étape ne s'applique pas ou n'a pas été enregistrée pour ce reçu ; rien n'est complété par déduction.
| Type de défaut | planté | trouvé | proposé | approuvé | publié | fusionné | vérifié |
|---|---|---|---|---|---|---|---|
cross_canonical/terms exercice planté | 2026-10-08 04:22 | 2026-10-08 04:30 | 2026-10-08 04:30 | 2026-10-08 04:30 | 2026-10-08 08:12 | 2026-10-08 09:10 | 2026-10-08 09:13 |
description_too_long/cookies exercice planté | 2026-10-04 04:13 | 2026-10-04 12:20 | 2026-10-04 12:20 | 2026-10-04 12:30 | — | — | 2026-10-04 18:00 |
heading_skip/cookies exercice planté | 2026-10-08 07:18 | 2026-10-08 07:30 | 2026-10-08 07:30 | 2026-10-08 07:30 | 2026-10-08 07:40 | 2026-10-08 07:50 | 2026-10-08 07:51 |
missing_description/licensing exercice planté | 2026-10-08 07:18 | 2026-10-08 07:30 | 2026-10-08 07:30 | 2026-10-08 07:30 | 2026-10-08 07:51 | 2026-10-08 08:00 | 2026-10-08 08:01 |
missing_h1/privacy exercice planté | 2026-10-08 03:17 | 2026-10-08 03:30 | 2026-10-08 03:30 | 2026-10-08 03:30 | 2026-10-08 03:31 | 2026-10-08 03:40 | 2026-10-08 03:43 |
missing_indexnow_key/00447098f7fba55c133eb7dd520325e7.txt exercice planté | 2026-10-11 03:46 | 2026-10-11 07:10 | 2026-10-11 07:10 | 2026-10-11 07:30 | 2026-10-11 07:30 | 2026-10-11 08:20 | 2026-10-11 08:40 |
missing_llms_txt/llms.txt exercice planté | 2026-10-04 21:30 | 2026-10-05 20:00 | 2026-10-05 20:00 | 2026-10-05 21:40 | 2026-10-07 14:30 | 2026-10-07 14:40 | 2026-10-07 15:00 |
missing_robots/robots.txt exercice planté | 2026-10-08 10:41 | 2026-10-08 10:55 | 2026-10-08 10:55 | 2026-10-08 10:55 | 2026-10-08 10:55 | 2026-10-08 11:10 | 2026-10-08 11:16 |
missing_title/licensing exercice planté | 2026-10-08 04:22 | 2026-10-08 04:30 | 2026-10-08 04:30 | 2026-10-08 04:30 | 2026-10-08 04:30 | 2026-10-08 04:40 | 2026-10-08 05:00 |
multiple_h1/ascent exercice planté | 2026-10-08 07:18 | 2026-10-08 07:30 | 2026-10-08 07:30 | 2026-10-08 07:30 | 2026-10-08 07:30 | 2026-10-08 08:20 | 2026-10-08 08:22 |
no_ai_crawler_policy/robots.txt exercice planté | 2026-10-08 09:16 | 2026-10-08 09:23 | 2026-10-08 09:23 | 2026-10-08 09:23 | 2026-10-08 09:23 | 2026-10-08 09:40 | 2026-10-08 10:00 |
no_canonical/cookies exercice planté | 2026-10-04 21:30 | 2026-10-05 20:00 | 2026-10-05 20:00 | 2026-10-05 20:00 | 2026-10-05 20:00 | 2026-10-05 21:50 | 2026-10-05 22:10 |
no_publisher_schema/licensing exercice planté | 2026-10-06 08:53 | 2026-10-06 11:00 | 2026-10-06 11:00 | 2026-10-06 11:00 | 2026-10-06 11:00 | 2026-10-06 11:10 | 2026-10-07 18:30 |
no_structured_data/privacy exercice planté | 2026-10-07 14:33 | 2026-10-07 16:00 | 2026-10-07 16:00 | 2026-10-07 16:00 | 2026-10-07 18:30 | 2026-10-07 18:40 | 2026-10-07 19:00 |
noindex/privacy exercice planté | 2026-10-08 04:03 | 2026-10-08 04:22 | 2026-10-08 04:22 | 2026-10-08 04:22 | 2026-10-08 08:01 | 2026-10-08 08:10 | 2026-10-08 08:12 |
og_incomplete/ascent exercice planté | 2026-10-04 21:30 | 2026-10-05 03:00 | 2026-10-05 03:00 | 2026-10-05 03:30 | 2026-10-05 03:30 | 2026-10-05 03:40 | 2026-10-05 20:00 |
og_no_site_name/ascent exercice planté | 2026-10-07 18:36 | 2026-10-08 02:52 | 2026-10-08 02:52 | 2026-10-08 02:52 | 2026-10-08 02:52 | 2026-10-08 05:10 | 2026-10-08 05:40 |
publisher_no_description/cookies exercice planté | 2026-10-07 14:34 | 2026-10-07 16:00 | 2026-10-07 16:00 | 2026-10-07 16:00 | 2026-10-08 03:23 | 2026-10-08 03:50 | 2026-10-08 04:00 |
publisher_no_legal_name/licensing trouvé en conditions réelles | — | 2026-10-06 13:00 | 2026-10-06 13:00 | 2026-10-06 13:00 | 2026-10-06 13:00 | 2026-10-06 13:10 | 2026-10-06 13:40 |
sitemap_not_referenced/robots.txt exercice planté | 2026-10-08 11:29 | 2026-10-08 12:06 | 2026-10-08 12:06 | 2026-10-08 12:06 | 2026-10-08 13:10 | 2026-10-08 13:17 | 2026-10-08 13:17 |
title_too_long/blog/accessibility-compliance-performance-marketing-balance trouvé en conditions réelles | — | 2026-10-07 14:30 | 2026-10-07 14:30 | 2026-10-07 14:30 | 2026-10-07 14:30 | 2026-10-07 15:20 | 2026-10-07 15:30 |
title_too_short/terms trouvé en conditions réelles | — | 2026-10-07 22:10 | 2026-10-07 22:10 | 2026-10-07 22:10 | 2026-10-07 22:10 | 2026-10-07 22:20 | 2026-10-07 22:30 |
Ouvrez une ligne pour voir ses identifiants de reçu, la pull request qui l'a portée et un extrait du diff. Un exercice planté montre le défaut que nous avons introduit et la correction écrite par l'agent.
Les extraits de la page /ascent affichent l'ancien nom du produit sous la forme [former name] ; c'est la seule page qui l'énonce.
cross_canonical /termsterms.html- <link rel="canonical" href="https://umbodi.ai/terms"> + <link rel="canonical" href="https://example.com/drill">
terms.html- <link rel="canonical" href="https://example.com/drill"> + <link rel="canonical" href="https://umbodi.ai/terms">
description_too_long /cookiescookies.html- How Umbodi uses cookies and similar technologies, and how consent works across sign-up, site connection, autonomy and billing. + How Umbodi uses cookies and similar technologies, and how consent works across sign-up, site connection, autonomy and billing. How Umbodi uses cookies and si…
heading_skip /cookiescookies.html- <main class="body"><h2 id="s1"><span class="snum">01</span>What this notice covers</h2><p>Umbodi uses cookies and similar technologies (local storage, sessio… + <main class="body"><h4 id="s1"><span class="snum">01</span>What this notice covers</h4><p>Umbodi uses cookies and similar technologies (local storage, sessio…
cookies.html- <main class="body"><h4 id="s1"><span class="snum">01</span>What this notice covers</h4><p>Umbodi uses cookies and similar technologies (local storage, sessio… + <main class="body"><h2 id="s1"><span class="snum">01</span>What this notice covers</h2><p>Umbodi uses cookies and similar technologies (local storage, sessio…
missing_description /licensinglicensing.html- <meta name="description" content="Commercial licensing for the Umbodi API, SDK, MCP server, skill, widgets, cockpit and self-hosted / white-label engine.">licensing.html+ <meta name="description" content="Learn about Umbodi's commercial licensing framework for APIs, SDKs, and developer assets. Understand deployment options and…missing_h1 /privacyprivacy.html- <header class="head"><div class="eyebrow">Legal</div><h1>Privacy Policy</h1><p class="lead">How Umbodi collects, uses, shares and protects personal data acro… + <header class="head"><div class="eyebrow">Legal</div><p class="lead">How Umbodi collects, uses, shares and protects personal data across the website, app and…
privacy.html- <main class="body"><h2 id="s1"><span class="snum">01</span>Who we are & scope</h2><p>I-Novanet Software Ltd, <span class="tbc">[registered address — to b… + <main class="body"> + <h1>Privacy Policy</h1> + <h2 id="s1"><span class="snum">01</span>Who we are & scope</h2><p>I-Novanet Software Ltd, <span class="tbc">[registered address — to be confirmed]</span>…
missing_indexnow_key /00447098f7fba55c133eb7dd520325e7.txt00447098f7fba55c133eb7dd520325e7.txtfile deleted (1 lines)00447098f7fba55c133eb7dd520325e7.txt+ 00447098f7fba55c133eb7dd520325e7 file created (1 lines)
missing_llms_txt /llms.txtllms.txtfile deleted (119 lines)llms.txt+ <!-- ascent:generated:start --> + # umbodi.ai + > Generated by Umbodi from the pages it crawled. Review before publishing. file created (20 lines)
missing_robots /robots.txtrobots.txtfile deleted (66 lines)robots.txt+ # Umbodi — https://umbodi.ai + # The admin surfaces are gated by is_platform_admin() server-side; these rules keep them out of the + # index as well, because an admin screen appearing in search results is a disclosure of shape even file created (77 lines)
missing_title /licensinglicensing.html- <title>Developer & Asset Licensing — Umbodi</title>licensing.html+ <title>Developer & Asset Licensing — umbodi.ai</title>multiple_h1 /ascentascent.html- <header class="head"><div class="eyebrow">Identity</div><h1>[former name] is now Umbodi</h1><p class="lead">The autonomous search agent published as <b>[former name]</b> u… + <header class="head"><div class="eyebrow">Identity</div><h1>[former name] is now Umbodi</h1> + <h1>[former name] is now Umbodi</h1><p class="lead">The autonomous search agent published as <b>[former name]</b> until September 2026 is now published as <b>Umbodi</b>. S…
ascent.html- <h1>[former name] is now Umbodi</h1><p class="lead">The autonomous search agent published as <b>[former name]</b> until September 2026 is now published as <b>Umbodi</b>. S… + <h2>[former name] is now Umbodi</h2><p class="lead">The autonomous search agent published as <b>[former name]</b> until September 2026 is now published as <b>Umbodi</b>. S…
no_ai_crawler_policy /robots.txtrobots.txt- User-agent: GPTBot - User-agent: ClaudeBot - User-agent: PerplexityBot 5 line(s) removed, 0 added
robots.txt+ # umbodi:generated:start + # Added by Umbodi — the rules above are yours and are left untouched. + # Answer engines are allowed, deliberately: being cited is distribution. 0 line(s) removed, 27 added
no_canonical /cookiescookies.html- <link rel="canonical" href="https://umbodi.ai/cookies">cookies.html+ <link rel="canonical" href="https://umbodi.ai/cookies">no_publisher_schema /licensinglicensing.html- "@type": "Organization", - "@id": "https://umbodi.ai/#org", - "name": "I-Novanet Software Ltd", 12 line(s) removed, 0 added
licensing.html+ <!-- ascent:jsonld:start --> + <script type="application/ld+json"> + { 0 line(s) removed, 20 added
no_structured_data /privacyprivacy.html- <script type="application/ld+json"> - { - "@context": "https://schema.org", element removed (46 lines)
privacy.html+ <!-- ascent:jsonld:start --> + <script type="application/ld+json"> + { 0 line(s) removed, 19 added
noindex /privacyprivacy.html+ <meta name="robots" content="noindex">privacy.html- <meta name="robots" content="noindex">og_incomplete /ascentascent.html- <meta property="og:title" content="[former name] is now Umbodi — the same product, renamed">ascent.html+ <meta property="og:title" content="[former name] is now Umbodi — the same product, renamed">og_no_site_name /ascentascent.html- <meta property="og:site_name" content="Umbodi">ascent.html+ <meta property="og:site_name" content="umbodi.ai">publisher_no_description /cookiescookies.html- "description": "A Mauritian software company building tools for search and AI-answer visibility.",cookies.html+ "description": "A Mauritian software company building tools for search and AI-answer visibility.",publisher_no_legal_name /licensinglicensing.html- "dateModified": "2026-10-06T12:00:30.210Z", + "dateModified": "2026-10-06T13:00:26.096Z",
sitemap_not_referenced /robots.txtrobots.txt- Sitemap: https://umbodi.ai/sitemap.xmlrobots.txt+ # umbodi:generated:start + # Added by Umbodi — the rules above are yours and are left untouched. + # Answer engines are allowed, deliberately: being cited is distribution. 0 line(s) removed, 26 added
title_too_long /blog/accessibility-compliance-performance-marketing-balanceblog/accessibility-compliance-performance-marketing-balance.html- <title>Accessibility vs. Growth: Balancing Compliance and Performance</title> - <meta property="og:title" content="Accessibility vs. Growth: Balancing Compliance and Performance"> + <title>Accessibility vs. Growth: Balancing Compliance and</title> + <meta property="og:title" content="Accessibility vs. Growth: Balancing Compliance and">
This page is generated from its database row on every push; the render on 2026-10-07 (commit de122542) replaced the file afterwards. The receipt records the fix live at the verification time.
title_too_short /termsterms.html- <title>Terms of Service — umbodi.ai</title> + <title>Terms of Service — umbodi.ai — umbodi.ai</title>
Aucune décision à l'intérieur de la boucle n'a été prise par une personne. Voici les étapes que des personnes ont menées autour d'elle, énoncées pour que personne n'ait à les chercher dans l'historique.
Un exercice prouve le chemin de réparation, pas un changement de classement. Le classement est mesuré sur Google et rapporté tel que mesuré ; il n'est jamais déduit d'une correction.
Chacun a un parcours et un remède. Ce qui manque à ce site, c'est un moyen de créer le défaut sans casser une page en ligne ni annoncer une page qui n'existe pas. Les raisons ci-dessous sont lues dans le code qui refuse l'exercice.
| Type de défaut | Pourquoi il ne peut pas être prouvé ici (d'après le code) |
|---|---|
thin_content | the thinnest page this site serves is 857 words and the finding fires under 250, so the plant is "delete the body of a live page" for up to 52 hours. Measured 2026-10-06 across all 12 root pages. A drill is a worse snippet, never a broken page. |
images_missing_alt | the only pages with an <img> are methodology (3), walkthroughs (6) and developers (1), and all three are marketing pages pre-rendered into fr/ and es/ — so mirroredRefusal refuses the plant, correctly. There is no unmirrored page on this site with an image. Measured 2026-10-06. |
no_internal_links | every root page carries at least seven internal links and most of them are its own navigation, so the plant is "remove the nav from a live page". Measured 2026-10-06. Same refusal as thin_content and for the same reason. |
missing_sitemap | sitemap.xml is regenerated by .github/workflows/blog.yml (build-sitemap) on every push to main, so a deleted sitemap comes back within minutes without the agent — a drill would credit CI. Measured 2026-10-07: build-sitemap restores a deleted file exactly. Owner decision the same day. |
sitemap_stale | same generator, same answer: build-sitemap rewrites every <lastmod> on each push, so a planted stale date is reverted by CI before the agent can act. Measured 2026-10-07; owner decision. |
robots_blocks_crawlers | the plant is "Disallow: / on the live robots.txt" for up to 52 hours — telling every crawler to stop reading umbodi.ai. On a site whose entire product is search and AI-answer visibility that is not a worse snippet, it is the worst available outcome, and it would also suppress the rank measurements every other drill depends on. Measured 2026-10-07: our robots.txt currently disallows 2 admin prefixes and allows everything else. |
sitemap_url_not_indexable | plantable in principle and not built: it needs a new sitemap edit that ADDS a url serving nothing (the existing sitemap_lastmod target only ages an entry), and the drill then advertises a dead page to crawlers for up to 52 hours. Measured 2026-10-07: the remedy and the plant are inverses — the agent dropping the url restores exactly what scripts/build-sitemap.mjs produces — so this is the one of the three that a later session could reasonably add. It is listed rather than attempted because a drill that lies to a crawler about a page should be a deliberate decision, not a side effect of finishing a list. |
robots_named_agent_exempt | plantable in principle and not built: the plant is a named group with `Allow: /` on the live robots.txt — the exact defect #912 removed, exempting a crawler from /admin and /api/ for up to 52 hours — and it needs a new robots edit plus a DRILL_EXCUSES entry, because test/robots-own-named-groups.test.mjs fails every pull request while the plant is open. Measured 2026-10-09: our robots.txt names ten crawlers and none escapes. Listed rather than attempted for the same reason as sitemap_url_not_indexable: a drill that re-opens what a fix just closed should be a decision, not a side effect of adding the code. |
Un type de défaut compte lorsqu'une proposition décidée par l'agent seul porte un reçu vérifié : l'agent a trouvé le défaut, décidé la correction, l'a publiée, fusionnée, puis a vérifié le site en ligne. Le reçu est une ligne que le produit écrit, pas une affirmation rédigée pour cette page.
Certains oui, d'autres ont été plantés. Pour exercer la boucle, nous avons délibérément introduit des défauts sur nos propres pages et laissé l'agent les trouver. Chaque ligne indique de quoi il s'agit : un exercice planté ou un défaut trouvé en conditions réelles.
Non. Un exercice prouve que le chemin de réparation fonctionne de bout en bout. Il ne montre pas de changement de classement, et Umbodi n'en déduit jamais un d'une correction : le classement est mesuré séparément, sur Google, et rapporté tel que mesuré.
Pas à l'intérieur de la boucle. Autour d'elle, des personnes ont planté les exercices, accordé des autorisations par page, retiré d'anciennes approbations, déployé le worker, exécuté une migration de base de données et déclenché certaines exécutions en avance. Ces étapes ont préparé le terrain et le calendrier ; chaque décision sur cette page était celle de l'agent.
Il audite d'abord et vous montre ce qu'il a trouvé. Agir seul est un réglage que vous activez, page par page.