Audit interno: sei incoerenze corrette nei nostri segnali pubblici
Nel luglio 2026, Alchimiste IA ha confrontato le proprie dichiarazioni pubbliche con le risorse effettivamente servite ai motori di ricerca, ai crawler e agli strumenti agentici: sitemap, file di scoperta automatica, profilo di identità e pipeline di deployment. Non tutte queste risorse sono standard adottati universalmente; la loro coerenza resta comunque verificabile e contribuisce a una architettura pubblica onesta, documentata e priva di capacità fittizie.
Risultati dell’audit interno
- 6 contraddizioni rilevate
- 6 contraddizioni corrette
- 7 URL nella sitemap, generate dal registro delle route (contro 5, solo FR, in precedenza)
- 0 capacità agentica fittizia dichiarata negli attuali file pubblici
- 1 pipeline di generazione coerente, alimentata da due contratti sorgente: il registro delle route per gli URL e il contratto YAML per l’identità
Le date di ultima modifica delle risorse generate controllate in questo audit derivano dalla loro cronologia Git; non sono inserite manualmente.
Metodo di verifica
La verifica ha confrontato quattro livelli del sistema:
- i contratti sorgente presenti nel repository;
- i file prodotti dal generatore;
- gli artefatti selezionati per il deployment;
- le risposte HTTP effettivamente servite in produzione.
Per ogni risorsa, i controlli hanno riguardato il codice di stato HTTP, il tipo MIME, il contenuto, la data di ultima modifica e la coerenza con le capacità effettivamente disponibili. Il controllo in produzione è stato eseguito dall’ambiente locale contro gli URL pubblici con check-discovery.ps1 -Live, completato da un’ispezione dell’artefatto distribuito sul server.
Standard e convenzioni sperimentali
Non tutte le risorse citate in questo audit hanno lo stesso stato. Questa pagina le distingue invece di presentarle come equivalenti.
| Risorsa | Stato | Ruolo |
|---|---|---|
robots.txt | Protocollo standardizzato | Politica di crawling |
sitemap.xml | Standard ampiamente utilizzato | Scoperta degli URL |
JSON-LD Schema.org | Vocabolario ampiamente adottato | Descrizione delle entità |
llms.txt | Convenzione emergente | Sommario potenziale per alcuni strumenti |
ai.txt | Convenzione non universale | Dichiarazione informativa, con rimando a llms.txt e llms-full.txt |
ait.txt | Convenzione non universale | Contenuto attualmente identico a ai.txt; distinzione non ancora stabilita |
agents.json | Formato dipendente da una specifica | Possibile descrizione delle capacità |
Carte A2A | Utile solo con un servizio A2A reale | Scoperta e interazione agentica |
Il duplicato ai.txt / ait.txt è segnalato qui intenzionalmente invece di essere nascosto: la sua chiarificazione (fusione o ruoli distinti) resta da decidere, secondo lo stesso principio che ha portato a rimuovere manifest.webmanifest, duplicato di manifest.json.
Sei constatazioni e la loro tracciabilità tecnica
-
La sitemap pubblica copriva solo il francese
- Osservazione
- La sitemap conteneva solo cinque URL francesi (/, /consultant-ia/, /mentions-legales, /confidentialite, /accessibilite), senza le pagine inglese e italiana pur pubblicate e rispondenti in HTTP 200.
- Correzione
- Gli URL sono ora generati dal registro delle route (contracts/url-policy/routes.csv), fonte comune di verità per il sito e la sitemap.
- Stato dopo la correzione
- Sette URL canonici (fr, en, it, pagine legali), rigenerati automaticamente a ogni modifica del registro delle route.
- Commit
350f817
-
File ereditati annunciavano capacità assenti
- Osservazione
- In produzione, agents.json, ai.txt e llms-sitemap.xml rispondevano 200 con contenuti ereditati da una versione precedente del sito, descrivendo interfacce (API, A2A) che non esistevano realmente (osservazione documentata il 25 luglio 2026).
- Correzione
- Sostituiti da dichiarazioni oneste: un catalogo di agenti vuoto, una scheda A2A con zero competenze e un contratto OpenAPI senza route.
- Stato dopo la correzione
- agents.json dichiara esplicitamente un elenco vuoto di agenti; openapi.json dichiara "paths": {}; entrambi lo dicono invece di lasciarlo intendere.
- Commit
350f817, eabf1c0
-
llms.txt si contraddiceva
- Osservazione
- Il file affermava “Nessuna API REST o A2A pubblica è attualmente esposta su alchimiste-ia.com”, subito dopo la pubblicazione di una scheda A2A a titolo di trasparenza: la scheda esisteva, seppure vuota, quindi l affermazione era diventata falsa.
- Correzione
- Il testo è stato riscritto per descrivere ciò che è realmente pubblicato invece di negarlo.
- Stato dopo la correzione
- “Una scheda A2A (...) e un contratto OpenAPI (...) sono pubblicati per trasparenza: dichiarano esplicitamente zero competenze e zero route, confermando che nessuna interfaccia attiva è esposta.”
- Commit
ff8c404
-
Il profilo di identità non era più sincronizzato
- Osservazione
- Il contratto YAML di identità era stato arricchito (con l aggiunta di “Architettura AI-First”) senza rigenerare i file pubblici derivati (humans.txt, scheda Schema.org della persona): uno scarto di tre giorni tra la fonte e la proiezione pubblica.
- Correzione
- Rigenerati dal contratto YAML, unica fonte di verità, tramite lo strumento di sincronizzazione esistente.
- Stato dopo la correzione
- humans.txt e la scheda Schema.org ora contengono esattamente le stesse competenze del contratto YAML, senza doppia compilazione.
- Commit
24f5501
-
La pipeline di deployment ignorava i nuovi file pubblici
- Osservazione
- L elenco dei percorsi richiesti per il deployment non includeva i nuovi file pubblici (llms-full.txt, llms-sitemap.xml, agents.json, agent-card.json, openapi.json, ai.txt, ait.txt).
- Correzione
- L elenco dei percorsi richiesti è stato aggiornato per includere esplicitamente ciascuno di questi file.
- Stato dopo la correzione
- Ogni nuovo file pubblico creato figura ora nella checklist di deployment.
- Commit
9465fd6
-
Una data visualizzata non corrispondeva a un commit reale.
- Osservazione
- Il piè di pagina di llms.txt mostrava “20 luglio 2026”, mentre l ultimo commit che aveva modificato realmente il file era del 21 luglio: uno scarto di un giorno tra la data mostrata e la realtà.
- Correzione
- Il generatore ricava ora ogni data dalla cronologia Git reale del file interessato e non mostra alcuna data se non esiste ancora un commit.
- Stato dopo la correzione
- La data mostrata corrisponde esattamente alla data dell ultimo commit che ha modificato il file, verificabile da chiunque abbia accesso alla cronologia.
- Commit
85bedee, 364e0c9
Cosa cambiava per un lettore esterno
| Problema | Conseguenza per un lettore esterno |
|---|---|
| Sitemap incomplet | Pagine inglese e italiana assenti dal canale di scoperta fornito dalla sitemap |
| Déclarations héritées devenues inexactes | Integrazione impossibile sulla base di capacità inesistenti |
| llms.txt contradictoire | Un agente che segue il testo poteva ignorare una risorsa comunque pubblicata |
| Profil désynchronisé | Ambiguità sulle competenze effettivamente dichiarate dall entità |
| Déploiement incomplet | Rischio che una correzione resti corretta nel codice ma assente in produzione |
| Dates improvisées | Impossibile verificare la reale freschezza di una dichiarazione |
Limiti di questa verifica
- La presenza di un file pubblico non garantisce il suo utilizzo da parte di un motore o agente.
- La conformità di un manifest non garantisce la citazione del sito.
- Queste osservazioni descrivono lo stato del dominio alla data indicata; devono essere rieseguite dopo ogni deployment.
- Questa pagina rimanda agli hash dei commit consultabili nella cronologia del repository; non offre ancora un registro pubblico delle prove con link diretti, il che richiede una decisione separata sull accessibilità del repository.
- Autorizzare esplicitamente un crawler (OAI-SearchBot, GPTBot...) in robots.txt ne permette il crawling quando il sistema sceglie di consultare la pagina; non garantisce indicizzazione, visualizzazione né citazione.
Questo audit non invoca alcun punteggio di terze parti. Le constatazioni si basano sui contratti sorgente, sulla cronologia Git, sugli artefatti generati e su test HTTP riproducibili contro la produzione. I limiti di accesso al repository sono dichiarati sopra.