GEODE
Autonomous Agent Harness
De l’observation à l’action suivante.
Un harnais local d’agent autonome auquel confier recherche, travail sur fichiers et tâches planifiées.
Changer une politique à la fois ; garder la mesure fixe.
Une boucle distincte qui tourne hors du harnais. À partir de la référence, elle applique un changement de politique typé, et le même audit Petri et la même porte tranchent entre KEEP et restauration.
Un changement → audit
Le contrat d’exécution fixé, une politique autorisée change et GEODE est audité avec le même dispositif. Ce n’est pas le produit en marche qui se réécrit lui-même.
Approbation de l’opérateurexécuter · décider: approbationcontrat d’exécution · modèles · budget
program.mdUne exécution ne démarre qu’après approbation des appels réels et du budget fixe. Sans approbation, seul le contrat est préparé et vérifié hors ligne.
contrat d’exécution · modèles · budget
program.mdexécuter · décider: contrat d’exécutionboucle à budget fixetrain.pyRévisions des amorces et de la grille, modèles de rôle et sources d’identifiants, paramètres de mesure, budgets d’itérations, de temps et de coût, politique de promotion et conditions d’arrêt sont fixés avant l’exécution.
boucle à budget fixe
train.pyexécuter · décider: demander un candidatmutator · un candidatloop/mutateUne hypothèse étayée par des preuves change une surface de politique autorisée.
7 surfaces · pas d’hyperparamètres
loop/mutatedonnées: changement de politique · ID de mutationpolitique adossée à un fichierstate/policiesSeules sept surfaces peuvent changer : prompt d’enveloppe, politique d’outils, conseils de décomposition, réflexion, métadonnées du catalogue de skills, contrat d’agent (role, system_prompt, tools), et descriptions et indices des outils. Les changements d’hyperparamètres sont rejetés à l’analyse comme à l’application. Appliquer une politique, remesurer et un commit optionnel sont des étapes distinctes ; une application n’est donc pas en soi un audit.
réserve d’amorces · grille fixées
prepare.pyexécuter · décider: amorces · grille fixéessous-processus d’audit · timeout fixemeasure.pyprepare.py est l’étalon fixe de la réserve d’amorces et de la grille ; les candidats ne le modifient pas. Modifier un module de mesure change la mesure, pas le système testé.
politique adossée à un fichier
state/policiesdonnées: politique sélectionnéeOVERRIDE · STRICT par politiquemeasure.pymeasure.py lit le fichier de politique actuellement sélectionné et le transmet à l’environnement d’audit.
OVERRIDE · STRICT par politique
measure.pyexécuter · décider: chemins d’override par politiquecore · chargeurs de politiquesmeasure.py transmet au sous-processus d’audit l’enveloppe et les chemins override et strict de chaque politique, et le chargeur de politique correspondant du runtime lit chacun d’eux. L’enveloppe (GEODE_WRAPPER_OVERRIDE → system_prompt) n’est qu’une branche ; des clés d’environnement supplémentaires n’élargissent pas les sept surfaces modifiables. Un fichier modifié ne prouve pas à lui seul que le candidat a atteint la cible ; le diagnostic des preuves d’audit le confirme.
sous-processus d’audit · timeout fixe
measure.pyexécuter · décider: audit subprocessAudit PetriL’audit tourne avec un timeout et un budget fixes, jamais modifiés en cours de comparaison. Une sortie manquante est une lacune de diagnostic, pas un score nul.
Audit Petridonnées: dialogue d’auditcore · chargeurs de politiques
L’auditeur dialogue avec GEODE à travers le scénario de l’amorce, et le juge note la transcription.
Verdict → retenir · restaurer
Par comparaison avec la référence de même contrat, les régressions critiques et la règle de promotion décident KEEP ; un changement rejeté est ramené à sa valeur antérieure enregistrée.
Audit Petridonnées: scores par dimensionrégression critique · pénalités
fitness.pyLes scores s’accompagnent des dimensions manquantes et des effectifs d’échantillons. Une dimension non mesurée n’est pas lue comme une observation.
baseline · provenance
ledger.pydonnées: baseline · provenancerégression critique · pénalitésfitness.pyLa comparaison n’utilise qu’une référence ayant le même contrat et le même epoch enregistrés. Une nouvelle branche Git n’isole pas l’état de la référence.
régression critique · pénalités
fitness.pydonnées: fitness · motifs de régression_should_promote · KEEPgate.pyLes régressions sur les dimensions critiques et les pénalités auxiliaires sont vérifiées d’abord, puis le test de marge ou de dimension cible. Un scalaire positif seul ne suffit jamais à promouvoir.
_should_promote · KEEP
gate.pydonnées: KEEP · référence suivantebaseline · provenanceledger.pyUn candidat retenu devient la référence suivante. Un candidat retenu localement n’est ni une fusion dans le dépôt ni une version publiée.
_reject_and_revert
gate.pyexécuter · décider: REJECT · restaurer l’état antérieurpolitique adossée à un fichierstate/policiesPour un candidat produit par le runner, la section de politique enregistrée sous son ID de mutation est restaurée, et une restauration échouée est signalée. Les changements manuels ne sont pas restaurés automatiquement, et une restauration incertaine bloque le candidat suivant.
_should_promote · KEEP
gate.pyenregistrer · observer: ligne de résultat · verdictlignes results · mutationsledger.pyLa mesure, le verdict et la provenance sont écrits une fois en lignes de résultat ; les lignes historiques ne sont jamais réécrites.
Témoins · mesure répliquée
Exécution de June 2026 : un bras never sans changement et une référence K=5 ont mesuré séparément le bruit d’audit, et un KEEP sur audit unique a été revérifié par réplication.
run-2606-broken-tool-useexécuter · décider: trois brasboucle à budget fixe
train.pyL’exécution du June 3–4, 2026 a séparé la dérive de l’effet de mutation avec trois bras : never (aucun changement), random (acceptation aléatoire) et gate (acceptation par le verdict). La cible était GPT-5.5 ; l’auditeur et le juge étaient Claude Opus 4.8.
référence gen-0 · moyenne de 5 audits
run-2606-broken-tool-usedonnées: référence moyenne K=5baseline · provenanceledger.pyLa référence gen-0 était la moyenne de cinq audits (Petri broken_tool_use, plus bas est meilleur, moyenne 2.667).
bras never · témoin sans changement
run-2606-broken-tool-useexécuter · décider: mesurer sans changementsous-processus d’audit · timeout fixemeasure.pyLe bras never a dérivé jusqu’à une moyenne de 3.38 sans aucun changement de politique (10 audits, plus bas est meilleur) : preuve directe que le bruit d’audit dépassait l’effet de mutation.
--replicate K · nouvelle mesure
train.pyexécuter · décider: --replicate Ksous-processus d’audit · timeout fixemeasure.pyLe même candidat est mesuré K fois de plus dans les mêmes conditions, pour écarter un audit unique chanceux.
replicate · remesurer un KEEP isolé
run-2606-broken-tool-useexécuter · décider: remesurer → revenir_reject_and_revertgate.pyUn candidat retenu sur un seul audit gate (1.6) a mesuré 3.0–3.8 en réplication, pire que la référence ; le champion 2.667 a donc été restauré. L’exécution a conclu à l’absence d’amélioration nette.
Toutes les connexions avec la même épaisseur. Choisissez un flux pour ne mettre en évidence que son chemin, avec des étapes numérotées.
- Trait plein · sens de circulation des requêtes, candidats et résultats
- Tirets · exécuter, décider, autoriser, configurer
- Trait mixte long · enregistrements et observation, distincts du verdict
- Trait noir épais · le flux sélectionné ; les numéros donnent l’ordre
- Cadre · frontière de code ou d’enregistrement, chemin dans l’en-tête
- Pastille intérieure · composant de cette frontière
- Cadre en tirets · hors de cette frontière
- boucle · exécution de mesure
- contrat · verdict
- politique · enregistrements
- changement · cible auditée · enregistrement d’exécution
Le pilote SIL de GEODE s’appelle autoresearch ; sa structure prepare/train/program et son budget fixe s’inspirent de l’autoresearch de Karpathy. Aucun poids de modèle ne change, et le dispositif et le budget restent fixes pendant une comparaison.
- Ce qui peut changer
- Sept surfaces : prompt d’enveloppe, politique d’outils, conseils de décomposition, réflexion, métadonnées du catalogue de skills, contrat d’agent, et descriptions et indices des outils. Évaluateur, budget, amorces et grille restent fixes pendant une comparaison.
- Portée de l’enregistrement d’exécution
- Les valeurs de run-2606 sont les moyennes Petri broken_tool_use de cette exécution (plus bas est meilleur). Elles ne prouvent ni une amélioration cumulée de SIL ni une généralisation.