GEODE
Autonomous Agent Harness
Dall’osservazione all’azione successiva.
Un harness locale per agenti autonomi a cui affidare ricerca, lavoro sui file e attività pianificate.
Cambiare una policy alla volta; la misura resta fissa.
Un ciclo separato che gira fuori dall’harness. A partire dalla baseline applica una modifica di policy tipizzata, e lo stesso audit Petri e lo stesso gate decidono tra KEEP e ripristino.
Una modifica → audit
Con il contratto di esecuzione fissato, cambia una policy consentita e GEODE viene sottoposto ad audit con lo stesso apparato. Non è il prodotto in esecuzione che riscrive sé stesso.
Approvazione dell’operatoreeseguire · decidere: approvazionecontratto di esecuzione · modelli · budget
program.mdUn’esecuzione parte solo dopo l’approvazione delle chiamate live e del budget fisso. Senza approvazione si prepara soltanto il contratto e lo si controlla offline.
contratto di esecuzione · modelli · budget
program.mdeseguire · decidere: contratto di esecuzioneciclo a budget fissotrain.pyRevisioni di seed e rubrica, modelli dei ruoli e origine delle credenziali, impostazioni di misura, budget di iterazioni, tempo e costo, la policy di promozione e le condizioni di arresto vengono fissati prima dell’esecuzione.
ciclo a budget fisso
train.pyeseguire · decidere: chiedere un candidatomutator · un candidatoloop/mutateUn’ipotesi sostenuta da prove cambia una superficie di policy consentita.
7 superfici · niente iperparametri
loop/mutatedati: modifica di policy · mutation IDpolicy su filestate/policiesPossono cambiare solo sette superfici: prompt wrapper, policy degli strumenti, consigli di decomposizione, reflection, metadati del catalogo delle skill, contratto dell’agente (role, system_prompt, tools) e descrizioni e suggerimenti degli strumenti. Le modifiche agli iperparametri vengono respinte sia nel parsing sia nell’applicazione. Applicare una policy, rimisurare e un commit opzionale sono passi separati, quindi un’applicazione non è di per sé un audit.
pool di seed · rubrica fissi
prepare.pyeseguire · decidere: seed · rubrica fissisottoprocesso di audit · timeout fissomeasure.pyprepare.py è il riferimento fisso per il pool di seed e la rubrica; i candidati non lo cambiano. Cambiare un modulo di misura cambia la misura, non il sistema in prova.
policy su file
state/policiesdati: policy selezionataOVERRIDE per policy · STRICTmeasure.pymeasure.py legge il file di policy attualmente selezionato e lo passa all’ambiente di audit.
OVERRIDE per policy · STRICT
measure.pyeseguire · decidere: percorsi di override per policycore · loader delle policymeasure.py passa al sottoprocesso di audit il percorso del wrapper e i percorsi di override e strict per policy, e il loader di policy corrispondente del runtime legge ciascuno di essi. Il wrapper (GEODE_WRAPPER_OVERRIDE → system_prompt) è un ramo; chiavi d’ambiente aggiuntive non ampliano le sette superfici modificabili. Un file modificato non prova da solo che il candidato abbia raggiunto il target; lo conferma la diagnostica nelle prove dell’audit.
sottoprocesso di audit · timeout fisso
measure.pyeseguire · decidere: audit subprocessAudit PetriL’audit gira con timeout e budget fissi, mai cambiati a metà di un confronto. Un output mancante è una lacuna diagnostica, non un punteggio pari a zero.
Audit Petridati: dialogo dell’auditcore · loader delle policy
L’auditor parla con GEODE attraverso lo scenario del seed, e il judge valuta il transcript.
Verdetto → mantenere · ripristinare
Nel confronto con la baseline dello stesso contratto, le regressioni critical e la regola di promozione decidono il KEEP; una modifica respinta viene riportata al valore precedente registrato.
Audit Petridati: punteggi per dimensioneregressione critical · penalità
fitness.pyI punteggi arrivano insieme alle dimensioni mancanti e al numero di campioni. Una dimensione non misurata non viene letta come un’osservazione.
baseline · provenance
ledger.pydati: baseline · provenanceregressione critical · penalitàfitness.pyIl confronto usa solo una baseline con lo stesso contratto registrato e la stessa epoch. Un nuovo branch Git non isola lo stato della baseline.
regressione critical · penalità
fitness.pydati: fitness · motivi di regressione_should_promote · KEEPgate.pyPrima si controllano le regressioni nelle dimensioni critical e le penalità ausiliarie, poi il test di margin o della dimensione obiettivo. Uno scalare positivo da solo non porta mai alla promozione.
_should_promote · KEEP
gate.pydati: KEEP · baseline successivabaseline · provenanceledger.pyUn candidato mantenuto diventa la baseline successiva. Un candidato mantenuto in locale non è un merge nel repository né un rilascio.
_reject_and_revert
gate.pyeseguire · decidere: REJECT · ripristinare il precedentepolicy su filestate/policiesPer un candidato creato dal runner viene ripristinata la sezione di policy registrata sotto il suo mutation ID, e un ripristino fallito viene segnalato. Le modifiche manuali non vengono ripristinate automaticamente, e un ripristino incerto blocca il candidato successivo.
_should_promote · KEEP
gate.pyregistrare · osservare: risultato · riga del verdettoresults · righe di mutazioneledger.pyMisura, verdetto e provenienza vengono scritti una sola volta come righe dei risultati; le righe storiche non vengono mai riscritte.
Controlli · misure replicate
Esecuzione del June 2026: un braccio never senza modifiche e una baseline K=5 hanno misurato separatamente il rumore dell’audit, e un KEEP da un singolo audit è stato ricontrollato con repliche.
run-2606-broken-tool-useeseguire · decidere: tre bracciciclo a budget fisso
train.pyL’esecuzione del June 3–4, 2026 ha separato la deriva dall’effetto della mutazione con tre bracci: never (nessuna modifica), random (accettazione casuale) e gate (accettazione in base al verdetto). Il target era GPT-5.5; auditor e judge erano Claude Opus 4.8.
baseline gen-0 · media di 5 audit
run-2606-broken-tool-usedati: baseline come media K=5baseline · provenanceledger.pyLa baseline gen-0 era la media di cinque audit (Petri broken_tool_use, più basso è meglio, media 2.667).
braccio never · controllo senza modifiche
run-2606-broken-tool-useeseguire · decidere: misurare senza modifichesottoprocesso di audit · timeout fissomeasure.pyIl braccio never ha subito una deriva fino a una media di 3.38 senza alcuna modifica di policy (10 audit, più basso è meglio): prova diretta che il rumore dell’audit superava l’effetto della mutazione.
--replicate K · nuova misura
train.pyeseguire · decidere: --replicate Ksottoprocesso di audit · timeout fissomeasure.pyLo stesso candidato viene misurato altre K volte nelle stesse condizioni per scartare un singolo audit fortunato.
replicate · rimisurare un singolo KEEP
run-2606-broken-tool-useeseguire · decidere: nuova misura → ripristino_reject_and_revertgate.pyUn candidato mantenuto su un singolo audit gate (1.6) ha misurato 3.0–3.8 nelle repliche, peggio della baseline, quindi è stato ripristinato il champion 2.667. L’esecuzione ha concluso: nessun miglioramento evidente.
Tutte le connessioni con lo stesso peso. Scegliendo un flusso se ne evidenzia solo il percorso, con passi numerati.
- Continua · la direzione in cui scorrono richieste, candidati e risultati
- Tratteggiata · eseguire, decidere, autorizzare, configurare
- Tratto lungo e punto · registri e osservazione, separati dal verdetto
- Linea nera spessa · il flusso scelto; i numeri danno l’ordine
- Riquadro · un confine di codice o di registro, con il percorso nell’intestazione
- Chip interno · un componente in quel confine
- Riquadro tratteggiato · fuori da quel confine
- ciclo · esecuzione di misura
- contratto · verdetto
- policy · registri
- modifica · target dell’audit · registro di esecuzione
Il driver SIL di GEODE si chiama autoresearch; la struttura prepare/train/program e il budget fisso si ispirano all’autoresearch di Karpathy. Nessun peso del modello cambia, e apparato e budget restano fissi durante un confronto.
- Cosa può cambiare
- Sette superfici: prompt wrapper, policy degli strumenti, consigli di decomposizione, reflection, metadati del catalogo delle skill, contratto dell’agente e descrizioni e suggerimenti degli strumenti. Valutatore, budget, seed e rubrica restano fissi durante un confronto.
- Ambito del registro di esecuzione
- I valori di run-2606 sono le medie Petri broken_tool_use di quell’esecuzione (più basso è meglio). Non sono prove di un miglioramento cumulativo né di una generalizzazione di SIL.