Un fork non modifié d'AI-Scientist-v2 (SakanaAI) tourne à travers le Chaser Scientific Gateway : façade OpenAI-compatible qui route chaque étape scientifique vers le modèle Claude le moins cher qui suffit, mesure le coût réel contre une baseline GPT-4o, et scelle chaque appel au journal Merkle (RFC 6962, métadonnées seulement). Chaque claim porte trois signatures indépendantes : intégrité (Merkle + Ed25519), exécution (replay attesté), validité (verdict d'un Skeptic adversarial).
OPENAI_BASE_URL seul.temperature/thinking
(appris à chaud), plancher max_tokens 8192, PYTHONUTF8=1,
backoff Semantic Scholar troué.| Session | Étapes routées | Coût réel | Baseline GPT-4o | Économie |
|---|---|---|---|---|
| S1 (18/07) | idéation + ranking + mini-exp (Sonnet dominant) | 0,61 $ | 0,66 $ | −7,2 % |
| S3 (19/07) | writing (2 appels) + review (1 appel) → Haiku | 0,0612 $ | 0,1288 $ | −52,5 % |
Les deux chiffres mesurent des populations différentes et ne s'additionnent
pas. L'économie de routage se prouve sur les étapes writing/review (volumineuses,
tolérantes au modèle léger) ; l'idéation reste sur le modèle profond par choix de
qualité. Preuves : claims scellés, racines Merkle a9f4ec85… et
0319ac01…, preuve d'inclusion exportée et vérifiée par un vérifieur
indépendant hors-ligne (inclusion + cohérence + signature Ed25519).
Le manuscrit pilote S3 (rédigé par le pipeline depuis les artefacts S1, divulgation IA incluse) reçoit du reviewer réel du fork (profil « négatif » par défaut) : Reject, note globale 2, 5 forces / 10 faiblesses — cohérent avec une expérience à échelle réduite, une seule graine. Nous publions ce rejet : c'est la preuve que la chaîne d'évaluation fonctionne.
La mini-expérience générée en S1 avait deux défauts, détectés en S2 : un dépliage faux (la trajectoire « dépliée » recomposait la trajectoire repliée → MSD borné → α ≈ 0 par construction : les α de S1 étaient un artefact) et une fenêtre de fit mélangeant transitoire et saturation. Protocole corrigé : dépliage par cumul des vrais incréments, fenêtre log-uniforme [T0,25, T0,75], grille ε (9 valeurs), 8 graines × 512 trajectoires × 20 000 pas, IC bootstrap.
| ε | α balistique | α diffusif (IC 95 %) | corr. croisée |
|---|---|---|---|
| 0 | 2,027 | 1,575 [1,462 ; 1,671] | −0,000 |
| 0,01 | 2,027 | 1,942 [1,931 ; 1,953] | −0,242 |
| 0,1 | 2,050 | 2,005 [2,001 ; 2,010] | −0,857 |
| 0,2 | 2,184 | 2,002 [2,000 ; 2,004] | −0,868 |
Lecture (périmètre imposé par la passe Skeptic, §7) : l'artefact S1 est démontré au niveau de l'analyse, indépendamment du schéma d'intégration ; l'anti-corrélation est monotone en ε — pas de maximum intermédiaire, contrairement au verdict S1 ; l'infirmation se fait observable par observable, pas en bloc.
288 cellules (K ∈ {0,5 ; 0,9716 ; 1,5 ; 3,0} × 9 ε × 8 graines), attestées, replay aléatoire IDENTIQUE. Réplication prouvée : la tranche K=0,5 reproduit S2 bit-à-bit (72/72 cellules, 7 observables).
| K | cc à ε=0,1 [IC 95 %] | α balistique | Lecture |
|---|---|---|---|
| 0,5 | −0,857 [−0,861 ; −0,854] | ≈ 2,03 | anti-corrélation forte, monotone |
| 0,9716 | −0,799 [−0,803 ; −0,795] | ≈ 2,1 | idem, légèrement affaiblie |
| 1,5 | −0,550 [−0,564 ; −0,535] | ≈ 2,2 | nettement affaiblie |
| 3,0 | −0,066 [−0,079 ; −0,052] | ≈ 2,5 | quasi disparue (chaos) |
Résultat physique net : l'anti-corrélation induite par le couplage est un phénomène quasi-intégrable — le chaos la détruit ; aucun maximum à ε intermédiaire n'apparaît à aucun K. Deux honnêtetés d'estimation déclarées dans le claim : à ε=0 la corrélation vraie est 0 par construction mais l'estimateur affiche jusqu'à +0,010 à K=3 (plancher de bruit sous incréments autocorrélés) ; les IC bootstrap par graines sous-estiment l'incertitude quand l'autocorrélation est longue.
Chaque run porte une attestation scellée : hash SHA-256 du code, empreinte d'environnement, hash canonique des résultats et hash canonique de chaque cellule. Un auditeur rejoue n'importe quelle cellule en ~1 min avec un vérifieur autoportant (stdlib pure) — l'équivalent replay d'un audit path Merkle. L'agent ne peut plus « dire » qu'il a exécuté : la preuve, c'est le replay.
| Replay | Environnement | Verdict |
|---|---|---|
| Cellule imposée (0,01 ; 3) | identique à l'exécution (Linux) | IDENTIQUE (bit-à-bit) |
| Cellule tirée au hasard | identique | IDENTIQUE |
| Même cellule | Windows, python 3.14 / numpy 2.4 | DIVERGENT (écart 10 %) |
La divergence inter-environnements est attendue et honnêtement rapportée : la dynamique est chaotique, tout écart flottant s'amplifie exponentiellement. Le replay prouve la répétabilité (même environnement, bit-à-bit) ; la reproduction inter-environnements se juge sur les agrégats multi-graines. Le vérifieur imprime cette distinction lui-même plutôt que de rendre un faux « conforme » — son verdict est gradué : IDENTIQUE / REPRODUIT / DIVERGENT.
Les dernières réserves ont chacune reçu leur mesure (run S2c, 288 cellules + seuil + long-T, attesté, replay aléatoire IDENTIQUE) :
Parcours Skeptic de S2c : REJETE → REJETE → REJETE → VALIDE_AVEC_RESERVES —
quatre passes qui ont successivement forcé une correction mathématique, une preuve
numérique, un test de sensibilité du seuil λ (robuste à 0,005/0,01/0,02) et la
fourniture du matériau complet. Le manuscrit final (S3b), généré depuis ces runs
attestés, réplique l'économie de routage (−52,8 % writing+review) et reçoit du
reviewer du fork Reject, note 3 (pilote : 2) — publié tel quel, racine Merkle
78f84c21….
Chaque claim passe un débat adversarial borné (attaque → défense → verdict scellé, 0,03–0,12 $/run). Le Skeptic reçoit l'attestation de replay comme vérité terrain et attaque la sémantique : le code mesure-t-il ce que le protocole prétend ?
| Run soumis | Verdict | Ce qui a été attrapé |
|---|---|---|
| S1 (bug de dépliage) | REJETE (Haiku, 0,03 $) | α physiquement impossibles — le symptôme exact de l'artefact ; écart sémantique protocole/code ; verdict déclenché sur du bruit |
| S2, claim v1 | REJETE (Sonnet) | Nos propres surclaims : « même système que S1 » (faux) ; confusion entre observables |
| S2, claim v2 reformulé | VALIDE_AVEC_RESERVES | Attaque symplectique réfutée par la défense ; réserves honnêtes restantes |
| S2b (balayage K) | VALIDE_AVEC_RESERVES | Réserve fine : Kc=0,9716 vaut pour la carte de Chirikov canonique, pas nécessairement notre variante |
La boucle attaque → correction du claim → revalidation a tourné pour de
vrai, contre nous-mêmes : le claim final est plus étroit et plus vrai que l'original.
C'est le but. Enseignements de calibration documentés : le modèle léger attrape les
bugs grossiers mais sur-concède en défense ; le JSON tronqué à max_tokens
faisait disparaître des attaques en silence (réparé).
Avant de lancer l'expérience, l'hypothèse a été préenregistrée et scellée (racine ancrée dans Rekor avant toute exécution) : dans deux billards de Sinai couplés, l'anti-corrélation induite par le couplage — forte en régime quasi-intégrable — devait être détruite par le chaos fort des billards (prédiction chiffrée : |cc| < 0,15 pour tout ε). L'ordre temporel est prouvable, donc impossible d'ajuster l'hypothèse après coup.
| ε | cc (corr. croisée) | IC 95 % | vs seuil 0,15 |
|---|---|---|---|
| 0 | +0,009 | [−0,082 ; +0,100] | inclut 0 (sanity ✓) |
| 0,01 | −0,195 | [−0,273 ; −0,115] | dépasse |
| 0,1 | −0,513 | [−0,574 ; −0,452] | dépasse |
| 0,2 | −0,567 | [−0,620 ; −0,510] | dépasse |
H1 est réfutée : l'anti-corrélation n'est pas détruite, elle est forte et croît avec le couplage. Notre prédiction (extrapolée du couplage-position des cartes standard) était fausse pour le couplage-vitesse des billards. Nous publions cette réfutation de notre propre hypothèse — c'est ce que le préenregistrement rend crédible. Réserve honnête, soulevée par le Skeptic et retenue : le couplage antisymétrique choisi favorise mécaniquement l'anti-corrélation, donc la réfutation vaut pour cette réalisation du couplage.
Jugé par deux familles de modèles indépendantes (lève la menace « une seule famille juge tout ») : Claude (Anthropic) et qwen (Alibaba, exécuté localement) rendent tous deux, séparément, le verdict VALIDE_AVEC_RESERVES — consensus ACCORD scellé. Sur l'expérience S1 buggée, les deux familles avaient de même conclu REJETE à l'unanimité : le panel cross-famille attrape les vrais défauts et valide les vrais résultats, quel que soit le juge.
Les deux juges avaient soulevé la même réserve : le couplage antisymétrique force peut-être mécaniquement l'anti-corrélation. Nous l'avons traitée dans les règles — un second protocole préenregistré et ancré publiquement avant exécution, avec un test discriminant décisif : des kicks angulaires indépendants de même magnitude doivent donner |cc| < 0,15, sinon la mesure serait un artefact du kick, pas du couplage.
| Mode de couplage | cc (ε=0,2) | Lecture |
|---|---|---|
| indépendant (contrôle) | +0,002 [−0,010 ; +0,014] | |cc| < 0,05 — test critique réussi |
| antisymétrique (= S5) | −0,567 | anti-corrélation forte |
| symétrique | +0,011 | s'annule (~0) |
| unidirectionnel | −0,637 | fort même à sens unique |
D1 est résolu : des kicks indépendants ne corrèlent pas (|cc| ≤ 0,05 pour tout ε), donc l'anti-corrélation de S5 vient bien du canal de couplage (le signal partagé), pas de l'ajout de bruit — la réfutation de H1 tient sur base solide. Et une honnêteté de plus : nous avions sous-prédit que le couplage symétrique donnerait une corrélation positive ; il donne zéro. Notre compréhension mécanistique était incomplète, et nous le publions aussi.
Le panel cross-famille n'est pas un tampon : sur ce contrôle, Claude a rendu VALIDE_AVEC_RESERVES mais qwen a rendu REJETE — un désaccord d'un cran. Par principe de prudence, le panel retient le verdict le plus sévère (consensus « accord prudent » scellé). Nous ne cachons pas que la critique de qwen était en partie erronée (il reprochait l'absence de mesure du symétrique, qui figure pourtant au tableau) — mais un juge qui se trompe dans le sens de la sévérité coûte moins cher qu'un juge complaisant, et le résultat objectif qui fonde D1 (le contrôle indépendant à |cc| < 0,05) ne dépend d'aucun juge.
S5/S5b mesuraient un exposant de transport α ≈ 4 — un artefact : le réseau carré à un disque a un horizon infini (des couloirs droits laissent des vols libres non bornés). Pour obtenir un α physique, il faut une géométrie où aucune droite ne traverse sans toucher un disque. Nous avons construit le billard de Sinai sur un réseau triangulaire (R = 0,35 > seuil 1/(2√3) ≈ 0,289), vérifié que l'horizon est fini (libre parcours moyen 0,69, borné), et préenregistré la prédiction de la théorie établie (Bunimovich-Sinai) : diffusion normale, α = 1.
Résultat, 8 graines × 512 particules × 20 000 collisions : α médian = 0,95 (7 graines sur 8 dans [0,82 ; 1,10]) — diffusion normale confirmée sur le fond, et surtout pas 4 : l'exposant de S5 était bien un artefact d'horizon infini, le pipeline mesure un exposant physique correct quand la géométrie l'est. Honnêteté du préenregistrement : mon critère strict (IC 95 % contenu dans [0,85 ; 1,15]) n'est pas atteint — une graine numériquement aberrante (α = 0,48) tire la borne basse à 0,77. Je le publie ainsi : le préenregistrement a attrapé une imperfection résiduelle de mon simulateur que j'aurais masquée avec un test lâche « α ≈ 1 ✓ ». Panel cross-famille : Claude a rendu VALIDE_AVEC_RESERVES, qwen REJETE (il insistait sur la non-confirmation stricte et l'outlier) — désaccord d'un cran, le panel retient le plus sévère (REJETE) par prudence. Corriger l'outlier serait une suite exploratoire — l'ajuster maintenant violerait le préenregistrement. Le résultat physique (α ≈ 0,95, diffusion normale) ne dépend, lui, d'aucun juge.
La validation d'appareil (sur des graines jamais réutilisées) a d'abord attrapé une erreur de fond — la nôtre : le seuil d'horizon fini annoncé en 9 ter (0,289) était faux ; le vrai seuil du réseau triangulaire est R > √3/4 ≈ 0,433 (couloirs entre rangées). L'outlier de S5c n'était pas numérique : c'étaient de vrais couloirs résiduels. Correction préenregistrée : R = 0,45, appareil v2 auto-surveillé (compteurs d'anomalies : zéro sur tout le run), graines confirmatoires fraîches.
Dernier étage de la campagne : transformer le mécanisme découvert en S5d (« l'anti-corrélation vit dans les vols libres longs ») en loi testée. Nous avons prédit à l'avance — préenregistré et ancré publiquement — qu'en balayant le rayon R des disques (ce qui fait varier le libre parcours moyen ℓ d'un facteur 2,2), la magnitude de l'anti-corrélation suivrait ℓ : ordre strict sur 5 points, intervalles extrêmes disjoints, et réplication du point S5d sur des graines entièrement fraîches.
| R | ℓ (libre parcours) | cc | α |
|---|---|---|---|
| 0,44 | 0,293 | −0,0699 | 1,003 |
| 0,45 | 0,256 | −0,0682 (S5d : −0,0676 — réplication à 0,0006) | 0,997 |
| 0,46 | 0,219 | −0,0654 | 0,995 |
| 0,47 | 0,184 | −0,0628 | 0,983 |
| 0,485 | 0,132 | −0,0582 | 0,996 |
H5 soutenue 4/4 : ordre strictement monotone de |cc| ✓, de ℓ ✓, IC extrêmes disjoints ✓, réplication interne à 0,0006 près ✓ — zéro anomalie d'appareil sur tout le run, α ≈ 1 partout. Loi exploratoire (déclarée comme telle) : |cc| ∝ ℓ^0,23 sur la plage accessible — l'extrapolation vers l'horizon infini (S5b : −0,57) n'est pas revendiquée. Jugé par les deux familles : ACCORD, VALIDE_AVEC_RESERVES (réserves de portée justes : pas de contrôle ε=0 par R, α mesuré sur un seul des deux billards — déclarées). La trajectoire complète — effet découvert par réfutation (S5d), confondu contrôlé (S5b), loi prédite puis confirmée avec réplication (S6) — est le cycle scientifique que ce système était censé rendre possible. Il l'a fait.
Les trois signatures débloquent un cran de plus : une boucle d'amélioration récursive bornée où le système propose des changements à ses propres artefacts (mots-clés de routage, seuils) et où rien n'est adopté sans preuve de gain. Chaque proposition doit franchir toute la pile : liste blanche stricte (jamais la sécurité), tests non-régressifs, puis un A/B mesuré dont la borne basse anytime-valid (empirical-Bernstein) doit être strictement positive — un candidat qui n'améliore pas est rejeté, propriété testée négativement.
Démonstration réelle, sur le code live : la boucle a détecté que le Gateway
classait mal un prompt de review (« provide the review in JSON format… » → routé
« autre »). Elle a proposé un correctif, l'a validé (précision holdout
71 % → 100 %, gain prouvé, décision scellée Merkle 4e219601…),
et seul ce changement validé a été appliqué. Résultat : le Gateway passe de 10/11 à
11/11 sur le jeu de test, sans aucune régression (auto-test 10/10
intact). Le système a amélioré son propre routage — et peut le prouver.
Garde-fous non négociables : la boucle ne peut jamais toucher le Bouclier, la licence, la porte d'accès ni aucun secret (double verrou : registre en liste blanche + liste noire de mots-clés sensibles) ; chaque adoption conserve l'incumbent précédent (réversible) et scelle sa décision.
Ne nous croyez pas : auditez-nous. Le pack contient les vérificateurs autoportants (Python stdlib), trois preuves d'inclusion Merkle signées Ed25519, un run complet rejouable et le préenregistrement scellé de la prochaine expérience (hypothèse figée avant exécution) :
2204068493) : nous ne pouvons pas
réécrire notre journal sans que cet horodatage public nous contredise.Trois commandes, cinq minutes, aucune confiance requise — le README du pack dit aussi ce que l'audit ne prouve pas.