変更
tier-routing 学習シグナルの客観化と bandit のイベントログ導出化(フェーズ2.5)
v2.42.0 ソフト適用の実運用で確定した 2 つの構造問題(escalation×ソフト適用による sonnet 探索閉塞デッドロック・レビュー指摘由来の失敗シグナルが能力/難度/レビュワー厳しさの混合物になる問題)を解消します。
- 失敗シグナルの客観化: bandit と escalation の failure rate に集計されるのは
BANDIT_GATES(D-2.5 / D-3 / D-5 / D-2.5-stuck)の客観ゲートのみ。E-1/E-2 レビュー指摘由来の記録はイベントログとして保存を継続しつつ、集計からは成功・失敗とも対称に除外します(developer の仕事は「動く実装」であり「レビュワーに指摘されない実装」ではない、というシグナル哲学)。 - bandit のイベントログ導出化:
read_agent_tier_paramsはagent_outcomesイベントログからの導出集計になりました。シグナル定義の変更が過去ログへ遡及適用されるため、今後の調整で学習データのリセットが不要になります。 - 失敗率の時間ベース窓: 「直近 N 件」から時間窓(
C3_FAILURE_WINDOW_DAYS・既定 14 日)へ。古い失敗が失効 → サンプル不足で escalation 停止 → 敗者復活が自然に働きます(sonnet 閉塞の解消を実機確認済み)。 - stuck failure の新設: dev-workflow D-2.5 が
debug-needed-*.md検出時にD-2.5-stuckgate で developer failure を記録します。
破壊的変更
- 旧学習テーブル
agent_tier_banditを DROP(migration 005 がc3 update後の session 開始時に自動適用)。累積 α/β はagent_outcomesからの導出に置き換わるため学習データ自体は失われません。 src/c3/db.pyのupdate_agent_tier_paramsを削除。- v2.41.0 で deprecated 化したシム 5 関数を削除:
read_tier_params/read_tier_failure_rate/update_tier_params/record_tier_recent_outcome/sync_tier_bandit_cost(予告どおりの削除)。 read_agent_failure_rateのシグネチャ変更:last_n→window_days。
後方互換
read_agent_tier_params の戻り値契約・環境変数群・LEARNING_THRESHOLD=30・cost-aware tie-break・ソフト適用(v2.42.0)のロジックは不変。新 env C3_FAILURE_WINDOW_DAYS は任意設定です。集計対象 gate の限定により c3 tier stats の trials 表示は従来より少なくなります(正しいデータでの数え直し・意図した挙動)。
🤖 Generated with Claude Code