From 47f4496b4a3d2d51f1ff439f27a835a62a367c33 Mon Sep 17 00:00:00 2001 From: Gui <51219838+gui-ace@users.noreply.github.com> Date: Thu, 24 Sep 2026 08:58:15 +0900 Subject: [PATCH] =?UTF-8?q?GPT-6=E7=B3=BB=E3=81=AB=E5=90=88=E3=82=8F?= =?UTF-8?q?=E3=81=9B=E3=81=A6=E5=88=86=E6=8B=85=E6=96=B9=E9=87=9D=E3=82=92?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 2 +- README.md | 18 +++++----- docs/changelog.md | 6 ++++ docs/validation.md | 8 +++++ examples/overrides.example.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../codex-task-routing/defaults/config.json | 32 +++++++++--------- .../defaults/provenance.json | 11 ++++--- .../defaults/templates/effective.md | 1 - .../templates/model-routing-catalog.md | 8 ++--- .../templates/model-routing-handoff.md | 2 +- plugins/codex-task-routing/scripts/routing.py | 3 +- .../skills/task-routing/SKILL.md | 2 +- .../task-routing/references/chat-limits.md | 2 +- .../skills/task-routing/references/chatgpt.md | 4 +-- .../task-routing/references/configuration.md | 6 ++-- .../references/observation-example.json | 4 +-- scripts/check_package.py | 7 ++-- scripts/smoke_native.py | 2 +- scripts/smoke_updater.py | 2 +- tests/fixtures/model-routing-catalog.md | 8 ++--- tests/fixtures/model-routing-handoff.md | 2 +- tests/fixtures/model-routing-policy.md | 33 +++++++++---------- tests/test_fixed_routing.py | 16 ++++++--- tests/test_hook_command.py | 2 +- tests/test_observation.py | 4 +-- tests/test_routing.py | 10 +++--- 27 files changed, 111 insertions(+), 88 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index da3967b..c64e88c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,4 +8,4 @@ - フックや設定変更は一時的なCodexホームで検証する。稼働中の利用環境へ自動インストールしない。 - `python -m unittest discover -s tests -v` と `python scripts/check_package.py` を実行する。現在の版で確認済みの範囲と未検証の実行環境を明記する。 - 公開前に個人パス、秘密値、実行ログ、未完成の生成用プレースホルダーが含まれないことを確認する。 -- 基準運用は親Terra/xhigh、子Luna/max・Sol/high・Astra/high、適合工程は通常Chat 6 Proを優先する。親の実設定は変更せず、Terra子を標準にしない。並列は親の独立作業、直列の専門委譲は具体的追加価値とホストの許可を確認し、上位指示を迂回しない。 +- 基準運用は親GPT-6 Sol/xhigh、子GPT-6 Luna/max・Sol/high・Astra/high、適合工程は通常Chat 6 Proを優先する。親の実設定は変更せず、同モデルへの無用な移管をしない。並列は親の独立作業、直列の専門委譲は具体的追加価値とホストの許可を確認し、上位指示を迂回しない。 diff --git a/README.md b/README.md index 9c7fe0c..2b21671 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,17 @@ Acecoreが日常利用で改善している分担原則を既定値として同梱します。親のモデル・effortを維持し、引継ぎ、同じ担当の継続、重要なレビューまで含めて、品質と総利用負担を考慮します。次回送信のモデル選択を勧める機能はありません。節約率は未実証です。 -現在の基準運用は、**親Terra/xhighで通常作業を完結し、専門工程だけ固定effortの担当へ渡す**方式です。利用者が選んだ親設定は変更しません。 +現在の基準運用は、**親GPT-6 Sol/xhighで通常作業を完結し、専門工程だけ固定effortの担当へ渡す**方式です。利用者が選んだ親設定は変更しません。 | 担当 | 固定値 | 役割 | | --- | --- | --- | -| 親の基準 | Terra/xhigh | 通常の調査・実装・検証・進行 | -| 子 | Luna/max | 明確な定型工程 | -| 子 | Sol/high | 複雑な実装・原因・重要レビュー | -| 子 | Astra/high | 難しい設計・重大な不確実性 | +| 親の参考基準 | GPT-6 Sol/xhigh | 通常の調査・実装・検証・進行 | +| 子 | GPT-6 Luna/max | 明確な定型工程 | +| 子 | GPT-6 Sol/high | 複雑な実装・原因・重要レビュー | +| 子 | GPT-6 Astra/high | 難しい設計・重大な不確実性 | | 別経路 | 通常Chat 6 Pro | 適合するまとまった工程の主担当候補 | -Terra子は標準ルートから外します。min/max設定は互換性のため残し、自動選定は有効なdefault_effortに固定します。既存overrideと他モデル親は保持します。並列分担には親の独立作業が必要で、直列の専門委譲は具体的な追加価値とホストの許可を確認した場合だけ使います。 +旧`terra`キーはschema 1の既存overrideの読取り互換用です。分担候補には出しません。同モデルへの無用な移管を避けます。min/max設定は互換性のため残し、自動選定は有効なdefault_effortに固定します。既存overrideと他モデル親は保持します。並列分担には親の独立作業が必要で、直列の専門委譲は具体的な追加価値とホストの許可を確認した場合だけ使います。 ## 導入 @@ -56,15 +56,15 @@ python plugins/codex-task-routing/scripts/routing.py render --output-dir outputs ## 設定を変更する -上書きは `$CODEX_HOME/codex-task-routing/overrides.json` へ保存します。`CODEX_HOME` が未設定なら `~/.codex` です。上書きがなければ作者の既定値を使います。プラグインの更新・解除でこの上書きファイルを編集・削除しません。 +上書きは `$CODEX_HOME/codex-task-routing/overrides.json` へ保存します。`CODEX_HOME` が未設定なら `~/.codex` です。上書きがなければ作者の既定値を使います。旧版の`luna`・`sol`の`id`を5.6系へ固定した上書きは自動で書き換えないため、移行時に`status --json`の適用キーを確認してください。プラグインの更新・解除でこの上書きファイルを編集・削除しません。 -例として、Terraの標準effortだけ変更する場合は次のように指定します。 +例として、Sol子の標準effortだけ変更する場合は次のように指定します。 ```json { "schema_version": 1, "models": { - "terra": { "default_effort": "high" } + "sol": { "default_effort": "xhigh" } } } ``` diff --git a/docs/changelog.md b/docs/changelog.md index 63b233b..4d9604d 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,12 @@ 現在の導入・適用確認・任意機能・トラブル対応は [README](../README.md) を参照してください。各版で確認した環境と未検証範囲は [検証記録](validation.md) に残しています。 +## 0.9.0 + +- 既定の子をGPT-6 Luna/max・Sol/high・Astra/highとし、親の参考基準をSol/xhighへ更新しました。利用者の親設定は変更しません。 +- 旧`terra`キーはschema 1のoverride互換用に残し、子の割当・有効方針の表示から外しました。既存overrideの5.6系IDは自動変更しません。 +- 方針、分類表、引継ぎ、説明、フック出力と検証用fixtureを新しい基準へ合わせました。 + ## 0.8.2 - release検査をSemVerの正しいprecedence比較へ変更し、同一版、版の後退、build metadataだけの変更、不正な版を拒否するようにしました。 diff --git a/docs/validation.md b/docs/validation.md index 3045d20..8df186d 100644 --- a/docs/validation.md +++ b/docs/validation.md @@ -1,5 +1,13 @@ # 検証記録 +## 0.9.0: GPT-6系への分担更新 + +2026-09-24、Windows / Python 3.13の専用作業ツリーで134件のテスト、`python scripts/check_package.py`、`git diff --check` が成功しました。隔離Codexホームへのnative CLI導入、両フック、再インストールとoverride保持、解除も成功しました。一時Codexホームで方針をrenderし、有効方針・分類表・引継ぎ・子のフックに5.6系IDやTerra担当が出ないことを確認しました。 + +- 既定IDは`gpt-6-luna`・`gpt-6-sol`・`gpt-6-astra`です。親Sol/xhighは参考基準であり、稼働中の親設定を変更しません。子の固定effortはLuna/max・Sol/high・Astra/highを維持しました。 +- schema 1の旧`terra`キーは既存overrideの読取り互換用として残し、子の候補には使いません。5.6系へ固定された既存overrideと既存の親設定は自動更新しません。 +- 実アカウントでのモデル起動、稼働中アプリへの更新、通常Chat画面、利用量・品質の比較は未検証です。CIの結果はPRで別途確認します。 + ## 0.8.2: 診断・テスト・リリース検査の改善 2026-09-23、Windows / Python 3.13の通常サンドボックス内で134件のテストと `python scripts/check_package.py` が成功しました。隔離Codexホームではnative CLIによる導入・両フック起動・再インストール・解除と個別設定の保持も確認しました。稼働中アプリへの再読み込み、通常Chat画面、子モデルの実行、利用量は今回の検証に含みません。CIには既存の3 OS / Python 3.11に加えてWindows / Python 3.13を追加し、リモート結果はPRで確認します。 diff --git a/examples/overrides.example.json b/examples/overrides.example.json index bc6261f..093be64 100644 --- a/examples/overrides.example.json +++ b/examples/overrides.example.json @@ -1,6 +1,6 @@ { "schema_version": 1, "models": { - "terra": { "default_effort": "high" } + "sol": { "default_effort": "xhigh" } } } diff --git a/plugins/codex-task-routing/.codex-plugin/plugin.json b/plugins/codex-task-routing/.codex-plugin/plugin.json index 0ab8521..42a5bd3 100644 --- a/plugins/codex-task-routing/.codex-plugin/plugin.json +++ b/plugins/codex-task-routing/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "codex-task-routing", - "version": "0.8.2", + "version": "0.9.0", "description": "Task delegation policies for research, documents, images, operations, and development in Codex.", "author": { "name": "Acecore", diff --git a/plugins/codex-task-routing/defaults/config.json b/plugins/codex-task-routing/defaults/config.json index 1909b05..219895e 100644 --- a/plugins/codex-task-routing/defaults/config.json +++ b/plugins/codex-task-routing/defaults/config.json @@ -1,21 +1,21 @@ { "schema_version": 1, - "policy_revision": "2026-09-15-terra-chat-fixed", + "policy_revision": "2026-09-24-gpt6-routing", "models": { "luna": { - "id": "gpt-5.6-luna", + "id": "gpt-6-luna", "min_effort": "xhigh", "default_effort": "max", "max_effort": "max" }, "terra": { - "id": "gpt-5.6-terra", + "id": "gpt-6-sol", "min_effort": "high", "default_effort": "xhigh", "max_effort": "max" }, "sol": { - "id": "gpt-5.6-sol", + "id": "gpt-6-sol", "min_effort": "medium", "default_effort": "high", "max_effort": "xhigh" @@ -28,23 +28,23 @@ } }, "principles": { - "summary": "品質を保ち、子の推論を削るより、引継ぎ・親の再処理・手戻り込みの総利用負担を減らす。作者の基準運用は親Terra/xhighだが、利用者が選んだ親のmodel・effort(Ultra含む)を変更しない。次の送信のモデル提案もしない。\n\n- 通常の調査・実装・検証と進行は親が完結する。Terra子は標準ルートから外し、同モデルへの受渡しのためだけに子を作らない。他モデル親・既存overrideを壊さず、適合する既存担当は継続する。\n- 自動選定のeffortは有効なdefault_effortに固定する。既定はLuna/max、Sol/high、Astra/high、Terra/xhighは親の基準と互換定義。下限・上限はoverride検証用に保持し、毎回のeffort選びに使わない。能力不足は担当を見直し、順番に下位から試す義務はない。\n- 有効な通常Chat経路では、材料・実際のツール・承認・検証環境で完結するまとまった工程は6 Proを最初の主担当候補にする。分析・比較・設計・文案・レビューに加え、条件がそろう実装・テスト・PR作成も含む。難しさだけでCodexのSol/Astraへ固定しない。短い仕事やCodex側の現物を頻繁に照会する仕事は残す。分類と実行許可は別で、契約だけで経路を有効化しない。\n- 委譲は具体的・限定的な完了単位とし、原則同時1件。並列では親にも有用な独立作業が必要。直列の専門委譲は追加価値とホストの許可を確認した時だけ。禁止する上位指示を別CLI・別タスクで迂回せず、条件のためだけに親の仕事を作らない。Chatはrootのみ、子の再委譲は標準にしない。\n- 分類前に難問を解き切らない。問題分割や受入基準の設計も難しければ専門担当へ渡す。元の依頼・重要制約・必要な原資料を保持し、親の誤解を子が訂正できるようにする。子は承認済みの取得・実装・修正・検証・証拠整理まで同じ担当で完結する。\n- model・effortを明示し、要求値と観測値を分ける。全履歴fork・全ログ転送を避け、目的・対象・根拠・合格条件・承認・返却条件を短く渡す。repoでは絶対cwd・worktree・branch/HEAD・対象diffを特定し、不一致を探索やresetで補わせない。\n- 親は重要差分・証拠・受入条件を確認し、有効な検証を再利用する。専門判断の根拠・前提・反例・未解決点を回収し、同じ問題の全面的な解き直しや不要なAstra二重レビューをしない。書込み・マージ・本番反映の承認は別々に守る。\n- 原本全体・必須項目・日付の意味・取得範囲を確認する。HTTP成功・null・0件・OCR空欄を不存在や完了と扱わず、未取得・未確認・判読不能・確認範囲内の記載なしを区別する。画像は実見し、数値測定が必要なら測定する。\n- 矛盾・範囲拡大・設計変更・検証不能・同じ失敗は親へ戻す。不要な差し戻しを減らしても重大な返却は抑えない。権限・接続・材料不足をeffortやモデル変更だけで解決したと扱わない。\n- 観測は方針内容ごとに通常作業3件まで。開始フックの残枠に従い、開始時と最終報告前に同じtask_id・sampling_keyを更新する。子も親の1記録にまとめ、欠測は理由付きnullで閉じる。合計のCodex使用量・Chatのメッセージ・品質・手戻りを分け、割合だけで節約を主張しない。常時計測・全会話探索・測定だけの追加実行はしない。\n\n詳細はmodel-routing-policy.md、分類はmodel-routing-catalog.md、引継ぎはmodel-routing-handoff.mdの必要節だけ読む。通常Chatの利用枠・実行条件はChat経路のreferenceを確認する。上位指示・利用可能機能・承認を優先し、節約や性能の同等性を保証しない。\n", - "policy_intro": "# モデル選定・作業内の委譲(2026-09-15更新)\n\n作者の基準運用は親Terra/xhigh、子Luna/max・Sol/high・Astra/high、適合工程は通常Chatの6 Proを積極的な主担当とする。通常作業と進行を親で完結し、専門工程だけ渡す。Terra子は標準ルートから外す。これは性能・節約の実証ではなく比較する運用方針である。\n\n親モデルを自動変更する機能ではない。利用者の親のmodel・effort(Ultra含む)と既存overrideを保持し、次回送信の切替提案はしない。別モデル親でも、能力に合う作業は親・適合する既存担当で進め、専門判断を必要な担当へ渡す。通常の可逆的な作業は承認内で進め、毎回の続行確認を増やさない。\n", - "policy_effort": "### 子のeffortの固定値と互換性\n\n| 担当 | 自動選定に使う有効な固定値 | 役割 |\n| --- | --- | --- |\n| Luna子 | {{models.luna.default_effort}} | 明確な定型工程 |\n| Sol子 | {{models.sol.default_effort}} | 複雑な実装・原因・重要レビュー |\n| Astra子 | {{models.astra.default_effort}} | 難しい設計・重大な不確実性 |\n| Terra | {{models.terra.default_effort}} | 親の基準。子は標準ルート外 |\n| 通常Chat 6 Pro | UIの6 Pro | 別経路。Codex effortと換算しない |\n\n固定するのは自動選定の基準であり、合格条件ではない。子の推論を十分使い、親の再指示・再調査を減らす。担当外なら固定値で押し切らず、未解決工程を適任へ直接渡す。Astraでも不十分なら根拠と制約を返し、無意味な再試行や合格基準の引下げはしない。\n\n`min_effort`・`max_effort`は既存設定と部分overrideの範囲検証用として保持し、毎回の自動選定の候補にしない。利用者が明示した有効なoverrideを優先する。親の実設定はこの表で上書きしない。子の再開時も設定維持を推測せず、要求値と取得できた観測値を区別する。利用不能な値に黙って置換しない。low・none・minimal・Ultraは自動選定しない。\n\n[公式サブエージェント仕様](https://learn.chatgpt.com/docs/agent-configuration/subagents)を実行時にも確認する。設定値は実行モデルの証明ではない。\n", + "summary": "品質を保ち、子の推論を削るより、引継ぎ・親の再処理・手戻り込みの総利用負担を減らす。作者の参考基準は親Sol/xhighだが、利用者が選んだ親のmodel・effort(Ultra含む)を変更しない。次の送信のモデル提案もしない。\n\n- 通常の調査・実装・検証と進行は親が完結する。親と同じモデルへの受渡しのためだけに子を作らない。他モデル親・既存overrideを壊さず、適合する既存担当は継続する。\n- 自動選定のeffortは有効なdefault_effortに固定する。既定はLuna/max、Sol/high、Astra/high。親の参考基準はSol/xhigh。下限・上限はoverride検証用に保持し、毎回のeffort選びに使わない。能力不足は担当を見直し、順番に下位から試す義務はない。\n- 有効な通常Chat経路では、材料・実際のツール・承認・検証環境で完結するまとまった工程は6 Proを最初の主担当候補にする。分析・比較・設計・文案・レビューに加え、条件がそろう実装・テスト・PR作成も含む。難しさだけでCodexのSol/Astraへ固定しない。短い仕事やCodex側の現物を頻繁に照会する仕事は残す。分類と実行許可は別で、契約だけで経路を有効化しない。\n- 委譲は具体的・限定的な完了単位とし、原則同時1件。並列では親にも有用な独立作業が必要。直列の専門委譲は追加価値とホストの許可を確認した時だけ。禁止する上位指示を別CLI・別タスクで迂回せず、条件のためだけに親の仕事を作らない。Chatはrootのみ、子の再委譲は標準にしない。\n- 分類前に難問を解き切らない。問題分割や受入基準の設計も難しければ専門担当へ渡す。元の依頼・重要制約・必要な原資料を保持し、親の誤解を子が訂正できるようにする。子は承認済みの取得・実装・修正・検証・証拠整理まで同じ担当で完結する。\n- model・effortを明示し、要求値と観測値を分ける。全履歴fork・全ログ転送を避け、目的・対象・根拠・合格条件・承認・返却条件を短く渡す。repoでは絶対cwd・worktree・branch/HEAD・対象diffを特定し、不一致を探索やresetで補わせない。\n- 親は重要差分・証拠・受入条件を確認し、有効な検証を再利用する。専門判断の根拠・前提・反例・未解決点を回収し、同じ問題の全面的な解き直しや不要なAstra二重レビューをしない。書込み・マージ・本番反映の承認は別々に守る。\n- 原本全体・必須項目・日付の意味・取得範囲を確認する。HTTP成功・null・0件・OCR空欄を不存在や完了と扱わず、未取得・未確認・判読不能・確認範囲内の記載なしを区別する。画像は実見し、数値測定が必要なら測定する。\n- 矛盾・範囲拡大・設計変更・検証不能・同じ失敗は親へ戻す。不要な差し戻しを減らしても重大な返却は抑えない。権限・接続・材料不足をeffortやモデル変更だけで解決したと扱わない。\n- 観測は方針内容ごとに通常作業3件まで。開始フックの残枠に従い、開始時と最終報告前に同じtask_id・sampling_keyを更新する。子も親の1記録にまとめ、欠測は理由付きnullで閉じる。合計のCodex使用量・Chatのメッセージ・品質・手戻りを分け、割合だけで節約を主張しない。常時計測・全会話探索・測定だけの追加実行はしない。\n\n詳細はmodel-routing-policy.md、分類はmodel-routing-catalog.md、引継ぎはmodel-routing-handoff.mdの必要節だけ読む。通常Chatの利用枠・実行条件はChat経路のreferenceを確認する。上位指示・利用可能機能・承認を優先し、節約や性能の同等性を保証しない。\n", + "policy_intro": "# モデル選定・作業内の委譲(2026-09-24更新)\n\n作者の参考基準は親Sol/xhigh、子Luna/max・Sol/high・Astra/high、適合工程は通常Chatの6 Proを積極的な主担当とする。通常作業と進行を親で完結し、専門工程だけ渡す。同じモデルへの無用な移管はしない。これは性能・節約の実証ではなく比較する運用方針である。\n\n親モデルを自動変更する機能ではない。利用者の親のmodel・effort(Ultra含む)と既存overrideを保持し、次回送信の切替提案はしない。別モデル親でも、能力に合う作業は親・適合する既存担当で進め、専門判断を必要な担当へ渡す。通常の可逆的な作業は承認内で進め、毎回の続行確認を増やさない。\n", + "policy_effort": "### 子のeffortの固定値と互換性\n\n| 担当 | 自動選定に使う有効な固定値 | 役割 |\n| --- | --- | --- |\n| Luna子 | {{models.luna.default_effort}} | 明確な定型工程 |\n| Sol子 | {{models.sol.default_effort}} | 複雑な実装・原因・重要レビュー |\n| Astra子 | {{models.astra.default_effort}} | 難しい設計・重大な不確実性 |\n| 通常Chat 6 Pro | UIの6 Pro | 別経路。Codex effortと換算しない |\n\n固定するのは自動選定の基準であり、合格条件ではない。子の推論を十分使い、親の再指示・再調査を減らす。担当外なら固定値で押し切らず、未解決工程を適任へ直接渡す。Astraでも不十分なら根拠と制約を返し、無意味な再試行や合格基準の引下げはしない。\n\n`min_effort`・`max_effort`は既存設定と部分overrideの範囲検証用として保持し、毎回の自動選定の候補にしない。利用者が明示した有効なoverrideを優先する。親の実設定はこの表で上書きしない。子の再開時も設定維持を推測せず、要求値と取得できた観測値を区別する。利用不能な値に黙って置換しない。low・none・minimal・Ultraは自動選定しない。\n\n[公式サブエージェント仕様](https://learn.chatgpt.com/docs/agent-configuration/subagents)を実行時にも確認する。設定値は実行モデルの証明ではない。\n", "policy_timing": "### 選定のタイミングと基準\n\n短い仕事は現在の適任者で終える。まとまった工程の開始時に、目的・未確定な判断・必要情報・ツール・合格条件・承認範囲を確認する。分類専用のモデルを起動しない。有効なChat経路ならまず適合を検討し、Codex側で同じ分析を先に済ませない。必要な判断能力と現物へのアクセスから担当を直接選ぶ。\n\n新しい矛盾・範囲変更・必要機能の欠如が分かった時だけ再分類する。自信の自己申告や件数だけで決めない。既存担当への差分指示を優先し、effort選択のために細分化しない。\n", "policy_reading": "### 方針を読む範囲\n\n- 解決済みのeffective.mdの要約を入口にし、詳細が必要なら `rg -n \"^### \"` 等で見出しを検索して該当する1節を読む。分類表も必要な分野だけ取得する。通常は1取得20〜40行を目安に出力上限へ収め、長い節は必要部分へ分ける。全文や先頭100行、離れた多数の節をまとめて出すことを既定手順にしない。行数は打切り条件ではなく、必要な条件は不足部分を補って最後まで確認する。\n- 一度確認した有効な条件は同じ作業内で再利用する。担当範囲・前提・方針の変更が分かった時だけ関係する部分を確認し直す。出力が途中で切れた場合は、不足する行範囲だけ補う。ユーザーが文書全体のレビューや編集を依頼した場合は、その範囲を読む。\n- 子には適用する条件を短く渡し、必要なら文書名と該当見出しを添える。既知の条件のために子にも全文を再読させず、適用されるrepo-local guidanceや必須スキルの確認は省略しない。\n", - "policy_classification": "### 作業分類と第一候補\n\n入口の選択は能力、利用環境、引継ぎ負担で決める。モデルの上下だけの一本道にしない。通常Chat経路のopt-in・利用条件・実際の機能がそろう場合、まとまった工程は6 Proを第一候補にする。文案だけでなく、承認されたツールと検証環境で完結する実装・PR作成も候補である。\n\n| 条件 | 第一候補 |\n| --- | --- |\n| 短い確認・整形・局所修正、通常の調査・実装・検証 | 親。基準運用はTerra/{{models.terra.default_effort}} |\n| 明確でまとまった取得・抽出・照合・既定手順 | 委譲が見合えばLuna/{{models.luna.default_effort}} |\n| 材料がそろう比較・分析・要件・設計・文案・レビュー | 有効な通常Chat 6 Proを最初の主担当候補 |\n| 接続先の取得・編集・テスト・PRまで対象と承認が明確 | Chat側の実能力で完結すれば6 Pro。名称だけで不可にしない |\n| Codex側のコード・テスト・新規ログ照会を繰り返す複雑な工程 | Sol/{{models.sol.default_effort}} |\n| 難しい設計前提、重大な不確実性、現物と密な往復が必要 | Astra/{{models.astra.default_effort}} |\n| 原本の網羅・日付・欠測・曖昧な分類 | 親Terra、または原本を実見できる6 Pro。Lunaの機械照合にしない |\n| 承認・必須情報・権限が不足 | 不足を報告。モデル変更だけで補完しない |\n\nChat不適合ならCodex側の適任へ渡す。認証・課金・個人情報・DB移行・本番操作等は影響と不可逆性を評価し、専門判断と人の承認を維持する。詳細な分野別条件は分類表の必要節だけ読む。\n", - "policy_test_image": "### テスト・画像確認を切り分ける基準\n\n既存コマンド・固定環境・機械的な合否判定だけの検証はLuna/{{models.luna.default_effort}}の候補。失敗原因の推定や新規環境構築へ勝手に広げない。仕様から観点を選ぶ通常のテスト設計・画像分析は親Terraが行い、複雑な原因や互換性の判断はSol、難しい前提はAstra。必要な素材とツールがそろう工程はChat候補も検討する。\n\n画像の指定ラベル・見切れの照合でも実際に閲覧する。親の説明やDOMだけで実見したと扱わず、不鮮明・未取得は不明とする。寸法・色値・画素差は測定する。テストは対象revision・未commit差分・環境と成功/失敗/skip/未実行を分け、成功した一部から全体の品質を断定しない。\n", - "policy_originals": "### 原本・必須項目・記載なしを確認する条件\n\n- 既知の場所にある指定ラベルを照合する仕事と、どこに何が記載されているかを網羅的に探す仕事を分ける。後者や日付の意味・例外を判断する工程は、原本を実見できる親Terraまたは有効なChat経路の6 Proを候補にする。実際の見落としや手戻りが判明した条件は、モデル・effort・確認手順の組合せを見直してから同種の未着手作業へ適用する。effort変更の効果を確かめるだけの再実行はしない。\n- 原本の必須項目を確認する時は対象ページ全体を実見し、ヘッダ・フッタ・四隅も確認する。小さい文字や判読しにくい箇所は必要時に拡大する。OCR・抽出テキストだけの空欄を記載なしと扱わない。形式ごとの代表1件で抽出方法を照合してから展開するが、残りの各対象の必須項目確認を省略する根拠にはしない。\n- 値と取得状態を分け、未確認/判読不能/探索したが見つからない/指定範囲を全て確認したうえで記載なしを区別する。確認済みとする範囲と根拠のページ・位置を残し、全件nullや予想外の欠測は取得方法と範囲を再確認する。範囲外の不存在へ一般化しない。\n- 日付は原本上の名称・値・位置を保つ。発行日、利用期間、決済日、取引日を混同せず、依頼された列への対応は合意済みの定義に従う。未定義なら元の値を保存して対応判断を親へ返し、発行日を勝手に取引日へ変換しない。通常の資料整理から税務等の重大判断へ広げない。\n", + "policy_classification": "### 作業分類と第一候補\n\n入口の選択は能力、利用環境、引継ぎ負担で決める。モデルの上下だけの一本道にしない。通常Chat経路のopt-in・利用条件・実際の機能がそろう場合、まとまった工程は6 Proを第一候補にする。文案だけでなく、承認されたツールと検証環境で完結する実装・PR作成も候補である。\n\n| 条件 | 第一候補 |\n| --- | --- |\n| 短い確認・整形・局所修正、通常の調査・実装・検証 | 親。参考基準はSol/xhigh |\n| 明確でまとまった取得・抽出・照合・既定手順 | 委譲が見合えばLuna/{{models.luna.default_effort}} |\n| 材料がそろう比較・分析・要件・設計・文案・レビュー | 有効な通常Chat 6 Proを最初の主担当候補 |\n| 接続先の取得・編集・テスト・PRまで対象と承認が明確 | Chat側の実能力で完結すれば6 Pro。名称だけで不可にしない |\n| Codex側のコード・テスト・新規ログ照会を繰り返す複雑な工程 | 親がSolなら親で完結。独立した並列工程や親が下位モデルならSol/{{models.sol.default_effort}} |\n| 難しい設計前提、重大な不確実性、現物と密な往復が必要 | Astra/{{models.astra.default_effort}} |\n| 原本の網羅・日付・欠測・曖昧な分類 | 親、または原本を実見できる6 Pro。Lunaの機械照合にしない |\n| 承認・必須情報・権限が不足 | 不足を報告。モデル変更だけで補完しない |\n\nChat不適合ならCodex側の適任へ渡す。認証・課金・個人情報・DB移行・本番操作等は影響と不可逆性を評価し、専門判断と人の承認を維持する。詳細な分野別条件は分類表の必要節だけ読む。\n", + "policy_test_image": "### テスト・画像確認を切り分ける基準\n\n既存コマンド・固定環境・機械的な合否判定だけの検証はLuna/{{models.luna.default_effort}}の候補。失敗原因の推定や新規環境構築へ勝手に広げない。仕様から観点を選ぶ通常のテスト設計・画像分析は親が行い、複雑な原因や互換性の判断は親またはSol、難しい前提はAstra。必要な素材とツールがそろう工程はChat候補も検討する。\n\n画像の指定ラベル・見切れの照合でも実際に閲覧する。親の説明やDOMだけで実見したと扱わず、不鮮明・未取得は不明とする。寸法・色値・画素差は測定する。テストは対象revision・未commit差分・環境と成功/失敗/skip/未実行を分け、成功した一部から全体の品質を断定しない。\n", + "policy_originals": "### 原本・必須項目・記載なしを確認する条件\n\n- 既知の場所にある指定ラベルを照合する仕事と、どこに何が記載されているかを網羅的に探す仕事を分ける。後者や日付の意味・例外を判断する工程は、原本を実見できる親または有効なChat経路の6 Proを候補にする。実際の見落としや手戻りが判明した条件は、モデル・effort・確認手順の組合せを見直してから同種の未着手作業へ適用する。effort変更の効果を確かめるだけの再実行はしない。\n- 原本の必須項目を確認する時は対象ページ全体を実見し、ヘッダ・フッタ・四隅も確認する。小さい文字や判読しにくい箇所は必要時に拡大する。OCR・抽出テキストだけの空欄を記載なしと扱わない。形式ごとの代表1件で抽出方法を照合してから展開するが、残りの各対象の必須項目確認を省略する根拠にはしない。\n- 値と取得状態を分け、未確認/判読不能/探索したが見つからない/指定範囲を全て確認したうえで記載なしを区別する。確認済みとする範囲と根拠のページ・位置を残し、全件nullや予想外の欠測は取得方法と範囲を再確認する。範囲外の不存在へ一般化しない。\n- 日付は原本上の名称・値・位置を保つ。発行日、利用期間、決済日、取引日を混同せず、依頼された列への対応は合意済みの定義に従う。未定義なら元の値を保存して対応判断を親へ返し、発行日を勝手に取引日へ変換しない。通常の資料整理から税務等の重大判断へ広げない。\n", "policy_luna_timing": "### Lunaを検討するタイミング\n\nLuna/{{models.luna.default_effort}}へ渡すのは、取得元・手順・必要項目・合格条件が明確で、まとまった工程を代替できる時。親の短い確認を移すだけ、全件を親が先に取得してから再取得させるだけの起動はしない。\n\n指定資料の抽出、一意の局所修正、既存テスト実行の候補を使い、原本の欠測解釈・複雑な日付・原因推定・未知の環境構築は親へ返す。件数が多いことだけを上位モデルや細かな分割の理由にしない。\n", - "policy_retrieval": "### 定型取得の合格条件と担当を見直す境界\n\n- 取得を任せる時は対象ID・出典/API endpoint、必要な項目と型、ページング・対象期間、0件と未取得を見分ける条件を必要な範囲で渡す。既に根拠がある対応表を使い、親が全対象を先に取得する必要はない。取得先を探す通常調査と、原本の網羅確認・意味の区別・曖昧な分類・欠測の解釈はTerra/{{models.terra.default_effort}}を標準とする。\n- 同じ方法で複数件を取る場合、子が最初の代表1件で取得先・応答項目・型・対象を確認してから展開する。200応答でも必須項目がなければ、その値は確認できていない。404・403・省略された項目・null・0・空配列を同じ「なし」にまとめず、取得状態と実値を区別する。親の再取得を必須化せず、親は重要判断や矛盾のある部分の根拠を確認する。\n- 全件nullや予想外の0件、資料にある実体が見つからない場合は、参照先・絞込み条件・取得範囲を一度照合する。明白な抽出箇所の訂正で解決できれば担当内で直し、なお不明・矛盾が残るなら取得済み結果と未取得理由を親へ返す。HTTP成功や検索結果なしだけを、対象の不存在・安全性の根拠にしない。\n- Lunaへの取得依頼から、失効した成果物の復元、新規の依存環境構築や未指定の再ビルド、原因推定、複数履歴の統合へ進む必要が出たら、代替作業へ着手する前に親へ戻す。親が必要性を判断し、通常は親Terra/{{models.terra.default_effort}}が引き取り、前提や能力の境界が変われば対応表でモデルを見直す。検証済みの既存コマンドを指定環境で実行する仕事はLunaの候補に残し、effortは有効な固定値を使う。権限・ログインの問題はモデルを変えれば解決すると扱わない。\n- タイムゾーン・再開区間・親子の所属・累積値を扱う集計処理の新規実装や修正は、定型抽出と分けてTerra/{{models.terra.default_effort}}を標準とし、集計定義の矛盾や前提自体を判断する場合はSol/{{models.sol.default_effort}}を候補にする。Lunaは検証済み処理を指定対象に実行し、決まった項目を返す範囲に使える。期間の集計では日時型、明示したID、開始前からの継続と新規開始、進行中と完了、欠測・resetを分ける。件数やモデル比率は元の各行と親子関係へ戻して確認し、自己申告の合計だけを採用しない。\n", + "policy_retrieval": "### 定型取得の合格条件と担当を見直す境界\n\n- 取得を任せる時は対象ID・出典/API endpoint、必要な項目と型、ページング・対象期間、0件と未取得を見分ける条件を必要な範囲で渡す。既に根拠がある対応表を使い、親が全対象を先に取得する必要はない。取得先を探す通常調査と、原本の網羅確認・意味の区別・曖昧な分類・欠測の解釈は親を標準とする。\n- 同じ方法で複数件を取る場合、子が最初の代表1件で取得先・応答項目・型・対象を確認してから展開する。200応答でも必須項目がなければ、その値は確認できていない。404・403・省略された項目・null・0・空配列を同じ「なし」にまとめず、取得状態と実値を区別する。親の再取得を必須化せず、親は重要判断や矛盾のある部分の根拠を確認する。\n- 全件nullや予想外の0件、資料にある実体が見つからない場合は、参照先・絞込み条件・取得範囲を一度照合する。明白な抽出箇所の訂正で解決できれば担当内で直し、なお不明・矛盾が残るなら取得済み結果と未取得理由を親へ返す。HTTP成功や検索結果なしだけを、対象の不存在・安全性の根拠にしない。\n- Lunaへの取得依頼から、失効した成果物の復元、新規の依存環境構築や未指定の再ビルド、原因推定、複数履歴の統合へ進む必要が出たら、代替作業へ着手する前に親へ戻す。親が必要性を判断し、通常は親が引き取り、前提や能力の境界が変われば対応表でモデルを見直す。検証済みの既存コマンドを指定環境で実行する仕事はLunaの候補に残し、effortは有効な固定値を使う。権限・ログインの問題はモデルを変えれば解決すると扱わない。\n- タイムゾーン・再開区間・親子の所属・累積値を扱う集計処理の新規実装や修正は、定型抽出と分けて親を標準とし、集計定義の矛盾や前提自体を判断する場合はAstra/{{models.astra.default_effort}}を候補にする。Lunaは検証済み処理を指定対象に実行し、決まった項目を返す範囲に使える。期間の集計では日時型、明示したID、開始前からの継続と新規開始、進行中と完了、欠測・resetを分ける。件数やモデル比率は元の各行と親子関係へ戻して確認し、自己申告の合計だけを採用しない。\n", "policy_escalation": "### 親への返却と専門担当への再配分\n\n担当外の判断、設計変更、承認境界、重大な影響、矛盾、検証不能を検出したら根拠と残作業を親へ返す。具体的な修正・妥当な仮説の検証を行っても同じ問題や新情報のない状態が続く時は再評価し、無意味に2回試す義務はない。\n\n親が下位モデルでもSol/Astra、または有効なChat経路の6 Proへ直接渡してよい。順番に一段ずつ上げない。問題分割や合格条件の設計が難しければ、その工程自体を専門担当へ任せる。根拠・前提・反例を回収し、未実施の専門レビューを済みとしない。\n\n権限・接続・ログイン・資料不足は能力不足と区別する。必要な委譲をホストの指示や機能が許さなければ、実施可能な部分と未解決点を報告し、別CLI等で迂回しない。子は親へ返すのを既定とし、Chatへの再委譲はしない。\n", "policy_handoff": "### 専門工程の委譲と引継ぎ\n\n- 通常工程は親で完結し、専門工程を必要な担当へまとめて渡す。親の選択は維持し、重要な専門判断は担当の根拠・前提・反例・未解決点を確認して受け入れる。元の依頼と重要制約を保持し、誤った要約や分割を子が訂正できるようにする。\n- 再読込み・説明・レビューの負担が節約を上回る短い残作業は現在のモデルで完了してよい。新しい根拠なしにモデルを往復させない。\n- 別コンテキストへ実際に委譲する時、目的、決定事項と理由、対象ファイル/URL/branch・worktree、確認済み根拠と未解決点、受入条件・検証方法、既存の承認範囲、親へ戻す条件を必要十分に渡す。既知のOS・権限・sandbox等の制約と、利用可能な検証環境も短く添える。秘密値は含めない。\n- repo作業の引継ぎには絶対cwd、期待するrepo/worktree・branch・HEAD、対象ファイルの未commit差分の有無と識別を既知の範囲で添える。子は最初から指定cwdを明示して、対象repoの場所・branch/HEAD・statusを確認し、既知の差分と照合してから探索・検証・編集する。detached HEADは期待値と一致すれば問題ない。指定先が存在しない、または予期しない不一致が残る場合は根拠を親へ返し、別worktreeを探し回る、reflogから復元する、checkout/resetで合わせる等へ勝手に広げない。Git外の仕事にGit確認を追加する必要はない。\n- 検証結果はコマンドまたは確認方法、cwd・関係する環境、終了コードと結果、実行時刻、検証したrevisionと未commitの対象差分の識別、証拠の場所を必要な範囲で渡す。HEADだけで未commit変更を検証済みと扱わない。対象ファイルのhashまたは秘密を含まない保存diffで同一性を示せばよく、無関係なファイルを集めない。読み取り調査なら出典・取得時刻・必要な結果への参照でよい。\n- 証拠は作業先の既存artifact領域に、秘匿値を除いた要約・必要なログ、または再参照できる既存ツール結果の場所として残す。保存漏れだけを理由に完了したテストを再実行せず、利用できる実行結果を保存・参照する。秘密情報を避けて必要な証拠を残せなければ、欠測と制約を報告する。\n- 親は重要な根拠と差分、検証対象・実行条件・受入条件の一致を確認して結果を再利用する。関連ファイルや条件の変更、結果の失敗・不十分さ、必須チェックの未実施があれば必要な範囲を追加検証する。必須チェックや重要レビューを省略せず、理由なく全件を再実施しない。検証完了後の不要な手直しで再検証を増やさない。\n- 共通の短い記入例は同じ有効方針ディレクトリの `model-routing-handoff.md`。必要な項目だけ使い、ユーザーへの回答に毎回フォームを出さない。\n", - "policy_reasoning": "### 作業内で使う推論強度と実行条件\n\nモデルは担当能力と必要ツールから先に選び、子のeffortは有効なdefault_effortを明示する。既定はLuna/{{models.luna.default_effort}}、Sol/{{models.sol.default_effort}}、Astra/{{models.astra.default_effort}}。Terra/{{models.terra.default_effort}}は親の基準と互換定義で、Terra子は標準ルート外。実際の親設定は変更しない。\n\nモデルIDはLuna={{models.luna.id}}、Terra={{models.terra.id}}、Sol={{models.sol.id}}、Astra={{models.astra.id}}。通常ChatはUIの6 Proを選び、Codex effortへ換算しない。要求した設定と実際の観測を分ける。API単価をCodex契約の消費率へ代入しない。\n\n子の推論・検証を十分に使い、通常の修正も同じ担当で完結する。品質不足を親の全面的な再処理で隠さず、入力・環境・担当の問題を分けて戻す。設定統一のために実行中の子を止めたり、完了済みの仕事を再実行したりしない。\n", - "policy_parent": "### 親会話の選択と専門判断\n\n親の選択は利用者、承認済み工程内の担当選定はAIが行う。基準運用の親Terraは受付専用ではなく、通常の調査・実装・検証・進行を直接行う。別モデル親を選んだ場合も設定は維持する。\n\n親は進行と結果の取りまとめを担うが、すべての専門判断を独力で再証明する役ではない。専門担当の根拠・前提・反例・検証結果を合格条件と照合する。自己申告だけで承認せず、矛盾・重大な未解決点は担当へ返す。必要な人の承認を代替しない。\n\n標準サブエージェントの実行時機能を確認し、model/effortを明示する。親の保存設定・service_tier・フック信頼・認証を変更しない。追加プラグイン、モデルAPI、別CLIセッションで能力や制約を迂回しない。\n", - "policy_hierarchy": "### 並列分担と直列の専門委譲\n\n既定は親から担当へ1段、同時に委譲する工程はChatを含め原則1件。通常のTerra向け工程は親で完結し、Terra子を標準にしない。既存の他モデル親やoverrideを保持し、必要な能力に合わせる。大きな文脈分離のためのTerra子は将来の明示例外候補で、初期比較に混ぜない。\n\n並列分担では、子の工程が独立し、親にも別の有用な作業が必要。直列の専門委譲では、必要な判断能力や別の利用環境による追加価値、まとまった合格条件、引継ぎの妥当性を示し、ホストの上位指示・機能が直列委譲を許すことを確認する。許可不明は許可済みにしない。上位指示が親の独立作業を必須にする場合はその条件を優先し、架空の親作業や別CLIで迂回しない。\n\n子へは取得・処理/実装・承認済み通常修正・検証・証拠整理・報告までを完了単位として渡す。親は委譲した探索・実装を先回りしない。独立作業が完了したら適切に待機し、頻繁な状態取得や進捗再報告を増やさない。必要なユーザーへの連絡は維持する。\n\n子からの再委譲は標準にせず親へ返す。Chatはrootだけから利用し、深い階層や伝言係を作らない。単純に直列化・階層化したことを節約の証拠としない。\n", - "policy_economy": "### 子への割当てと節約の条件\n\n節約は「子の消費が小さい」ことではなく、親から減らせた処理が、子の処理・引継ぎ・追加検収・手戻りを上回るかで判断する。子のeffortはまず固定し、開始モデル・担当範囲・Chatへの分類による差を比較する。小さな工程を移して親子双方の説明や再読を増やさない。\n\n有効な6 Pro経路は適合工程の主要担当として使い、最後の確認だけに温存しない。一方、利用率・メッセージ消化を目標にせず、同じ分析をAstraで全面的にやり直さない。高影響、矛盾、前提変更、証拠不足に追加レビューを絞る。\n\n同程度の仕事・同じ合格条件で、Astra親の従来構成とTerra親の新構成を比較する。短い通常仕事はTerra単独も基準にする。Codex親子合計・Chatメッセージ・追加クレジット・品質・人の修正を分ける。モデルの割合は絶対量の削減の証拠ではなく、取得不能な使用量は理由付き不明とする。測定だけの追加仕事は作らない。\n", + "policy_reasoning": "### 作業内で使う推論強度と実行条件\n\nモデルは担当能力と必要ツールから先に選び、子のeffortは有効なdefault_effortを明示する。既定はLuna/{{models.luna.default_effort}}、Sol/{{models.sol.default_effort}}、Astra/{{models.astra.default_effort}}。親の参考基準はSol/xhigh。実際の親設定は変更しない。\n\nモデルIDはLuna={{models.luna.id}}、Sol={{models.sol.id}}、Astra={{models.astra.id}}。通常ChatはUIの6 Proを選び、Codex effortへ換算しない。要求した設定と実際の観測を分ける。API単価をCodex契約の消費率へ代入しない。\n\n子の推論・検証を十分に使い、通常の修正も同じ担当で完結する。品質不足を親の全面的な再処理で隠さず、入力・環境・担当の問題を分けて戻す。設定統一のために実行中の子を止めたり、完了済みの仕事を再実行したりしない。\n", + "policy_parent": "### 親会話の選択と専門判断\n\n親の選択は利用者、承認済み工程内の担当選定はAIが行う。基準運用の親Solは受付専用ではなく、通常の調査・実装・検証・進行を直接行う。別モデル親を選んだ場合も設定は維持する。\n\n親は進行と結果の取りまとめを担うが、すべての専門判断を独力で再証明する役ではない。専門担当の根拠・前提・反例・検証結果を合格条件と照合する。自己申告だけで承認せず、矛盾・重大な未解決点は担当へ返す。必要な人の承認を代替しない。\n\n標準サブエージェントの実行時機能を確認し、model/effortを明示する。親の保存設定・service_tier・フック信頼・認証を変更しない。追加プラグイン、モデルAPI、別CLIセッションで能力や制約を迂回しない。\n", + "policy_hierarchy": "### 並列分担と直列の専門委譲\n\n既定は親から担当へ1段、同時に委譲する工程はChatを含め原則1件。通常工程は親で完結し、同モデルへの無用な移管はしない。既存の他モデル親やoverrideを保持し、必要な能力に合わせる。親がSolの場合、Sol子は独立した並列工程などの具体的な追加価値がある時だけ作る。\n\n並列分担では、子の工程が独立し、親にも別の有用な作業が必要。直列の専門委譲では、必要な判断能力や別の利用環境による追加価値、まとまった合格条件、引継ぎの妥当性を示し、ホストの上位指示・機能が直列委譲を許すことを確認する。許可不明は許可済みにしない。上位指示が親の独立作業を必須にする場合はその条件を優先し、架空の親作業や別CLIで迂回しない。\n\n子へは取得・処理/実装・承認済み通常修正・検証・証拠整理・報告までを完了単位として渡す。親は委譲した探索・実装を先回りしない。独立作業が完了したら適切に待機し、頻繁な状態取得や進捗再報告を増やさない。必要なユーザーへの連絡は維持する。\n\n子からの再委譲は標準にせず親へ返す。Chatはrootだけから利用し、深い階層や伝言係を作らない。単純に直列化・階層化したことを節約の証拠としない。\n", + "policy_economy": "### 子への割当てと節約の条件\n\n節約は「子の消費が小さい」ことではなく、親から減らせた処理が、子の処理・引継ぎ・追加検収・手戻りを上回るかで判断する。子のeffortはまず固定し、開始モデル・担当範囲・Chatへの分類による差を比較する。小さな工程を移して親子双方の説明や再読を増やさない。\n\n有効な6 Pro経路は適合工程の主要担当として使い、最後の確認だけに温存しない。一方、利用率・メッセージ消化を目標にせず、同じ分析をAstraで全面的にやり直さない。高影響、矛盾、前提変更、証拠不足に追加レビューを絞る。\n\n同程度の仕事・同じ合格条件で、Astra親の従来構成とSol親の新構成を比較する。短い通常仕事は親単独も基準にする。Codex親子合計・Chatメッセージ・追加クレジット・品質・人の修正を分ける。モデルの割合は絶対量の削減の証拠ではなく、取得不能な使用量は理由付き不明とする。測定だけの追加仕事は作らない。\n", "policy_observation": "### 利用負担の観測\n\n- 品質を保ちながら契約の利用負担と総トークンを抑えることが目的。速度、モデル比率、effortの均等化を成績にせず、引継ぎ・確認・手直しを含めて評価する。少ない総トークンと低い契約負担を同一視しない。\n- 開始時フックの観測状態を使い、方針内容ごとに通常作業3件までを対象とする。設定修正・監査・実行確認・短い質問は算入しない。残枠があれば、まとまった通常作業の着手時に `observation start` で予約する。記録先と具体的なCLIはフックとスキルの `references/observation.md` を参照。プラグイン版だけの変更では観測を再開しない。\n- startが返すsampling_keyをtask_idと一組で保持する。task_idはルート親と作業開始turnなどから決めた安定したキー。同じ作業の再開・子・孫を別の通常作業として数えない。起動時はtask_id、直接親/root、返却された子task名とID、要求model/effort・理由、開始時刻と起動結果の参照を、既存の引継ぎと一緒に控える。task名をUUIDとして扱わず、取得不能なIDは理由付きnull。子には同じtask_id・sampling_keyと結果の返却先を渡す。\n- 子は担当範囲の検証結果・手直し・実行情報を完了報告に添える。親は新規起動と再開turnを分けて親子の一組の記録へまとめ、最終報告前に `observation complete` で更新する。子の自己申告や親の現在設定を実行値の証明にせず、要求値と根拠付きの観測値を分離する。完了後の短い修正も同じ記録を更新する。\n- 記録には対象範囲、実行状態、親子の対応、取得できた使用量と証拠参照、検証結果、手直しを含める。取得できた項目は残し、不足項目はnullと理由にする。進行中の親turnの最終使用量は未確定のまま記録を閉じてよい。記録完了は作業全体の実測が揃ったことを意味しない。後の同じタスクの再開で既存の完了データを取得できる時だけ追記し、取得のためにタスク・子・再検証を起動しない。\n- 完了turnの利用量は単一ログ内で最初の応答より前の開始基準と完了値が対応し、対象区間に欠測・reset・必須カウンターの不整合がない場合だけ全量として扱う。最初の応答後の累積値から引くと初回分が抜ける。途中区間はpartial_turnとして全量と区別し、未完了の値を完了量へ含めない。cached inputはinputの内数、reasoningはoutputの内数として二重加算しない。\n- このプラグインは会話ログ・DB・認証情報を収集しない。取得可能な実行結果か、許可済みの指定ID・turnに絞った実行メタデータを使う。全履歴の探索、暗号文の複製・文字数計測、測定器の大規模な修復はしない。既存結果を再利用し、補助取得は一度で打ち切り、不足は理由を残す。\n- 同じ条件の比較基準と作業全体の親子の測定範囲が揃わなければ節約率は不明。親子の包含範囲が未確認なら合算しない。API料金やアカウント共通の週次使用率を個別作業へ換算しない。操作件数だけで不要な往復とは判断せず、同じrevision・方法・対象を理由なく繰り返した証拠を確認する。\n- 台帳の破損や権限不足は観測状態unknownとして扱い、空の台帳で上書きしない。元の仕事と分担方針の適用は続け、観測だけを理由に停止しない。通常3件の枠を使い切ったら新規記録を作らず、既存記録の不足だけを対象タスクの通常進行中に補う。\n", - "policy_scope": "### 保存先・適用範囲\n\n- 同じ有効方針ディレクトリのeffective.mdを要約、この文書を詳細分類の正本とする。有効かつ信頼済みのプラグインフックで開始・再開時に読み込む。既存セッションは再読込みが必要な場合があり、別PC・別CODEX_HOME・クラウド環境への自動同期は前提にしない。より優先される指示・適用されるプロジェクト指示に従う。\n- 分類は運用開始時の基準。ユーザーの修正指示や実測で調整し、モデル更新・利用可否変更時は公式情報と現在の環境を確認する。具体例は `model-routing-catalog.md` に集約し、この文書の一般条件と矛盾させない。繰り返す誤分類や手戻りが分かったら該当する分類を修正・統合し、一度きりの事例のために毎回項目を増やさない。\n- 参考:OpenAI Docsのモデル一覧 https://developers.openai.com/api/docs/models 、effort・Max・Ultraの説明 https://learn.chatgpt.com/docs/models?surface=app 、共通指示の仕様 https://learn.chatgpt.com/docs/agent-configuration/agents-md 、標準のサブエージェント仕様 https://learn.chatgpt.com/docs/agent-configuration/subagents (2026-09-13確認)。\n" + "policy_scope": "### 保存先・適用範囲\n\n- 同じ有効方針ディレクトリのeffective.mdを要約、この文書を詳細分類の正本とする。有効かつ信頼済みのプラグインフックで開始・再開時に読み込む。既存セッションは再読込みが必要な場合があり、別PC・別CODEX_HOME・クラウド環境への自動同期は前提にしない。より優先される指示・適用されるプロジェクト指示に従う。\n- 分類は運用開始時の基準。ユーザーの修正指示や実測で調整し、モデル更新・利用可否変更時は公式情報と現在の環境を確認する。具体例は `model-routing-catalog.md` に集約し、この文書の一般条件と矛盾させない。繰り返す誤分類や手戻りが分かったら該当する分類を修正・統合し、一度きりの事例のために毎回項目を増やさない。\n- 参考:OpenAI Docsのモデル一覧 https://developers.openai.com/api/docs/models 、GPT-6系の更新 https://developers.openai.com/api/docs/changelog 、effort・Max・Ultraの説明 https://learn.chatgpt.com/docs/models?surface=app 、共通指示の仕様 https://learn.chatgpt.com/docs/agent-configuration/agents-md 、標準のサブエージェント仕様 https://learn.chatgpt.com/docs/agent-configuration/subagents (モデル一覧・更新履歴は2026-09-24確認)。\n" } } diff --git a/plugins/codex-task-routing/defaults/provenance.json b/plugins/codex-task-routing/defaults/provenance.json index c8d79ed..84aaaa9 100644 --- a/plugins/codex-task-routing/defaults/provenance.json +++ b/plugins/codex-task-routing/defaults/provenance.json @@ -1,5 +1,5 @@ { - "policy_revision": "2026-09-15-terra-chat-fixed", + "policy_revision": "2026-09-24-gpt6-routing", "source_sha256": { "AGENTS.md": "bd2584d350c204f1ffbc8c005c084fc34360acddf8812557504350820e34be42", "model-routing-policy.md": "9335ccec4516bc71b68d01f9304d6e71d3b5efcd77a210476571cd7d060c476c", @@ -14,12 +14,13 @@ "parameterize model ids and supported effort slots; default roundtrip verified", "bounded observation lifecycle with explicit missing usage and unchanged model defaults", "0.6.0 conditional Chat-first suitability decision in catalog; native model and effort defaults unchanged", - "0.8.0 intentional policy change: Terra parent reference, fixed effective efforts, capability-based Chat-first and host-gated serial specialists; historical source hashes retained" + "0.8.0 intentional policy change: Terra parent reference, fixed effective efforts, capability-based Chat-first and host-gated serial specialists; historical source hashes retained", + "0.9.0 intentional policy change: GPT-6 Luna/Sol defaults, Sol/xhigh parent reference, inactive legacy terra override key; historical source hashes retained" ], "source_policy_revision": "2026-09-14", "rendered_sha256": { - "model-routing-policy.md": "45758dc504e64213e4bc2277a288d58c24e48ad194ae150153965c593a53958e", - "model-routing-catalog.md": "9405d71f6f1c1c5c908ccee8ac88e948d54eb5b453816a3baed2cd8dc639d70a", - "model-routing-handoff.md": "9d9a33295c2fa06e6593a3b1350017335ac91d70f26294417747c34cfc545e06" + "model-routing-policy.md": "a4cbf7421615ed926154931caa85988db1801df58ae3fe1261ae20f060ee7737", + "model-routing-catalog.md": "d58efec8ceb5df0f5d084cde53fcb1feec9d934e4318535af253a959e6e9a0ac", + "model-routing-handoff.md": "5564f3236514162aae5a6d862f177558ca1757d60a94c141c5d8eb346db575ad" } } diff --git a/plugins/codex-task-routing/defaults/templates/effective.md b/plugins/codex-task-routing/defaults/templates/effective.md index c130df6..89cf5f0 100644 --- a/plugins/codex-task-routing/defaults/templates/effective.md +++ b/plugins/codex-task-routing/defaults/templates/effective.md @@ -7,7 +7,6 @@ | Luna子 | {{models.luna.id}} | {{models.luna.default_effort}} | | Sol子 | {{models.sol.id}} | {{models.sol.default_effort}} | | Astra子 | {{models.astra.id}} | {{models.astra.default_effort}} | -| Terra(親の基準・互換定義、子は標準外) | {{models.terra.id}} | {{models.terra.default_effort}} | | 通常Chat | UIで6 Pro | 別経路・Codex effortと換算しない | {{principles.summary}} diff --git a/plugins/codex-task-routing/defaults/templates/model-routing-catalog.md b/plugins/codex-task-routing/defaults/templates/model-routing-catalog.md index c1d20a6..a821696 100644 --- a/plugins/codex-task-routing/defaults/templates/model-routing-catalog.md +++ b/plugins/codex-task-routing/defaults/templates/model-routing-catalog.md @@ -1,6 +1,6 @@ # 作業分類表 — 固定effortと通常Chat優先 -この表は担当候補であり、親の設定変更・送信・外部書込みの許可ではない。短い通常作業は親で終える。基準運用は親Terra/{{models.terra.default_effort}}、子はLuna/{{models.luna.default_effort}}・Sol/{{models.sol.default_effort}}・Astra/{{models.astra.default_effort}}。Terra子は標準ルート外。既存overrideの有効な固定値を使う。 +この表は担当候補であり、親の設定変更・送信・外部書込みの許可ではない。短い通常作業は親で終える。参考基準は親Sol/xhigh、子はLuna/{{models.luna.default_effort}}・Sol/{{models.sol.default_effort}}・Astra/{{models.astra.default_effort}}。既存overrideの有効な固定値を使う。 ## 選定の順序 @@ -16,18 +16,18 @@ | 公開情報・承認済み接続先の調査・比較 | 実取得ツールが使える6 Proを優先。出典・対象版・日付・確認範囲・未取得を返す | | 要件整理、分析、設計、矛盾・反例の検討 | 6 Proを主担当候補。利用不能なら通常は親、複雑な整合はSol、難しい前提はAstra | | 文案・翻訳・報告書・資料レビュー | まとまった工程は6 Pro。短い整形は親。高影響の表現は根拠と承認を確認 | -| 帳票の網羅確認、日付や欠測の解釈 | 原本を実見できる親Terraまたは6 Pro。OCR空欄だけで記載なしとしない | +| 帳票の網羅確認、日付や欠測の解釈 | 原本を実見できる親または6 Pro。OCR空欄だけで記載なしとしない | | 認証・課金・税務・個人情報に関する判断 | 事実取得と重要判断を分離。適任の専門判断・最新の公式根拠・必要な人の承認を省略しない | ## 実装・運用・PR | 作業条件 | 候補と合格条件 | | --- | --- | -| 一意の局所修正、通常の実装・検証 | 親Terraで完結。少量の仕事を別のTerraへ渡さない | +| 一意の局所修正、通常の実装・検証 | 親で完結。少量の仕事を同モデル子へ渡さない | | 既知手順のまとまった取得・処理・テスト実行 | Luna。異常原因の推定・未知の環境構築は親へ返す | | Chat側にrepoの取得・編集・テスト・PR作成の実機能がある | 明示承認された工程を6 Proの候補にする。Chatだから実装不可と決めない | | 分析とローカル実行が分離できる | Codexで証拠取得→6 Proで判断→親または専門子で実装・検証。細かい往復を増やさない | -| Codex側の編集・テスト・新規ログ確認が密に反復する | 複雑な工程はSol。難しい設計前提・重大な不確実性はAstra | +| Codex側の編集・テスト・新規ログ確認が密に反復する | 親がSolなら親で完結。独立した並列工程や親が下位モデルならSol。難しい設計前提・重大な不確実性はAstra | | DB移行、本番変更、セキュリティ境界、不可逆な操作 | 専門判断・復旧条件・受入証拠・明示承認を確認。PR作成はマージや配備の許可ではない | | 必要な実機・接続・権限がない | 未検証範囲を明示して返す。別環境のテストを実機検証と扱わない | diff --git a/plugins/codex-task-routing/defaults/templates/model-routing-handoff.md b/plugins/codex-task-routing/defaults/templates/model-routing-handoff.md index b7fcf84..93bfc2f 100644 --- a/plugins/codex-task-routing/defaults/templates/model-routing-handoff.md +++ b/plugins/codex-task-routing/defaults/templates/model-routing-handoff.md @@ -4,7 +4,7 @@ ## 共通 -目的/担当と固定effort/対象と未解決点/既知の根拠/合格条件/許可済み操作/返却条件を渡す。並列なら親の独立作業、直列なら専門委譲の追加価値とホストが許す根拠を添える。通常作業は親Terra、Terra子は標準外。子は承認済みの通常修正・検証・証拠整理まで同じ担当で進める。 +目的/担当と固定effort/対象と未解決点/既知の根拠/合格条件/許可済み操作/返却条件を渡す。並列なら親の独立作業、直列なら専門委譲の追加価値とホストが許す根拠を添える。通常作業は親で完結する。子は承認済みの通常修正・検証・証拠整理まで同じ担当で進める。 ## Codex専門担当 diff --git a/plugins/codex-task-routing/scripts/routing.py b/plugins/codex-task-routing/scripts/routing.py index 8306ee8..435bc26 100644 --- a/plugins/codex-task-routing/scripts/routing.py +++ b/plugins/codex-task-routing/scripts/routing.py @@ -77,6 +77,7 @@ WINDOWS_TRANSIENT_RENAME_WINERRORS = frozenset({5, 32, 33}) MODEL_FIELDS = ("id", "min_effort", "default_effort", "max_effort") +# The terra key remains for schema-v1 override compatibility; it is never routed. REQUIRED_MODEL_ROLES = ("luna", "terra", "sol", "astra") SAFE_MODEL_ID = re.compile(r"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$") SAFE_TOKEN = re.compile( @@ -807,7 +808,7 @@ def hook_payload( [ f"Codex Task Routing manifest {policy.version}; policy hash {policy.content_hash}.", f"Configured child-routing reference only; it does not change the parent: {model_matrix}.", - "Terra child is outside the standard route. Follow the parent-specified scope and acceptance criteria; return specialist questions to the parent rather than re-delegating, and distinguish unverified work from confirmed results.", + "Do not create a child solely to hand off ordinary parent work. Follow the parent-specified scope and acceptance criteria; return specialist questions to the parent rather than re-delegating, and distinguish unverified work from confirmed results.", f"Effective policy: {references['effective.md']}", "Detailed policy references:", detail_refs, diff --git a/plugins/codex-task-routing/skills/task-routing/SKILL.md b/plugins/codex-task-routing/skills/task-routing/SKILL.md index 983e620..fb0cc25 100644 --- a/plugins/codex-task-routing/skills/task-routing/SKILL.md +++ b/plugins/codex-task-routing/skills/task-routing/SKILL.md @@ -9,7 +9,7 @@ Avoid a classifier-only model call or repeated full tool inventories. For a subs For an enabled normal Chat route, evaluate Chat suitability before choosing a native child for each substantial independent work unit; users need not mention this plugin again. Prefer 6 Pro for work that can finish with approved materials and verified tools when preparation, waiting, acceptance and rework are proportionate. Use 6 Pro as the initial main specialist, including implementation, testing and PR creation when the actual tools, scoped write approvals and verification environment suffice. Split analysis from Codex-only execution when useful. Small work or repeated inspection of Codex-only resources stays in Codex. Use the route reference's selection and handoff checks; enabling Chat does not grant data sharing or tool permissions. -Use the effective policy already supplied by this plugin's start hook. Keep the user's chosen parent model and effort. It authorizes choosing suitable standard subagents only within the user's task, available tools, and higher-priority instructions. The reference parent is Terra/xhigh and does normal work itself. Do not normally create a Terra child. Automatic child effort uses the effective default_effort: Luna/max, Sol/high, Astra/high in bundled defaults; preserve explicit overrides. Parallel delegation needs useful independent parent work. Serial specialist delegation requires concrete added value and explicit host permission; do not invent parent work or bypass higher-priority restrictions. Short work stays with the current capable agent. +Use the effective policy already supplied by this plugin's start hook. Keep the user's chosen parent model and effort. It authorizes choosing suitable standard subagents only within the user's task, available tools, and higher-priority instructions. The reference parent is Sol/xhigh and does normal work itself. Do not create a child solely to hand off ordinary parent work. Automatic child effort uses the effective default_effort: GPT-6 Luna/max, GPT-6 Sol/high, GPT-6 Astra/high in bundled defaults; preserve explicit overrides. Parallel delegation needs useful independent parent work. Serial specialist delegation requires concrete added value and explicit host permission; do not invent parent work or bypass higher-priority restrictions. Short work stays with the current capable agent. When the hook explicitly reports the opt-in ChatGPT Chat route enabled, the root parent may use [normal Chat routing](references/chatgpt.md) as the user-enabled exception for substantial work supported by the actual Chat capabilities and approvals, including research, design, review, implementation and PR creation. Read that reference and [usage/authorization gates](references/chat-limits.md) before dispatch. Run chat_plan.py with fresh --live observations; candidate classification never authorizes a dispatch. Contract price, enabled settings or installed tools do not establish permission for automatic extraction. Missing transport authorization blocks dispatch. Use normal Chat with the required UI model `6 Pro`, never Work or a model API, and match request IDs and input hashes. The default `browser-temporary` transport uses supported Browser operations to create one Temporary Chat, send the real request once, and read the final answer; never call `send_message_to_thread` for that Temporary Chat. `codex-app-tools` remains a legacy transport only when an existing setting explicitly selects it. The helper prepares and validates local data only. Missing capability or unknown model blocks this route. Do not route from subagents. If the opt-in is absent or invalid, retain the standard Codex child policy. diff --git a/plugins/codex-task-routing/skills/task-routing/references/chat-limits.md b/plugins/codex-task-routing/skills/task-routing/references/chat-limits.md index 86d5f82..bddc9c3 100644 --- a/plugins/codex-task-routing/skills/task-routing/references/chat-limits.md +++ b/plugins/codex-task-routing/skills/task-routing/references/chat-limits.md @@ -18,4 +18,4 @@ 送信直前にroot、opt-in、許可済み転送、surface、6 Pro、制限通知、今回の操作の承認を確認し、chat_plan.pyの--liveへ新しい観測だけを渡します。これは入力された主張の照合であり、アカウント状態の自動取得や残量の証明ではありません。モデル表示は送信前後で確認し、実行backend IDは取得不能なら不明です。 -同程度の仕事・同じ合格条件で、Astra親の従来構成、Terra親でChatなし、Terra親で6 Proを優先する構成を比較します。通常作業と難しい判断は分け、対象版と検証環境をそろえます。まず子のeffortとChat適合条件をそろえ、親変更の差を分けます。既存の通常作業3件の観測枠を使い、親子合計のCodex使用量、Chatメッセージ、初回受入、手戻り、人の修正、重大な見落としを区別します。追加の比較情報は短い検証記録として残し、未対応の台帳キーを捏造しません。欠測理由を保持し、サンプル完了と比較データの充足を混同せず、モデル別割合だけで節約率を主張しません。 +同程度の仕事・同じ合格条件で、Astra親の従来構成、Sol親でChatなし、Sol親で6 Proを優先する構成を比較します。通常作業と難しい判断は分け、対象版と検証環境をそろえます。まず子のeffortとChat適合条件をそろえ、親変更の差を分けます。既存の通常作業3件の観測枠を使い、親子合計のCodex使用量、Chatメッセージ、初回受入、手戻り、人の修正、重大な見落としを区別します。追加の比較情報は短い検証記録として残し、未対応の台帳キーを捏造しません。欠測理由を保持し、サンプル完了と比較データの充足を混同せず、モデル別割合だけで節約率を主張しません。 diff --git a/plugins/codex-task-routing/skills/task-routing/references/chatgpt.md b/plugins/codex-task-routing/skills/task-routing/references/chatgpt.md index 0094ae4..752c00d 100644 --- a/plugins/codex-task-routing/skills/task-routing/references/chatgpt.md +++ b/plugins/codex-task-routing/skills/task-routing/references/chatgpt.md @@ -6,7 +6,7 @@ ## 選定 -有効なroot経路では、まとまった工程を担当へ渡す前に6 Proを最初の主担当候補として評価します。難問だけでなく通常の分析・比較・文書業務も対象にし、Terra/Solで同じ思考を先に済ませたり、最後の確認だけに温存したりしません。利用回数や枠の消化自体は目標にしません。 +有効なroot経路では、まとまった工程を担当へ渡す前に6 Proを最初の主担当候補として評価します。難問だけでなく通常の分析・比較・文書業務も対象にし、Codex側で同じ思考を先に済ませたり、最後の確認だけに温存したりしません。利用回数や枠の消化自体は目標にしません。 | 条件 | 候補と受入 | | --- | --- | @@ -14,7 +14,7 @@ | 公開情報・承認済み接続先の調査 | 必要操作・対象権限を確認して6 Pro。出典・版・鮮度・範囲を回収 | | Chat側にrepo取得・編集・テスト・PR作成の機能がそろう | 明示承認された工程は6 Proの候補。利用環境と検証範囲を明示し、Chatだから実装不可と決めない | | 分析と現物処理を分離できる仕事 | Codexで証拠取得→6 Proで分析→適切な担当で実行・検証 | -| 短い仕事、Codex側の現物へ頻繁な照会、準備が過大、機密を渡せない | 親Terraで完結またはCodexの専門子。具体的な除外理由を残す | +| 短い仕事、Codex側の現物へ頻繁な照会、準備が過大、機密を渡せない | 親で完結またはCodexの専門子。具体的な除外理由を残す | 通常Chatの接続と親Codexの接続は別です。実装時はrepo・base/head・対象範囲・許可操作・テスト環境・合格条件を明示します。機能の提供、対象権限、今回の承認を分け、権限確認だけの無承認の試験書込みをしません。PR作成はマージ・本番反映の許可ではありません。必要な実機がなければ未検証と報告し、別環境の成功で代替しません。 diff --git a/plugins/codex-task-routing/skills/task-routing/references/configuration.md b/plugins/codex-task-routing/skills/task-routing/references/configuration.md index d9372d5..cf5481e 100644 --- a/plugins/codex-task-routing/skills/task-routing/references/configuration.md +++ b/plugins/codex-task-routing/skills/task-routing/references/configuration.md @@ -8,9 +8,9 @@ python plugins/codex-task-routing/scripts/routing.py --config examples/overrides ## モデルとeffort -上書きに含めたフィールドだけを変更します。`schema_version` は1。役割キーは `luna`、`terra`、`sol`、`astra`。各役割は `id`、`min_effort`、`default_effort`、`max_effort` を持ちます。別のモデルを設定しても役割ラベルは変えません。 +上書きに含めたフィールドだけを変更します。`schema_version` は1。役割キーは `luna`、`sol`、`astra`。旧`terra`キーは既存overrideの読取り互換用に受理。各役割は `id`、`min_effort`、`default_effort`、`max_effort` を持ちます。別のモデルを設定しても役割ラベルは変えません。 -effortの設定値は `medium`、`high`、`xhigh`、`max` で、下限≤標準≤上限が必要です。自動選定には有効なdefault_effortだけを固定値として使います。min_effort/max_effortは互換性とoverrideの範囲検証用で、毎回の候補ではありません。Terra定義は互換性維持のため残し、Terra子を標準にしません。親の実設定には適用しません。値が妥当でも、実際のモデルがそのeffortを受け付けるかは実行時の機能で確認します。 +effortの設定値は `medium`、`high`、`xhigh`、`max` で、下限≤標準≤上限が必要です。自動選定には有効なdefault_effortだけを固定値として使います。min_effort/max_effortは互換性とoverrideの範囲検証用で、毎回の候補ではありません。旧`terra`定義は互換性維持のため残しますが、子の選定に使いません。旧キーを含め、この設定は親の実設定に適用しません。値が妥当でも、実際のモデルがそのeffortを受け付けるかは実行時の機能で確認します。 未定義キー、重複したJSONキー、型違い、空文字、無効範囲、解決できないテンプレートはエラーとして扱います。設定内容の誤りを既定値への暗黙の切戻しで隠しません。 @@ -38,7 +38,7 @@ effortの設定値は `medium`、`high`、`xhigh`、`max` で、下限≤標準 | policy_observation | 限定的な観測 | | policy_scope | 保存先と適用範囲 | -文章中では `{{models.terra.default_effort}}` 等の参照を使えます。未知参照や循環は拒否されます。モデル・effortの変更を本文へ反映するため、関連する参照を残してください。 +文章中では `{{models.sol.default_effort}}` 等の参照を使えます。未知参照や循環は拒否されます。モデル・effortの変更を本文へ反映するため、関連する参照を残してください。 **構文検証は原則の意味の矛盾まで保証しません。** 要約を変える場合は関連する詳細節も確認します。通常はAIに変更したい原則を伝え、関連節の差分をまとめて作り、renderした結果を確認します。分類表に影響する大きな運用変更は、パッケージ側の変更として版を分ける方が管理しやすくなります。 diff --git a/plugins/codex-task-routing/skills/task-routing/references/observation-example.json b/plugins/codex-task-routing/skills/task-routing/references/observation-example.json index bf7d648..8acd426 100644 --- a/plugins/codex-task-routing/skills/task-routing/references/observation-example.json +++ b/plugins/codex-task-routing/skills/task-routing/references/observation-example.json @@ -47,12 +47,12 @@ "run_id": "019c0000-0000-7000-8000-000000000001", "run_id_reason": null, "requested": { - "model": "gpt-5.6-terra", + "model": "gpt-6-sol", "effort": "xhigh", "reason": null }, "observed": { - "model": "gpt-5.6-terra", + "model": "gpt-6-sol", "effort": "xhigh", "evidence_ref": "example:existing-runtime-settings", "reason": null diff --git a/scripts/check_package.py b/scripts/check_package.py index 1342800..a01964b 100644 --- a/scripts/check_package.py +++ b/scripts/check_package.py @@ -30,11 +30,14 @@ def check(): assert hook['command'] == "python -c \"import os,runpy;runpy.run_path(os.path.join(os.environ['PLUGIN_ROOT'],'scripts','routing.py'),run_name='__main__')\" hook" assert hook['timeout'] <= 10 config = json.loads((PLUGIN / 'defaults/config.json').read_text(encoding='utf-8')) - assert config['policy_revision'] == '2026-09-15-terra-chat-fixed' + assert config['policy_revision'] == '2026-09-24-gpt6-routing' assert config['models']['luna']['default_effort'] == 'max' - assert config['models']['terra']['default_effort'] == 'xhigh' + assert config['models']['terra']['id'] == 'gpt-6-sol' # legacy override key, never routed assert config['models']['sol']['default_effort'] == 'high' assert config['models']['astra']['default_effort'] == 'high' + assert config['models']['luna']['id'] == 'gpt-6-luna' + assert config['models']['sol']['id'] == 'gpt-6-sol' + assert config['models']['astra']['id'] == 'gpt-6-astra' forbidden = re.compile(r'(?:[A-Za-z]:[/\\]Users[/\\](?!<|\$)[A-Za-z0-9_-]+)|(?:-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----)|(?:gh[pousr]_[A-Za-z0-9]{30,})') for path in PLUGIN.rglob('*'): if not path.is_file() or '__pycache__' in path.parts: diff --git a/scripts/smoke_native.py b/scripts/smoke_native.py index 6dff2ab..8aba454 100644 --- a/scripts/smoke_native.py +++ b/scripts/smoke_native.py @@ -39,7 +39,7 @@ def main(): override = home / PLUGIN_NAME / "overrides.json" override.parent.mkdir() override.write_text(json.dumps({"schema_version": 1, "models": { - "terra": {"default_effort": "high"}}}), encoding="utf-8") + "sol": {"default_effort": "xhigh"}}}), encoding="utf-8") chat_config = home / PLUGIN_NAME / "chatgpt.json" before = {p: p.read_bytes() for p in (guidance, override)} env = {**os.environ, "CODEX_HOME": str(home), diff --git a/scripts/smoke_updater.py b/scripts/smoke_updater.py index 7cd493f..9a7f465 100644 --- a/scripts/smoke_updater.py +++ b/scripts/smoke_updater.py @@ -69,7 +69,7 @@ def make_home(name, ref): (home / 'config.toml').write_text('model_reasoning_effort="high"\n',encoding='utf-8') private = home / 'codex-task-routing' private.mkdir() - (private / 'overrides.json').write_text('{"schema_version":1,"models":{"terra":{"default_effort":"high"}}}',encoding='utf-8') + (private / 'overrides.json').write_text('{"schema_version":1,"models":{"sol":{"default_effort":"xhigh"}}}',encoding='utf-8') env = {**environment,'CODEX_HOME':str(home)} cli(env,'marketplace','add',URL,'--ref',ref) cli(env,'add',PLUGIN_ID) diff --git a/tests/fixtures/model-routing-catalog.md b/tests/fixtures/model-routing-catalog.md index b11fa2b..a831152 100644 --- a/tests/fixtures/model-routing-catalog.md +++ b/tests/fixtures/model-routing-catalog.md @@ -1,6 +1,6 @@ # 作業分類表 — 固定effortと通常Chat優先 -この表は担当候補であり、親の設定変更・送信・外部書込みの許可ではない。短い通常作業は親で終える。基準運用は親Terra/xhigh、子はLuna/max・Sol/high・Astra/high。Terra子は標準ルート外。既存overrideの有効な固定値を使う。 +この表は担当候補であり、親の設定変更・送信・外部書込みの許可ではない。短い通常作業は親で終える。参考基準は親Sol/xhigh、子はLuna/max・Sol/high・Astra/high。既存overrideの有効な固定値を使う。 ## 選定の順序 @@ -16,18 +16,18 @@ | 公開情報・承認済み接続先の調査・比較 | 実取得ツールが使える6 Proを優先。出典・対象版・日付・確認範囲・未取得を返す | | 要件整理、分析、設計、矛盾・反例の検討 | 6 Proを主担当候補。利用不能なら通常は親、複雑な整合はSol、難しい前提はAstra | | 文案・翻訳・報告書・資料レビュー | まとまった工程は6 Pro。短い整形は親。高影響の表現は根拠と承認を確認 | -| 帳票の網羅確認、日付や欠測の解釈 | 原本を実見できる親Terraまたは6 Pro。OCR空欄だけで記載なしとしない | +| 帳票の網羅確認、日付や欠測の解釈 | 原本を実見できる親または6 Pro。OCR空欄だけで記載なしとしない | | 認証・課金・税務・個人情報に関する判断 | 事実取得と重要判断を分離。適任の専門判断・最新の公式根拠・必要な人の承認を省略しない | ## 実装・運用・PR | 作業条件 | 候補と合格条件 | | --- | --- | -| 一意の局所修正、通常の実装・検証 | 親Terraで完結。少量の仕事を別のTerraへ渡さない | +| 一意の局所修正、通常の実装・検証 | 親で完結。少量の仕事を同モデル子へ渡さない | | 既知手順のまとまった取得・処理・テスト実行 | Luna。異常原因の推定・未知の環境構築は親へ返す | | Chat側にrepoの取得・編集・テスト・PR作成の実機能がある | 明示承認された工程を6 Proの候補にする。Chatだから実装不可と決めない | | 分析とローカル実行が分離できる | Codexで証拠取得→6 Proで判断→親または専門子で実装・検証。細かい往復を増やさない | -| Codex側の編集・テスト・新規ログ確認が密に反復する | 複雑な工程はSol。難しい設計前提・重大な不確実性はAstra | +| Codex側の編集・テスト・新規ログ確認が密に反復する | 親がSolなら親で完結。独立した並列工程や親が下位モデルならSol。難しい設計前提・重大な不確実性はAstra | | DB移行、本番変更、セキュリティ境界、不可逆な操作 | 専門判断・復旧条件・受入証拠・明示承認を確認。PR作成はマージや配備の許可ではない | | 必要な実機・接続・権限がない | 未検証範囲を明示して返す。別環境のテストを実機検証と扱わない | diff --git a/tests/fixtures/model-routing-handoff.md b/tests/fixtures/model-routing-handoff.md index 965d37f..2daa314 100644 --- a/tests/fixtures/model-routing-handoff.md +++ b/tests/fixtures/model-routing-handoff.md @@ -4,7 +4,7 @@ ## 共通 -目的/担当と固定effort/対象と未解決点/既知の根拠/合格条件/許可済み操作/返却条件を渡す。並列なら親の独立作業、直列なら専門委譲の追加価値とホストが許す根拠を添える。通常作業は親Terra、Terra子は標準外。子は承認済みの通常修正・検証・証拠整理まで同じ担当で進める。 +目的/担当と固定effort/対象と未解決点/既知の根拠/合格条件/許可済み操作/返却条件を渡す。並列なら親の独立作業、直列なら専門委譲の追加価値とホストが許す根拠を添える。通常作業は親で完結する。子は承認済みの通常修正・検証・証拠整理まで同じ担当で進める。 ## Codex専門担当 diff --git a/tests/fixtures/model-routing-policy.md b/tests/fixtures/model-routing-policy.md index 57f05ef..3f142c7 100644 --- a/tests/fixtures/model-routing-policy.md +++ b/tests/fixtures/model-routing-policy.md @@ -1,6 +1,6 @@ -# モデル選定・作業内の委譲(2026-09-15更新) +# モデル選定・作業内の委譲(2026-09-24更新) -作者の基準運用は親Terra/xhigh、子Luna/max・Sol/high・Astra/high、適合工程は通常Chatの6 Proを積極的な主担当とする。通常作業と進行を親で完結し、専門工程だけ渡す。Terra子は標準ルートから外す。これは性能・節約の実証ではなく比較する運用方針である。 +作者の参考基準は親Sol/xhigh、子Luna/max・Sol/high・Astra/high、適合工程は通常Chatの6 Proを積極的な主担当とする。通常作業と進行を親で完結し、専門工程だけ渡す。同じモデルへの無用な移管はしない。これは性能・節約の実証ではなく比較する運用方針である。 親モデルを自動変更する機能ではない。利用者の親のmodel・effort(Ultra含む)と既存overrideを保持し、次回送信の切替提案はしない。別モデル親でも、能力に合う作業は親・適合する既存担当で進め、専門判断を必要な担当へ渡す。通常の可逆的な作業は承認内で進め、毎回の続行確認を増やさない。 @@ -11,7 +11,6 @@ | Luna子 | max | 明確な定型工程 | | Sol子 | high | 複雑な実装・原因・重要レビュー | | Astra子 | high | 難しい設計・重大な不確実性 | -| Terra | xhigh | 親の基準。子は標準ルート外 | | 通常Chat 6 Pro | UIの6 Pro | 別経路。Codex effortと換算しない | 固定するのは自動選定の基準であり、合格条件ではない。子の推論を十分使い、親の再指示・再調査を減らす。担当外なら固定値で押し切らず、未解決工程を適任へ直接渡す。Astraでも不十分なら根拠と制約を返し、無意味な再試行や合格基準の引下げはしない。 @@ -38,26 +37,26 @@ | 条件 | 第一候補 | | --- | --- | -| 短い確認・整形・局所修正、通常の調査・実装・検証 | 親。基準運用はTerra/xhigh | +| 短い確認・整形・局所修正、通常の調査・実装・検証 | 親。参考基準はSol/xhigh | | 明確でまとまった取得・抽出・照合・既定手順 | 委譲が見合えばLuna/max | | 材料がそろう比較・分析・要件・設計・文案・レビュー | 有効な通常Chat 6 Proを最初の主担当候補 | | 接続先の取得・編集・テスト・PRまで対象と承認が明確 | Chat側の実能力で完結すれば6 Pro。名称だけで不可にしない | -| Codex側のコード・テスト・新規ログ照会を繰り返す複雑な工程 | Sol/high | +| Codex側のコード・テスト・新規ログ照会を繰り返す複雑な工程 | 親がSolなら親で完結。独立した並列工程や親が下位モデルならSol/high | | 難しい設計前提、重大な不確実性、現物と密な往復が必要 | Astra/high | -| 原本の網羅・日付・欠測・曖昧な分類 | 親Terra、または原本を実見できる6 Pro。Lunaの機械照合にしない | +| 原本の網羅・日付・欠測・曖昧な分類 | 親、または原本を実見できる6 Pro。Lunaの機械照合にしない | | 承認・必須情報・権限が不足 | 不足を報告。モデル変更だけで補完しない | Chat不適合ならCodex側の適任へ渡す。認証・課金・個人情報・DB移行・本番操作等は影響と不可逆性を評価し、専門判断と人の承認を維持する。詳細な分野別条件は分類表の必要節だけ読む。 ### テスト・画像確認を切り分ける基準 -既存コマンド・固定環境・機械的な合否判定だけの検証はLuna/maxの候補。失敗原因の推定や新規環境構築へ勝手に広げない。仕様から観点を選ぶ通常のテスト設計・画像分析は親Terraが行い、複雑な原因や互換性の判断はSol、難しい前提はAstra。必要な素材とツールがそろう工程はChat候補も検討する。 +既存コマンド・固定環境・機械的な合否判定だけの検証はLuna/maxの候補。失敗原因の推定や新規環境構築へ勝手に広げない。仕様から観点を選ぶ通常のテスト設計・画像分析は親が行い、複雑な原因や互換性の判断は親またはSol、難しい前提はAstra。必要な素材とツールがそろう工程はChat候補も検討する。 画像の指定ラベル・見切れの照合でも実際に閲覧する。親の説明やDOMだけで実見したと扱わず、不鮮明・未取得は不明とする。寸法・色値・画素差は測定する。テストは対象revision・未commit差分・環境と成功/失敗/skip/未実行を分け、成功した一部から全体の品質を断定しない。 ### 原本・必須項目・記載なしを確認する条件 -- 既知の場所にある指定ラベルを照合する仕事と、どこに何が記載されているかを網羅的に探す仕事を分ける。後者や日付の意味・例外を判断する工程は、原本を実見できる親Terraまたは有効なChat経路の6 Proを候補にする。実際の見落としや手戻りが判明した条件は、モデル・effort・確認手順の組合せを見直してから同種の未着手作業へ適用する。effort変更の効果を確かめるだけの再実行はしない。 +- 既知の場所にある指定ラベルを照合する仕事と、どこに何が記載されているかを網羅的に探す仕事を分ける。後者や日付の意味・例外を判断する工程は、原本を実見できる親または有効なChat経路の6 Proを候補にする。実際の見落としや手戻りが判明した条件は、モデル・effort・確認手順の組合せを見直してから同種の未着手作業へ適用する。effort変更の効果を確かめるだけの再実行はしない。 - 原本の必須項目を確認する時は対象ページ全体を実見し、ヘッダ・フッタ・四隅も確認する。小さい文字や判読しにくい箇所は必要時に拡大する。OCR・抽出テキストだけの空欄を記載なしと扱わない。形式ごとの代表1件で抽出方法を照合してから展開するが、残りの各対象の必須項目確認を省略する根拠にはしない。 - 値と取得状態を分け、未確認/判読不能/探索したが見つからない/指定範囲を全て確認したうえで記載なしを区別する。確認済みとする範囲と根拠のページ・位置を残し、全件nullや予想外の欠測は取得方法と範囲を再確認する。範囲外の不存在へ一般化しない。 - 日付は原本上の名称・値・位置を保つ。発行日、利用期間、決済日、取引日を混同せず、依頼された列への対応は合意済みの定義に従う。未定義なら元の値を保存して対応判断を親へ返し、発行日を勝手に取引日へ変換しない。通常の資料整理から税務等の重大判断へ広げない。 @@ -70,11 +69,11 @@ Luna/maxへ渡すのは、取得元・手順・必要項目・合格条件が明 ### 定型取得の合格条件と担当を見直す境界 -- 取得を任せる時は対象ID・出典/API endpoint、必要な項目と型、ページング・対象期間、0件と未取得を見分ける条件を必要な範囲で渡す。既に根拠がある対応表を使い、親が全対象を先に取得する必要はない。取得先を探す通常調査と、原本の網羅確認・意味の区別・曖昧な分類・欠測の解釈はTerra/xhighを標準とする。 +- 取得を任せる時は対象ID・出典/API endpoint、必要な項目と型、ページング・対象期間、0件と未取得を見分ける条件を必要な範囲で渡す。既に根拠がある対応表を使い、親が全対象を先に取得する必要はない。取得先を探す通常調査と、原本の網羅確認・意味の区別・曖昧な分類・欠測の解釈は親を標準とする。 - 同じ方法で複数件を取る場合、子が最初の代表1件で取得先・応答項目・型・対象を確認してから展開する。200応答でも必須項目がなければ、その値は確認できていない。404・403・省略された項目・null・0・空配列を同じ「なし」にまとめず、取得状態と実値を区別する。親の再取得を必須化せず、親は重要判断や矛盾のある部分の根拠を確認する。 - 全件nullや予想外の0件、資料にある実体が見つからない場合は、参照先・絞込み条件・取得範囲を一度照合する。明白な抽出箇所の訂正で解決できれば担当内で直し、なお不明・矛盾が残るなら取得済み結果と未取得理由を親へ返す。HTTP成功や検索結果なしだけを、対象の不存在・安全性の根拠にしない。 -- Lunaへの取得依頼から、失効した成果物の復元、新規の依存環境構築や未指定の再ビルド、原因推定、複数履歴の統合へ進む必要が出たら、代替作業へ着手する前に親へ戻す。親が必要性を判断し、通常は親Terra/xhighが引き取り、前提や能力の境界が変われば対応表でモデルを見直す。検証済みの既存コマンドを指定環境で実行する仕事はLunaの候補に残し、effortは有効な固定値を使う。権限・ログインの問題はモデルを変えれば解決すると扱わない。 -- タイムゾーン・再開区間・親子の所属・累積値を扱う集計処理の新規実装や修正は、定型抽出と分けてTerra/xhighを標準とし、集計定義の矛盾や前提自体を判断する場合はSol/highを候補にする。Lunaは検証済み処理を指定対象に実行し、決まった項目を返す範囲に使える。期間の集計では日時型、明示したID、開始前からの継続と新規開始、進行中と完了、欠測・resetを分ける。件数やモデル比率は元の各行と親子関係へ戻して確認し、自己申告の合計だけを採用しない。 +- Lunaへの取得依頼から、失効した成果物の復元、新規の依存環境構築や未指定の再ビルド、原因推定、複数履歴の統合へ進む必要が出たら、代替作業へ着手する前に親へ戻す。親が必要性を判断し、通常は親が引き取り、前提や能力の境界が変われば対応表でモデルを見直す。検証済みの既存コマンドを指定環境で実行する仕事はLunaの候補に残し、effortは有効な固定値を使う。権限・ログインの問題はモデルを変えれば解決すると扱わない。 +- タイムゾーン・再開区間・親子の所属・累積値を扱う集計処理の新規実装や修正は、定型抽出と分けて親を標準とし、集計定義の矛盾や前提自体を判断する場合はAstra/highを候補にする。Lunaは検証済み処理を指定対象に実行し、決まった項目を返す範囲に使える。期間の集計では日時型、明示したID、開始前からの継続と新規開始、進行中と完了、欠測・resetを分ける。件数やモデル比率は元の各行と親子関係へ戻して確認し、自己申告の合計だけを採用しない。 ### 親への返却と専門担当への再配分 @@ -97,15 +96,15 @@ Luna/maxへ渡すのは、取得元・手順・必要項目・合格条件が明 ### 作業内で使う推論強度と実行条件 -モデルは担当能力と必要ツールから先に選び、子のeffortは有効なdefault_effortを明示する。既定はLuna/max、Sol/high、Astra/high。Terra/xhighは親の基準と互換定義で、Terra子は標準ルート外。実際の親設定は変更しない。 +モデルは担当能力と必要ツールから先に選び、子のeffortは有効なdefault_effortを明示する。既定はLuna/max、Sol/high、Astra/high。親の参考基準はSol/xhigh。実際の親設定は変更しない。 -モデルIDはLuna=gpt-5.6-luna、Terra=gpt-5.6-terra、Sol=gpt-5.6-sol、Astra=gpt-6-astra。通常ChatはUIの6 Proを選び、Codex effortへ換算しない。要求した設定と実際の観測を分ける。API単価をCodex契約の消費率へ代入しない。 +モデルIDはLuna=gpt-6-luna、Sol=gpt-6-sol、Astra=gpt-6-astra。通常ChatはUIの6 Proを選び、Codex effortへ換算しない。要求した設定と実際の観測を分ける。API単価をCodex契約の消費率へ代入しない。 子の推論・検証を十分に使い、通常の修正も同じ担当で完結する。品質不足を親の全面的な再処理で隠さず、入力・環境・担当の問題を分けて戻す。設定統一のために実行中の子を止めたり、完了済みの仕事を再実行したりしない。 ### 親会話の選択と専門判断 -親の選択は利用者、承認済み工程内の担当選定はAIが行う。基準運用の親Terraは受付専用ではなく、通常の調査・実装・検証・進行を直接行う。別モデル親を選んだ場合も設定は維持する。 +親の選択は利用者、承認済み工程内の担当選定はAIが行う。基準運用の親Solは受付専用ではなく、通常の調査・実装・検証・進行を直接行う。別モデル親を選んだ場合も設定は維持する。 親は進行と結果の取りまとめを担うが、すべての専門判断を独力で再証明する役ではない。専門担当の根拠・前提・反例・検証結果を合格条件と照合する。自己申告だけで承認せず、矛盾・重大な未解決点は担当へ返す。必要な人の承認を代替しない。 @@ -113,7 +112,7 @@ Luna/maxへ渡すのは、取得元・手順・必要項目・合格条件が明 ### 並列分担と直列の専門委譲 -既定は親から担当へ1段、同時に委譲する工程はChatを含め原則1件。通常のTerra向け工程は親で完結し、Terra子を標準にしない。既存の他モデル親やoverrideを保持し、必要な能力に合わせる。大きな文脈分離のためのTerra子は将来の明示例外候補で、初期比較に混ぜない。 +既定は親から担当へ1段、同時に委譲する工程はChatを含め原則1件。通常工程は親で完結し、同モデルへの無用な移管はしない。既存の他モデル親やoverrideを保持し、必要な能力に合わせる。親がSolの場合、Sol子は独立した並列工程などの具体的な追加価値がある時だけ作る。 並列分担では、子の工程が独立し、親にも別の有用な作業が必要。直列の専門委譲では、必要な判断能力や別の利用環境による追加価値、まとまった合格条件、引継ぎの妥当性を示し、ホストの上位指示・機能が直列委譲を許すことを確認する。許可不明は許可済みにしない。上位指示が親の独立作業を必須にする場合はその条件を優先し、架空の親作業や別CLIで迂回しない。 @@ -127,7 +126,7 @@ Luna/maxへ渡すのは、取得元・手順・必要項目・合格条件が明 有効な6 Pro経路は適合工程の主要担当として使い、最後の確認だけに温存しない。一方、利用率・メッセージ消化を目標にせず、同じ分析をAstraで全面的にやり直さない。高影響、矛盾、前提変更、証拠不足に追加レビューを絞る。 -同程度の仕事・同じ合格条件で、Astra親の従来構成とTerra親の新構成を比較する。短い通常仕事はTerra単独も基準にする。Codex親子合計・Chatメッセージ・追加クレジット・品質・人の修正を分ける。モデルの割合は絶対量の削減の証拠ではなく、取得不能な使用量は理由付き不明とする。測定だけの追加仕事は作らない。 +同程度の仕事・同じ合格条件で、Astra親の従来構成とSol親の新構成を比較する。短い通常仕事は親単独も基準にする。Codex親子合計・Chatメッセージ・追加クレジット・品質・人の修正を分ける。モデルの割合は絶対量の削減の証拠ではなく、取得不能な使用量は理由付き不明とする。測定だけの追加仕事は作らない。 ### 利用負担の観測 @@ -145,4 +144,4 @@ Luna/maxへ渡すのは、取得元・手順・必要項目・合格条件が明 - 同じ有効方針ディレクトリのeffective.mdを要約、この文書を詳細分類の正本とする。有効かつ信頼済みのプラグインフックで開始・再開時に読み込む。既存セッションは再読込みが必要な場合があり、別PC・別CODEX_HOME・クラウド環境への自動同期は前提にしない。より優先される指示・適用されるプロジェクト指示に従う。 - 分類は運用開始時の基準。ユーザーの修正指示や実測で調整し、モデル更新・利用可否変更時は公式情報と現在の環境を確認する。具体例は `model-routing-catalog.md` に集約し、この文書の一般条件と矛盾させない。繰り返す誤分類や手戻りが分かったら該当する分類を修正・統合し、一度きりの事例のために毎回項目を増やさない。 -- 参考:OpenAI Docsのモデル一覧 https://developers.openai.com/api/docs/models 、effort・Max・Ultraの説明 https://learn.chatgpt.com/docs/models?surface=app 、共通指示の仕様 https://learn.chatgpt.com/docs/agent-configuration/agents-md 、標準のサブエージェント仕様 https://learn.chatgpt.com/docs/agent-configuration/subagents (2026-09-13確認)。 +- 参考:OpenAI Docsのモデル一覧 https://developers.openai.com/api/docs/models 、GPT-6系の更新 https://developers.openai.com/api/docs/changelog 、effort・Max・Ultraの説明 https://learn.chatgpt.com/docs/models?surface=app 、共通指示の仕様 https://learn.chatgpt.com/docs/agent-configuration/agents-md 、標準のサブエージェント仕様 https://learn.chatgpt.com/docs/agent-configuration/subagents (モデル一覧・更新履歴は2026-09-24確認)。 diff --git a/tests/test_fixed_routing.py b/tests/test_fixed_routing.py index 7483967..275c43b 100644 --- a/tests/test_fixed_routing.py +++ b/tests/test_fixed_routing.py @@ -114,28 +114,34 @@ def test_cli_preserves_inputs_and_marks_old_call_unchecked(self): self.assertEqual(json.loads(output.getvalue())['route'], 'not_ready') self.assertEqual(before, [p.read_bytes() for p in paths]) - def test_fixed_defaults_and_child_hook_have_no_normal_terra_child(self): + def test_fixed_defaults_and_child_hook_uses_gpt6(self): policy = routing.load_policy(codex_home=self.home) self.assertEqual({k:v['default_effort'] for k,v in policy.config['models'].items()}, dict(luna='max', terra='xhigh', sol='high', astra='high')) effective = policy.render_template(policy.templates['effective.md']) - self.assertIn('Terra子は標準ルートから外し', effective) + self.assertNotIn('Terra子', effective) + self.assertNotIn('gpt-5.6', effective) for name, text in policy.templates.items(): self.assertNotIn('.min_effort}}', text) self.assertNotIn('.max_effort}}', text) child = routing.hook_payload(event='SubagentStart', source='startup', codex_home=self.home, cwd=self.home) context = child['hookSpecificOutput']['additionalContext'] self.assertNotIn('Terra=gpt-', context) - self.assertIn('Luna=gpt-5.6-luna (max)', context) - self.assertIn('Terra child is outside the standard route', context) + self.assertIn('Luna=gpt-6-luna (max)', context) + self.assertIn('Sol=gpt-6-sol (high)', context) + self.assertNotIn('gpt-5.6', context) + self.assertIn('Do not create a child solely', context) def test_existing_partial_override_is_not_deleted_or_rejected(self): path = self.home/'codex-task-routing/overrides.json' path.parent.mkdir() - path.write_text(json.dumps({'schema_version':1, 'models':{'terra':{'default_effort':'high'}}})) + path.write_text(json.dumps({'schema_version':1, 'models':{'terra':{'id':'gpt-5.6-terra','default_effort':'high'}}})) before = path.read_bytes() policy = routing.load_policy(codex_home=self.home) self.assertEqual(policy.config['models']['terra']['default_effort'], 'high') + self.assertNotIn('gpt-5.6', policy.render_template(policy.templates['effective.md'])) + child = routing.hook_payload(event='SubagentStart', source='startup', codex_home=self.home, cwd=self.home) + self.assertNotIn('gpt-5.6', child['hookSpecificOutput']['additionalContext']) self.assertEqual(before, path.read_bytes()) self.assertFalse((self.home/'config.toml').exists()) self.assertFalse(route.load_config(self.home)['enabled']) diff --git a/tests/test_hook_command.py b/tests/test_hook_command.py index aaaa3dd..d07fdcc 100644 --- a/tests/test_hook_command.py +++ b/tests/test_hook_command.py @@ -40,7 +40,7 @@ def test_shipped_command_supports_spaces_and_both_events(self): context = payload["hookSpecificOutput"] self.assertEqual(context["hookEventName"], event) self.assertIn("policy hash", context["additionalContext"]) - self.assertIn("gpt-5.6-luna", context["additionalContext"]) + self.assertIn("gpt-6-luna", context["additionalContext"]) self.assertLessEqual(len(context["additionalContext"]), 8000) finally: shutil.rmtree(base) diff --git a/tests/test_observation.py b/tests/test_observation.py index b683eb8..d734665 100644 --- a/tests/test_observation.py +++ b/tests/test_observation.py @@ -73,9 +73,9 @@ def completed_child_run() -> dict: "state": "completed", "run_id": "019c0000-0000-7000-8000-000000000001", "run_id_reason": None, - "requested": {"model": "gpt-5.6-terra", "effort": "xhigh", "reason": None}, + "requested": {"model": "gpt-6-sol", "effort": "xhigh", "reason": None}, "observed": { - "model": "gpt-5.6-terra", + "model": "gpt-6-sol", "effort": "xhigh", "evidence_ref": "tool-result:child-1", "reason": None, diff --git a/tests/test_routing.py b/tests/test_routing.py index 4b5326b..69f21ae 100644 --- a/tests/test_routing.py +++ b/tests/test_routing.py @@ -26,9 +26,9 @@ "schema_version": 1, "policy_revision": "2026-09-14", "models": { - "luna": {"id": "gpt-5.6-luna", "min_effort": "xhigh", "default_effort": "max", "max_effort": "max"}, - "terra": {"id": "gpt-5.6-terra", "min_effort": "high", "default_effort": "xhigh", "max_effort": "max"}, - "sol": {"id": "gpt-5.6-sol", "min_effort": "medium", "default_effort": "high", "max_effort": "xhigh"}, + "luna": {"id": "gpt-6-luna", "min_effort": "xhigh", "default_effort": "max", "max_effort": "max"}, + "terra": {"id": "gpt-6-sol", "min_effort": "high", "default_effort": "xhigh", "max_effort": "max"}, + "sol": {"id": "gpt-6-sol", "min_effort": "medium", "default_effort": "high", "max_effort": "xhigh"}, "astra": {"id": "gpt-6-astra", "min_effort": "high", "default_effort": "high", "max_effort": "max"}, }, "principles": { @@ -87,10 +87,10 @@ def test_defaults_reproduce_and_render_recursive_tokens(self) -> None: output = self.base / "rendered" references = routing.render_policy(policy, output) self.assertEqual(set(references), set(routing.RENDERED_FILE_NAMES)) - self.assertIn("gpt-5.6-luna", (output / "model-routing-policy.md").read_text(encoding="utf-8")) + self.assertIn("gpt-6-luna", (output / "model-routing-policy.md").read_text(encoding="utf-8")) self.assertIn("xhigh", (output / "model-routing-handoff.md").read_text(encoding="utf-8")) effective = (output / "effective.md").read_text(encoding="utf-8") - self.assertIn("gpt-5.6-terra", effective) + self.assertIn("gpt-6-sol", effective) def test_bundled_defaults_match_public_detailed_fixtures(self) -> None: policy = routing.load_policy(plugin_root=routing.PLUGIN_ROOT, codex_home=self.home)