Geodi, personnage officiel de GEODE en pixel art
Retour à la salle

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.

2026.02.21 — present

Conception, jugement, vérification : Author · implémentation : Claude · revue : Codex

  • CLIPublié · PyPI
  • Serveur MCPImplémenté

L’acceptation d’un candidat et l’autorité de publication sont des jugements distincts.

Crucible est un noyau d’expérimentation distinct de la recherche de politiques. Un commit candidat est validé contre les surfaces autorisées et un contrat figé, des tâches appariées sont agrégées dans un checkout de mesure séparé, et le résultat est KEEP, REJECT ou INVALID.

Carte Crucible · tracée d’après le commit fixé 9e2c041 et les artefacts publics 23e3428
Carte Crucible de GEODEUn noyau d’expérimentation qui maintient l’acceptation des candidats, l’éligibilité scellée et la publication du produit comme autorités distinctes. Le superviseur prend un commit candidat unique d’un producteur, le contrôle contre la surface autorisée et l’évaluateur figé, et exécute des tâches tau2 dans un checkout de mesure isolé. promotion.py agrège les résultats appariés par tâche et par famille préenregistrées en KEEP, REJECT ou INVALID ; KEEP ne fait que déplacer la tête de recherche. L’évaluation scellée juge un bundle train sur un test pack disjoint à usage unique ; même ELIGIBLE n’atteint qu’une ref eligible, sans autorité de publication.Modèles acteur · utilisateurr14 · r35: gpt-5.4/highEnvironnement tau2tâches · utilisateur simuléPublication du produit GEODEaucune connexion · autorité distinctesearch/producerscommande du producteur · configuréereplay producersearch/supervisor.pypropose → preflightevaluate → decide → recordcontract.pysurface autorisée · diff candidatévaluateur figé · préenregistréattempt/feedback.jsoncodes d’échec · ID de tâches trainmeasurement checkoutisolé du producteurassays/exécution tau2 · receiptvérificateur de tâchepromotion.pyagrégat apparié · tâche · familleKEEP · REJECT · INVALIDattestation/bundle.pybundle train · KEEP recalculéattestation/sealed.pytest pack disjoint · utilisé une foisELIGIBLE · release_authority nonerefs/cruciblesearch/* headeligible/*geode-eval-artifactsr14 · train KEEP → sealed REJECTr35 · INVALID · 0 paire · nullevolve/cruciblenoyau d’expérimentation externe · distinct de SILrecherche · verdict trainattestation · sealed1 demander un candidat · propose → preflight → search/producers12 un commit candidat · search/producers → propose → preflight23 surface autorisée · contrôle du diff · propose → preflight → surface autorisée · diff candidat34checkout isolé5exécution sous contrat fixe6dialogue acteur · utilisateur7appels de modèle8paired evidence9agrégation préenregistrée10KEEP · la tête avance1paired evidence2agrégation préenregistrée3REJECT · INVALID4codes d’échec · ID de tâches1record · ref receipt2 bundle train seulement · une fois · bundle train · KEEP recalculé → test pack disjoint · utilisé une fois23 ref eligible seulement · ELIGIBLE · release_authority none → eligible/*31verdict.json public2sealed decision.json

Verdict train

Un candidat dans la surface autorisée est mesuré sous contrat fixe dans un checkout isolé, et des règles préenregistrées décident KEEP, REJECT ou INVALID.

  1. propose → preflightsearch/supervisor.pyexécuter · décider: demander un candidatsearch/producers

    Le superviseur de recherche demande un candidat à un producteur. Le candidat de r14 était un candidat antérieur (r13) réappliqué par le producteur replay, et non un nouveau candidat généré par LLM.

  2. search/producersdonnées: un commit candidatpropose → preflightsearch/supervisor.py

    Un producteur renvoie un commit candidat unique dans les chemins autorisés.

  3. propose → preflightsearch/supervisor.pyexécuter · décider: surface autorisée · contrôle du diffsurface autorisée · diff candidatcontract.py

    Le diff candidat doit rester dans la surface autorisée par le contrat, et l’évaluateur figé est vérifié. Dans r14 et r35, la cible autorisée était un seul fichier, tau2_agent_policy.md ; core et l’implémentation de Crucible étaient figés comme chemin de l’évaluateur.

  4. evaluate → decide → recordsearch/supervisor.pyexécuter · décider: checkout isoléisolé du producteurmeasurement checkout

    Le candidat est contrôlé dans un checkout de mesure séparé du producteur.

  5. isolé du producteurmeasurement checkoutexécuter · décider: exécution sous contrat fixeexécution tau2 · receiptassays/

    Référence et candidat tournent avec le même contrat, la même graine et les mêmes tâches.

  6. exécution tau2 · receiptassays/données: dialogue acteur · utilisateurEnvironnement tau2

    L’agent GEODE (acteur) dialogue avec l’utilisateur simulé détenu par l’évaluateur, dans l’environnement de tâches tau2.

  7. exécution tau2 · receiptassays/données: appels de modèleModèles acteur · utilisateur

    Dans r14 et r35, l’acteur comme l’utilisateur simulé étaient gpt-5.4/high (abonnement).

  8. vérificateur de tâcheassays/données: paired evidenceagrégat apparié · tâche · famillepromotion.py

    Les résultats du vérificateur de tâche sont conservés en paires référence–candidat.

  9. évaluateur figé · préenregistrécontract.pyexécuter · décider: agrégation préenregistréeagrégat apparié · tâche · famillepromotion.py

    Les résultats appariés sont agrégés par tâche et par famille préenregistrée, avec des contrôles séparés pour le budget, la couverture, l’infrastructure et la sûreté.

  10. KEEP · REJECT · INVALIDpromotion.pyexécuter · décider: KEEP · la tête avancesearch/* headrefs/crucible

    Sur KEEP, la tête suivante de refs/crucible/search/* devient le candidat. La promotion_authority d’un verdict train vaut none.

Rejet · invalide · retour

REJECT et INVALID conservent la tête, et le candidat suivant ne reçoit que des codes d’échec et des ID fixes de tâches train. INVALID n’est pas un score nul.

  1. vérificateur de tâcheassays/données: paired evidenceagrégat apparié · tâche · famillepromotion.py

    Les résultats du vérificateur de tâche sont conservés en paires référence–candidat.

  2. évaluateur figé · préenregistrécontract.pyexécuter · décider: agrégation préenregistréeagrégat apparié · tâche · famillepromotion.py

    Les résultats appariés sont agrégés par tâche et par famille préenregistrée, avec des contrôles séparés pour le budget, la couverture, l’infrastructure et la sûreté.

  3. KEEP · REJECT · INVALIDpromotion.pydonnées: REJECT · INVALIDcodes d’échec · ID de tâches trainattempt/feedback.json

    En cas de rejet ou d’invalidité, la tête précédente reste, et le candidat et ses enregistrements sont conservés. Une moyenne INVALID est null, pas zéro.

  4. codes d’échec · ID de tâches trainattempt/feedback.jsondonnées: codes d’échec · ID de tâchessearch/producers

    Le retour au candidat suivant se limite aux codes d’échec et aux ID fixes des tâches train ; aucune trajectoire ni réponse de l’évaluateur n’est transmise.

Éligibilité scellée · autorité distincte

Le KEEP train ne fait que déplacer la tête de recherche. L’éligibilité scellée n’atteint que la ref eligible ; publication du produit et déploiement sont des autorités distinctes, hors de Crucible.

  1. evaluate → decide → recordsearch/supervisor.pydonnées: record · ref receiptbundle train · KEEP recalculéattestation/bundle.py

    Un bundle train ne tient que si le contrat, les preuves de la référence et du candidat, le KEEP recalculé, la lignée des propositions, l’enregistrement du superviseur et le receipt de la ref appliquée se relient tous. Ce n’est pas un autre nom de l’amélioration.

  2. bundle train · KEEP recalculéattestation/bundle.pyexécuter · décider: bundle train seulement · une foistest pack disjoint · utilisé une foisattestation/sealed.py

    L’évaluation scellée utilise une seule fois un test pack disjoint de train, sans aucune nouvelle tentative d’infrastructure.

  3. ELIGIBLE · release_authority noneattestation/sealed.pyexécuter · décider: ref eligible seulementeligible/*refs/crucible

    Même ELIGIBLE n’écrit que refs/crucible/eligible/*, et release_authority est fixé à none.

Enregistrements publics · r14 · r35

r14 a été KEEP en train puis REJECT en scellé ; r35 (July 13, 2026) a été INVALID pour couverture incomplète et contamination d’infrastructure (0 ligne appariée, moyenne null), tête inchangée.

  1. KEEP · REJECT · INVALIDpromotion.pydonnées: verdict.json publicgeode-eval-artifacts

    Les artefacts publics sont des enregistrements normalisés fixés à 23e3428. Le hash préenregistré de la config train de r14 diffère des octets de la config publique ; la chaîne d’origine complète n’est donc pas recertifiée.

  2. attestation/sealed.pydonnées: sealed decision.jsonr14 · train KEEP → sealed REJECTgeode-eval-artifacts

    r14 : KEEP sur telecom train, 6 tâches × 1 essai (6 lignes appariées, sans autorité de promotion), puis un verdict scellé distinct REJECT (sans autorité de publication).

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 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
  • superviseur de recherche
  • contrat · verdict · attestation
  • refs · enregistrements
  • producteurs · exécution

Crucible est un noyau distinct de SIL ; les deux recherches ne forment pas un pipeline unique qui promeut les candidats de l’autre. Le cadre de publication du produit n’a aucune connexion entrante.

Trois autorités
Le KEEP train déplace la tête de recherche, l’ELIGIBLE scellé consigne une ref eligible, et la publication du produit est une décision distincte, hors de Crucible. Un verdict antérieur n’accorde jamais une autorité ultérieure.
Null n’est pas zéro
r35 prévoyait 9 tâches × 3 essais (27 lignes par bras) mais n’a eu aucune paire comparable ; sa moyenne et son amélioration sont donc null. Ce ne sont ni 27 tâches échouées ni un taux de réussite de 0%.