一度に変えるポリシーは1つ、測定は固定。
ハーネスの外で動く別のループです。ベースラインから型付きのポリシー変更を1つ適用し、同じPetri監査とゲートでKEEPか復元かを決めます。
変更1つ → 監査
実行契約を固定したうえで許可されたポリシーを1つだけ変更し、同じ測定装置でGEODEを監査します。稼働中の製品が自らを書き換える経路ではありません。
運用者の承認実行 · 判定: 承認実行契約 · モデル · 予算
program.mdライブ呼び出しと固定予算が承認された後にだけ実行を開始します。承認がなければ、契約を準備してオフラインで確認するだけです。
実行契約 · モデル · 予算
program.md実行 · 判定: 実行契約固定予算のループtrain.pyシードとルーブリックの版、役割ごとのモデルと認証情報の出所、測定設定、反復・時間・コストの予算、昇格ポリシー、停止条件を実行前に固定します。
固定予算のループ
train.py実行 · 判定: 候補を1つ要求mutator · 候補1つloop/mutate根拠のある1つの仮説が、許可されたポリシーサーフェスを1つだけ変更します。
7つのサーフェス · ハイパーパラメータ不可
loop/mutateデータ: ポリシー変更 · mutation IDファイルベースのポリシーstate/policies変更できるのは7つのサーフェスだけです。ラッパープロンプト、ツールポリシー、分解の助言、リフレクション、スキルカタログのメタデータ、エージェント契約(role、system_prompt、tools)、ツールの説明とヒントです。ハイパーパラメータの変更は、パース時と適用時の両方で拒否されます。ポリシーの適用、再測定、任意のコミットは別々のステップなので、適用そのものは監査ではありません。
シードプール · ルーブリック固定
prepare.py実行 · 判定: シード · ルーブリック固定監査サブプロセス · 固定タイムアウトmeasure.pyprepare.pyはシードプールとルーブリックの固定された基準で、候補はこれを変更しません。測定モジュールを変えると、変わるのはテスト対象のシステムではなく測定です。
ファイルベースのポリシー
state/policiesデータ: 選択されたポリシーポリシーごとのOVERRIDE · STRICTmeasure.pymeasure.pyが現在選択されているポリシーファイルを読み、監査環境へ渡します。
ポリシーごとのOVERRIDE · STRICT
measure.py実行 · 判定: ポリシーごとのoverrideパスcore · ポリシーローダーmeasure.pyはwrapperとポリシーごとのoverride・strictのパスを監査サブプロセスに渡し、ランタイムの対応するポリシーローダーがそれぞれを読みます。wrapper(GEODE_WRAPPER_OVERRIDE → system_prompt)はそのうちの1分岐で、環境キーが増えても変更可能な7つのサーフェスは広がりません。ファイルを編集しただけでは候補がtargetに届いた証明にならず、監査の証拠に含まれる診断で確認します。
監査サブプロセス · 固定タイムアウト
measure.py実行 · 判定: audit subprocessPetri監査監査は固定のタイムアウトと予算で実行し、比較の途中で変更しません。出力がない場合は0点ではなく、診断上の欠落です。
Petri監査データ: 監査の対話core · ポリシーローダー
auditorがシードのシナリオでGEODEと対話し、judgeがその会話記録を採点します。
判定 → 保持 · 復元
同じ契約のベースラインと比較し、critical回帰と昇格ルールでKEEPを決めます。却下された変更は、記録された以前の値に復元します。
Petri監査データ: 次元スコアcritical回帰 · ペナルティ
fitness.pyスコアは、欠けた次元とサンプル数とともに渡されます。測定されていない次元を観測値としては読みません。
baseline · provenance
ledger.pyデータ: baseline · provenancecritical回帰 · ペナルティfitness.py比較には、記録された契約とepochが同じベースラインだけを使います。新しいGitブランチを作っても、ベースラインの状態は分離されません。
critical回帰 · ペナルティ
fitness.pyデータ: fitness · 回帰の理由_should_promote · KEEPgate.pyまずcritical次元の回帰と補助的なペナルティを確認し、次にマージンまたは目標次元の検定を行います。正のスカラー値だけで昇格することはありません。
_should_promote · KEEP
gate.pyデータ: KEEP · 次のベースラインbaseline · provenanceledger.py保持された候補が次のベースラインになります。ローカルで保持された候補は、リポジトリへのマージでもリリースでもありません。
_reject_and_revert
gate.py実行 · 判定: REJECT · 以前の値を復元ファイルベースのポリシーstate/policiesrunnerが作った候補については、そのmutation IDで記録されたポリシーの区間を復元し、復元の失敗には別途フラグを立てます。手動の変更は自動では復元されず、復元が不確かなときは次の候補に進みません。
_should_promote · KEEP
gate.py記録 · 観測: 結果 · 判定行results · mutation行ledger.py測定、判定、出所を結果の行として一度だけ書き込みます。過去の行は書き換えません。
対照 · 再測定
2026年6月の実行:変更なしのnever armとK=5のベースラインで監査のノイズを別に測り、単発監査のKEEPはreplicateで再確認しました。
run-2606-broken-tool-use実行 · 判定: 3つのarm固定予算のループ
train.py2026年6月3–4日の実行では、never(変更なし)、random(無作為に採択)、gate(判定で採択)の3つのarmで、変動と変更の効果を切り分けました。targetはGPT-5.5、auditorとjudgeはClaude Opus 4.8でした。
gen-0のベースライン · 監査5回の平均
run-2606-broken-tool-useデータ: K=5平均のベースラインbaseline · provenanceledger.pygen-0のベースラインは、監査5回の平均でした(Petri broken_tool_use、低いほど良い、平均2.667)。
never arm · 変更なしの対照
run-2606-broken-tool-use実行 · 判定: 変更なしで測定監査サブプロセス · 固定タイムアウトmeasure.pynever armは、ポリシーを一切変えずに平均3.38まで変動しました(監査10回、低いほど良い)。監査のノイズが変更の効果を上回っていたことの直接の根拠です。
--replicate K · 再測定
train.py実行 · 判定: --replicate K監査サブプロセス · 固定タイムアウトmeasure.py同じ候補を同じ条件でさらにK回測定し、たまたま良かった単発の監査を除外します。
replicate · 単発KEEPの再測定
run-2606-broken-tool-use実行 · 判定: 再測定 → 復元_reject_and_revertgate.pygateの単発監査でKEEPされた候補(1.6)は、replicateでは3.0–3.8とベースラインより悪化したため、champion 2.667に戻しました。この実行の結論は、明確な改善なしです。
すべての接続を同じ太さで表示します。フローを選ぶと、その経路だけを番号付きで強調します。
- 実線 · リクエスト・候補・結果が流れる方向
- 破線 · 実行・判定・認可・設定
- 長い一点鎖線 · 記録と観測、判定とは別
- 太い黒線 · 選んだフロー。番号は順序
- ボックス · コードまたは記録の境界、見出しにパス
- 内側のチップ · その境界内の構成要素
- 破線ボックス · その境界の外
- ループ · 測定の実行
- 契約 · 判定
- ポリシー · 記録
- 変更 · 監査対象 · 実行記録
GEODEのSILドライバーの名前はautoresearchで、prepare/train/programの構成と固定予算は、Karpathyのautoresearchに倣っています。モデルの重みは変更せず、比較中は測定装置と予算を固定します。
- 変更できるもの
- ラッパープロンプト、ツールポリシー、分解の助言、リフレクション、スキルカタログのメタデータ、エージェント契約、ツールの説明とヒントの7つのサーフェスです。評価器、予算、シード、ルーブリックは比較中は固定です。
- 実行記録の範囲
- run-2606の値は、その実行のPetri broken_tool_useの平均です(低いほど良い)。SILの累積的な改善や汎化の根拠ではありません。