v2.41.0 - tier-routing 学習シグナルを role 別・per-gate 記録に再設計
変更
tier-routing の学習シグナルを全面再設計しました。従来の学習記録には「記録される tier が推奨値であり実使用値ではない(帰属ズレ)」「記録がフェーズ E-2 の 1 箇所のみ(1 ワークフロー = 最大 1 記録)」という構造的欠陥があり、tier の優劣を測れていませんでした。
- 新テーブル(migration 004・自動適用):
agent_tier_bandit(role × complexity × tier の Thompson Sampling)/agent_outcomes(per-gate イベントログ) - 新記録 CLI
record_agent_outcome.py: tier は agents/{role}.md frontmatter から自己解決(LLM 申告に依存しない)。--execution subagentのみ bandit 更新・persona はイベントログのみ。dedupe(--task 対応)・note の秘密情報マスク+切り詰め対応 - 記録ポイント: dev-workflow の全承認ゲート(A-4〜E-2)+ parallel-agents のタスク単位(2-D/2-E)。学習機会が 1 WF 最大 1 回 → 5〜15 回に増加。E 差し戻しは指摘の最上流起因(developer/architect/planner)に帰属。レビュワーは recall 測定不能のため学習対象外
- select_tier.py: 「frontmatter 指定が優先される」という誤り文言を修正(Agent 呼び出し時の model: 明示指定で上書き可能・fork を除く)。推奨は developer セル基準に
- c3 tier stats: role 別グループ表示・--role フィルタ追加
破壊的変更
- 旧学習テーブル
tier_bandit/tier_recent_outcomesを DROP(学習データはリセットされます。旧データは帰属ズレのため移行しません) record_tier_outcome.pyを削除しrecord_agent_outcome.pyに置換(deletions.txt 記載。利用先は c3 update 後に旧ファイルの手動削除を推奨)c3 tier stats --jsonの出力形状変更(互換キーなし)- db.py の旧 tier API を削除または deprecated シム化(シムは次リリースで削除予定)
後方互換
- 環境変数・LEARNING_THRESHOLD=30・cost-aware tie-break のロジックは不変
- pip のみ更新済みで .claude/ 未更新の環境でも deprecated シムにより旧 hook はクラッシュしません(uniform 表示に自然フォールバック)
詳細は CHANGELOG.md を参照してください。