# 結果：20261114_183_推論の記録に成功と失敗を付ける判定の画面を作る

- 状態：完了
- 始めた時刻：2026-11-14 20:19
- 終わった時刻：2026-11-14 20:53（34分）
- 作業フォルダ：/Users/shimazueiichi/r2r2r-scripts
- この続きを Claude Code で話すとき：作業フォルダで `claude --resume 6f23d901-7e95-4c8d-ba56-63a99a700e3e`

## Claude Code の報告

やったこと
- 依頼に従い、実装の前に MASTER の保存先テーブルへ判定ファイル `runs/pi05_policy_verdicts_v1.csv` の行を足しました。更新履歴にも 1 行足しています。直す前の写しは `MASTER_old_20261114.md` です。
- `pi05/verdict_viewer/` を新しく作りました。
  - 判定ファイルへは追記だけで書き、同じ回はいちばん新しい行が正です。
  - 書く前に KIOXIA のマウントを確かめ、なければ止めます（ローカルには書きません）。
  - 元の記録・台帳・datasets は読むだけで、その中には書きません。
- 今ある判定の写し（labeler=run_input）と、AI の先回り判定（labeler=ai）を判定ファイルに書きました。
  - AI は vlm_judge と同じ Claude API（claude-sonnet-4-6）を使いました。
  - 素材は、top.mp4 があれば方策が動いていた区間の後ろ寄りの 6 コマ、なければ frames/ の最後を含む 6 枚です。
  - 録画の最後は、人がブロックを箱から出しているところが写っていることがあります。そのため、最後の待ちと HOME へ戻る間のコマは使っていません。
- 画面では次のことができます。
  - 左の一覧の絞り込み（既定は人の確定がまだの回。ほかに全部・失敗だけ・AI と人が違う回）
  - top.mp4 の再生（なければ frames/ のコマ送り）
  - 関節 6 本と爪のグラフ
  - AI の判定と理由、今の判定、その回の行の一覧を見る
  - y/n/u/x で 1 行追記して次の回へ進む、←→ で前後の回へ移る
  - pick と place はボタンで別々に選ぶ
  - ダイアログは使っていません。
- codex のレビューを 7 回受けました。必須の指摘は 1 回目から順に 5・3・1・1・1・0・0 件で、すべて直しました。7 回目は推奨 1 件だけで、それも直しました。
  - 主な直しは、読み込み中に違う回へ書かない、キーの押しっぱなしで続けて書かない、応答が届かずに押し直しても 2 回書かない、書きかけの行がある CSV には足さない、人が確定した回に AI の行を足さない、の 5 つです。
- commit は d595d07 です（5 ファイルを個別に add）。

結果
- 写した判定：68 回（success 41 / failure 27 / unknown 0）
- AI が付けた判定：108 回（success 14 / failure 17 / unknown 0 / not_judgeable 77 / 飛ばした 0）
  - 1 回目は、AI の答えを読めなかった 1 回を飛ばしました。流し直して埋めたので、最後に飛ばした回は 0 です。
  - not_judgeable 77 回の内訳は、素材がなく API を呼ばなかった回が 35 回、AI が判定できないとした回が 42 回です。
- 判定ファイルは 176 行・176 回です。
- テストは 31 件すべて通りました。追記で既存の行が変わらないこと、マウントがないと止まること、最新の行が正になることを確かめています。
- 画面は実際に立ち上げ、ブラウザで y を押して 1 回分の判定が CSV に入るところまで確かめました。
  - 書いた先は /tmp の写しの CSV です。人が付けていない「人の行」を本物のファイルに残さないためです。
  - 入った行は pi05_20261114_182327・success・labeler=human・pick yes / place yes です。
- 画面の起動コマンド：
  `python3 ~/r2r2r-scripts/pi05/verdict_viewer/server.py`
  ブラウザで http://localhost:8765/ が開きます。
- 画面の写し：
  - `claude_code_reports/20261114_183_screen_before.png`（判定する前）
  - `claude_code_reports/20261114_183_screen_after_y.png`（y で追記したあと）

範囲の外で気づいたこと（変えていません）：`~/.anthropic_key` は「export ANTHROPIC_API_KEY=...」の形で書かれています。そのため、環境変数がないときは今の vlm_judge.judge() は鍵を正しく読めず、401 で失敗します。今回のスクリプトはこの形も読めるようにしました。

変えたファイル
- `pi05/verdict_viewer/verdicts.py`・`seed_verdicts.py`・`server.py`・`index.html`・`test_verdicts.py`（新しく作成・commit 済み）
- MASTER.md（保存先テーブルに 1 行と更新履歴に 1 行。直す前の写しは MASTER_old_20261114.md）
- KIOXIA の `runs/pi05_policy_verdicts_v1.csv`（新しく作成・176 行）
- 報告：`claude_code_reports/20261114_183.txt` と画面の写し 2 枚
- 作業メモ：`logs/20261114_2052.md`
- AI のログ：`logs/verdict_seed_ai_20261114.txt`
- 報告・作業メモ・ログと画面の写しは commit していません。

決めてほしいこと
1. 記録したときの入力（run_input）の 68 回を人の確定に数えるか。誰が付けたか分からないので、今は数えていません。そのため既定の一覧には 176 回すべてが出ます。
2. アームを動かしていない回（送ったチャンク 0）が 51 回あります。AI は 44 回を not_judgeable、7 回を failure としました。成功率に入れるか外すか。
3. frames/ だけの回は、最後の画像が最後のチャンクを送る前に撮られています。そのため AI は 42 回を not_judgeable としました。これを人が画面で確かめる形でよいか。
4. 本物の判定ファイルには、まだ人の行がありません。人の判定はエイイチが画面で付けてください。

判定：止めた（決めてほしいことあり）
