issue 別: 何をどうマージしたか
各 PR の規模・判定ラウンド数・最終レビューの重大度(高/中/低)・主な指摘と決着を一覧にしました。詳細は各 PR の 🧪 / 📋 / 🧭 / 🔧 コメントに残っています。
| PR | issue | M | 変更量 | ラウンド | 最終レビュー 高/中/低 | 状態 |
|---|---|---|---|---|---|---|
| #14 | #1 | M1 | +1287/-21 (29 files) | 3 | 0/3/2 | ✅ merged 09e1bc0 |
| #16 | #3 | M1 | +355/-11 (16 files) | 3 | 0/2/2 | ✅ merged 3d7d40c |
| #17 | #2 | M1 | +1904/-62 (31 files) | 3 | 0/2/3 | ✅ merged c618052 |
| #18 | #4 | M2 | +768/-38 (33 files) | 0 | — | ✅ merged 1c6fcac |
| #19 | #5 | M2 | +1137/-18 (41 files) | 0 | — | ✅ merged e888d36 |
| #20 | #6 | M2 | +1345/-147 (59 files) | 3 | 5/7/6 | ✅ merged 10e5b89 |
| #21 | #7 | M3 | +1651/-35 (35 files) | 3 | 1/2/2 | ✅ merged 83cebf4 |
| #22 | #9 | M4 | +1058/-135 (62 files) | 1 | — | ✅ merged d545c90 |
| #24 | #8 | M3 | +3080/-38 (96 files) | 4 | 2/6/7 | ✅ merged 7fef240 |
| #26 | #23 | M4 | +10873/-165 (73 files) | 3 | — | ✅ merged adca86b |
| #31 | #10 | M4 | +209/-65 (68 files) | 1 | — | ✅ merged d04d7e2 |
| #32 | #29 | M5 | +910/-117 (9 files) | 2 | — | ✅ merged 9424312 |
| #33 | #30 | M5 | +59/-20 (25 files) | 1 | — | ✅ merged 9985918 |
| #34 | #25 | M5 | +305/-26 (31 files) | 2 | — | ✅ merged dd9ad5b |
| #35 | #27 | M5 | +93/-5 (76 files) | 2 | — | ✅ merged 8f9922d |
| #36 | #15 | M5 | +476/-123 (80 files) | 4 | 2/2/5 | ✅ merged c06f168 |
| #39 | #37 | M5 | +261/-43 (31 files) | 1 | — | ✅ merged be807d7 |
| #40 | #38 | M5 | +338/-28 (83 files) | 5 | 0/0/0 | ✅ merged 5e98429 |
読み方
「ラウンド」= 🧭 判定コメントの数。「最終レビュー」= 最後の 📋 コメントに書かれた残指摘数(マージ時点では高 0 が原則。#17/#24/#36 は親が追加ラウンドで決着)。
#1 — feat: PS1 基盤 — ビルド/320x240 描画/GTE 3D/入力/ホストテスト/エミュレータキャプチャ (
M1 / PR #14 / +1287/-21 / ラウンド 3 / 🔧 修正コメント 2 / 🧪 E2E 3 / 📋 レビュー 3
- マージした内容: 320x240 ダブルバッファ、GTE 3D(fpscam/lookat 移植)、TIM ロード、パッド、PCSX-Redux CLI + Lua DSL、ホストテスト骨格
- 主な指摘と決着: ダブルバッファ未機能(表示面へ描画)→ 修正 / 近クリップ・飽和フラグ検査は #15 へ
- レビューで挙がった高/中(抜粋):
- [高] [Codex]
gfx_load_timの成否判定が原理的に成立しない - [高] [Claude] 単面ポリゴンしか描けず、設計正典が要求する「両面描画」ができない — デモの回転板が回転周期の約半分で消えている
- [中] [Codex]
gte_avsz4()が 4 頂点目のgte_rtps()より前にある - [中] [Claude]
gfx_end()でPutDrawEnvとDrawOTagEnvを同一 DRAWENV に連続適用し - [中] [Codex] 近クリップ・GTE 飽和・画面外クリップを一切処理していない
- [中] [Codex]
run_emu.shのpkill -f MacOS/PCSX-Reduxが他セッションのエミュレータも落とす
- [高] [Codex]

#2 — feat: アセットパイプライン — PNG→TIM 減色、紙人形リグ/アニメ/カメラ JSON→C、VRAM 配置 (
M1 / PR #17 / +1904/-62 / ラウンド 3 / 🔧 修正コメント 3 / 🧪 E2E 4 / 📋 レビュー 3
- マージした内容: PNG→TIM(4/8bpp、透過はリサイズ前マスク)、リグ/アニメ/カメラ JSON→C、VRAM 配置表と検査、placeholder 生成
- 主な指摘と決着: glow 透過が LANCZOS 後に破綻 → 親の設計判断で『加算合成素材は色キー不要』に決着
- レビューで挙がった高/中(抜粋):
- [高] [Claude]
test_grid.timが VRAM 正典の外にあり、ai_atlas/coach_atlasと実際 - [高] [Claude] 出力 TIM の実サイズが
vram_layout.jsonのsizeと一致するか検証しておらず、素材差し替 - [高] [Codex + Claude]
make testが古い生成データをリンクしたホストバイナリを実行する - [中] [Codex]
speaker/glowの宣言 tpage とgfx_load_tim()が返す tpage が食い違 - [中] [Claude]
vram_layout.pyが CLUT とテクセル領域の重なりを一切検査せず、stagingテクスチャは重な - [中] [Claude]
docs/vram_layout.mdは追跡ファイルなのに CMake のOUTPUTに入っており、`cma
- [高] [Claude]

#3 — feat: サウンド統合 — NES 版 BGM ドライバ/SPU 変換の組込と PS 版 SFX (ブーイング/拍手/
M1 / PR #16 / +355/-11 / ラウンド 3 / 🔧 修正コメント 2 / 🧪 E2E 4 / 📋 レビュー 3
- マージした内容: NES 版 BGM ドライバ + SPU 16 ボイスを組込、SFX 8 種(ブーイング/拍手/歓声/UI/判定)をボイス 16-23 に追加
- 主な指摘と決着: E2E が実 SPU 状態を検証していない → key-on ログ検査を追加
- レビューで挙がった高/中(抜粋):
- [中] [Claude]
make emu-shotsでこのシナリオを回すと既存ゴールデン PNG 6 枚が消える - [中] [Codex] issue #3 記載のテスト範囲(各曲 3 秒 / 同時 8 SFX)を満たしていない
- [中] [Codex] E2E が SPU の実再生を検証していない
- [中] [Codex + Claude] 本番の SPU ドライバに毎フレーム動く
printfが残り、かつ issue #3 の明示指示と衝 - [中] [Codex + Claude] E2E が実 SPU 状態を検証しておらず、
sfx_playの受入条件を担保できていない - [中] [Codex + Claude]
run_emu.shが全シナリオで SFX 専用デバッグシンボルを必須化している
- [中] [Claude]
#4 — feat(render): 紙人形キャラクター描画とアニメーション (M2)
M2 / PR #18 / +768/-38 / ラウンド 0 / 🔧 修正コメント 0 / 🧪 E2E 0 / 📋 レビュー 1
- マージした内容: 12 パーツ紙人形の階層描画(両面 POLY_FT4)、クリップ補間、6 振り + idle/walk/miss/gameover/cheer、root_yaw による Y スピン
- 主な指摘と決着: クリップ駆動の Y スピン未実装(高)→ root_yaw 追加 / build_models のコミット漏れ → 修正

#5 — feat(render): 3D ステージとカメラショットシステム (M2)
M2 / PR #19 / +1137/-18 / ラウンド 0 / 🔧 修正コメント 0 / 🧪 E2E 0 / 📋 レビュー 2
- マージした内容: 床/LED ビジョン/スピーカー/トラス/加算光錐のステージ、9 ショットの拍同期カメラ、mood 4 段階、rating_tier 共通 enum
- 主な指摘と決着: UV ページ内オフセット欠落(橙矩形)・加算 Z 順序・128f 自動切替の退行 → 3 巡で解消
- レビューで挙がった高/中(抜粋):
- [高] テクスチャページ内 UV と LED ラップが破綻
- [高] 半透明加算の Z 順序を保証できない
- [高] E2E が受入条件を検査していない
- [中] PERFECT streak の 1 拍カットインが 4 拍近く保持される
- [中] camera の初期化と SetGeomScreen のグローバル状態が漏れる
- [中] 静的 speaker mesh が上面を欠き、床と重なる下面を生成

#6 — feat: 観客システムとレーティング場面転換 (AWFUL/BAD/GOOD/COOL)
M2 / PR #20 / +1345/-147 / ラウンド 3 / 🔧 修正コメント 0 / 🧪 E2E 3 / 📋 レビュー 4
- マージした内容: 観客ビルボード(6 ポーズ・退場/静止/バウンス/ジャンプ)、AWFUL〜COOL の場面転換、歪み/フラッシュ/紙吹雪/ワイプ、SFX 連動
- 主な指摘と決着: BAD の『軽い歪み』が全画面ドロップアウト(設計乖離)→ 全 30 帯の水平歪みへ
- レビューで挙がった高/中(抜粋):
- [高] [Codex + Claude] base が進んでおり PR は現状マージ不能 —
rating.hが `rating_tier_t - [高] [Codex] 同一レーティング内の観客値変更が観客数へ反映されない
- [高] [Claude]
fx.cが旧gfx_sort()契約前提 — rebase 後に半透明レイヤ順が壊れる - [高] [Claude] 紙吹雪が完全に不可視 — 受入条件「COOL で紙吹雪」未達
- [高] [Claude] AWFUL のスキャンライン歪みがキャプチャで検証できていない — 受入条件未達
- [中] [Codex + Claude] paperdoll 裏面に
fx_wobble()が二重適用され表裏が分離する
- [高] [Codex + Claude] base が進んでおり PR は現状マージ不能 —

#7 — feat: リズムコア移植 (NES 版と同挙動) + HUD/ノーツレーン/判定表示 (M3)
M3 / PR #21 / +1651/-35 / ラウンド 3 / 🔧 修正コメント 0 / 🧪 E2E 3 / 📋 レビュー 4
- マージした内容: NES 版判定エンジンをコールバック化して移植、レーン HUD/観客メーター/判定文字の 3D 追従、カメラ・レーティングとの結線
- 主な指摘と決着: 遷移ワイプが HUD を 30f 覆う → 演奏中はワイプ抑止、アイコン tpage 明示
- レビューで挙がった高/中(抜粋):
- [高] [Claude] ゲームオーバー後も
rhythm_update()が回り続け、毎フレーム MISS が発火する - [中] [Codex + Claude] PERFECT ストリークのカメラカットインが 1 拍で復帰しない
- [中] [Codex + Claude]
crowd_on_beat()の拍が譜面の BPM と同期していない - [中] [Codex] 一度 MISS すると
FACE_MISSが曲終了・リトライ後まで残る - [中] [Codex + Claude] シア用 VRAM スクラッチ矩形が VRAM 正典に予約されていない
- [中] [Codex] テストが上記の結線不具合と複数曲を捕捉できない
- [高] [Claude] ゲームオーバー後も

#8 — ゲームフロー機械と本番画面(タイトル/会話/RESULT/GAMEOVER)を実装
M3 / PR #24 / +3080/-38 / ラウンド 4 / 🔧 修正コメント 4 / 🧪 E2E 3 / 📋 レビュー 4
- マージした内容: フロー機械(title/prologue/dialog/tutorial/performance/result/ending/gameover)、スライド、かな描画、E2E 27 ショット
- 主な指摘と決着: プロローグ最終ページの配列外参照、SPRT はテクスチャを拡大しない(RESULT が "STUV")、GAME OVER 退行の隠蔽 → Opus レビュー + Sonnet 修正で解消
- レビューで挙がった高/中(抜粋):
- [高] [Codex + Claude] 固定サイズ SPRT 命令に可変 W/H を設定している — 一枚絵・ロゴ・コーチ顔が描画されていない
- [高] [Codex + Claude]
FLOW_ENDINGでsound_tick()が呼ばれず、エンディング BGM が 1 音 - [中] [Codex + Claude] RESULT 画面でワールド・紙吹雪・キャラが描画されない(受入条件「S は紙吹雪 + cheer」未達)
- [中] [Codex] 紙吹雪が GAME OVER 画面まで漏れている(シーン遷移時の演出リセット漏れ)
- [中] [Codex + Claude] テストが受入条件を検証しておらず、壊れた画面でも PASS してしまう
- [中] [Codex] スライドのフェードイン/アウトが未実装

#9 — キャラクターアート生成と組込 — アイ/コーチの紙人形アトラス + 表情
M4 / PR #22 / +1058/-135 / ラウンド 1 / 🔧 修正コメント 0 / 🧪 E2E 4 / 📋 レビュー 5
- マージした内容: higgsfield 立ち絵をパーツ切り出しした本番アトラス、表情 4 種、UV base と回転 bbox の等方縮小
- 主な指摘と決着: E2E ゲートの弱体化(--allow-empty-character)→ 全フレーム個別色ゲートに復元
- レビューで挙がった高/中(抜粋):
- [高] [Codex + Claude] 白背景キーが衣装の白を透明化し、キャラに穴が開く
- [中] [Codex + Claude] 過剰透明化を検出できないテスト / E2E チェック
- [中] [Claude] 8bpp CLUT を 256 色使えるのに 48 色に絞っている
- [高] [Claude] アイの A ポーズ斜め腕を無回転で切っているため、腕が「黒い翼」として固着する
- [高] [Claude] コーチの表情矩形が口を切り落としており、受入条件「表情 4 種が切り替わる」を満たしていない
- [中] [Claude] 胴矩形が上腕矩形と重なり、袖が torso クアッドに焼き込まれている

#23 — feat(tools): PixelRefiner を png2tim 前処理へ組み込む
M4 / PR #26 / +10873/-165 / ラウンド 3 / 🔧 修正コメント 2 / 🧪 E2E 5 / 📋 レビュー 5
- マージした内容: PixelRefiner(Oklab 量子化/Bayer ディザ/AA 除去)を png2tim 前処理へ統合、比較エビデンスで採用決定
- 主な指摘と決着: (レビュー中 1)→ 解消
- レビューで挙がった高/中(抜粋):
- [中] [Claude] キャッシュキーが
pixel_refine.mjsと Node バージョンを含まず、中-1 の CMake DEPE
- [中] [Claude] キャッシュキーが
#10 — 一枚絵/ロゴ/ステージ/UI アート生成と組込 — 第2ラウンド: ロゴ・テキスト帯・コーチ顔UV・crowdクリップ修
M4 / PR #31 / +209/-65 / ラウンド 1 / 🔧 修正コメント 0 / 🧪 E2E 1 / 📋 レビュー 1
- マージした内容: ロゴ・観客・床・レーンアイコン(r1)/ ロゴ描画修正・テキスト帯・コーチ顔 UV・build_slides refiner 化(r2)
- 主な指摘と決着: #24 未マージで r1/r2 に分割(実装エージェントの提案を親が承認)

#29 — fix(camera,e2e): AI_CLOSE カットインの自己参照ループ修正と PCSX-Redux 間欠クラッシ
M5 / PR #32 / +910/-117 / ラウンド 2 / 🔧 修正コメント 0 / 🧪 E2E 2 / 📋 レビュー 2
- マージした内容: camera.c の AI_CLOSE 自己参照ループ修正 + ホストテスト、run_emu.sh の PASS/GATE_FAIL/EMU_CRASH 分類とリトライ
- 主な指摘と決着: PCSX-Redux 間欠 exit 255 は interpreter でも再現、根本原因は未特定
- レビューで挙がった高/中(抜粋):
- [高] [Claude]
GFX_ASSERT: draw/display overlapゲートが無効化される(偽 PASS) - [高] [Claude] ウォッチドッグの
sleepが孤児化し、パイプ/キャプチャ経由の呼び出しがPCSX_TIMEOUT(既定 90 - [高] [Codex] 実行中プロセスのロックを stale と誤認して奪取する
- [中] [Claude]
SCENARIO PASSEDの直後にクラッシュした場合が GATE_FAIL 扱いになり、リトライも証拠保存もされ - [中] [Codex] macOS クラッシュレポートの生成遅延を待っていない
- [中] [Codex + Claude] 4 分類 / リトライ / タイムアウト / ロックの自動テストが無い
- [高] [Claude]
#30 — 紙人形ショーケースの色一致率低下を修正 — legacy_demo_reset の AWFUL 演出解除
M5 / PR #33 / +59/-20 / ラウンド 1 / 🔧 修正コメント 0 / 🧪 E2E 1 / 📋 レビュー 1
- マージした内容: flow リンク時に紙人形の色一致率が 1/10 になる原因(legacy_demo_reset の AWFUL 演出)を修正し閾値を復元
- 主な指摘と決着: Sonnet の正直な申告 → 親が issue 化 → 根本原因修正
#25 — 画面レイアウト磨き — タイトル/会話ウィンドウ/HUD レーン帯/RESULT の可読性 (半透明パネル + 拡大テキ
M5 / PR #34 / +305/-26 / ラウンド 2 / 🔧 修正コメント 1 / 🧪 E2E 2 / 📋 レビュー 3
- マージした内容: 半透明パネル + 拡大テキスト API、タイトル/会話ウィンドウ/レーン帯/RESULT の可読性
- 主な指摘と決着: —
- レビューで挙がった高/中(抜粋):
- [高]
check_text_panelに「インクが存在すること」の下限がなく、rhythm_gameoverは空領域を検査している - [中]
_is_panel_ink()の青クロマ除外が広すぎ、青系の背景漏れを見逃す - [中]
bright_rateの分母が「非インク画素数」で、インク誤判定が増えるほど判定が甘くなる - [中]
gfx_panel()は POLY_F4 を積んだ後に DR_TPAGE を確保しており、パケット枯渇時に ABR 未設定の半透明ポリ
- [高]

#27 — fix(tools): png2tim.py の BGR555 丸め後の重複色でパレット枠が浪費される
M5 / PR #35 / +93/-5 / ラウンド 2 / 🔧 修正コメント 0 / 🧪 E2E 2 / 📋 レビュー 2
- マージした内容: BGR555 丸め後の重複色でパレット枠が浪費される問題の修正
- 主な指摘と決着: —
- レビューで挙がった高/中(抜粋):
- [中] [Claude] PR 本文「ゴールデン更新理由の内訳」の 2 点目が事実と異なる
#15 — fix: PS1 基盤の堅牢化 — gte3d 近平面/FLAG 検査
M5 / PR #36 / +476/-123 / ラウンド 4 / 🔧 修正コメント 2 / 🧪 E2E 4 / 📋 レビュー 3
- マージした内容: gte3d 近平面/FLAG 検査、OT スケール二重適用の修正、run_emu タイムアウト
- 主な指摘と決着: 唯一の未達が -Wcomment 警告 1 件 → 親が修正しマージ。pad.c 故障注入は分類器ブロックで代替エビデンス
- レビューで挙がった高/中(抜粋):
- [高] E2E ゴールデンが未更新で
run_emu.shが GATE_FAIL する(受入条件未達) - [高] 近平面棄却で手前の床ポリゴンが丸ごと消え、可視の黒穴になっている
- [中]
GTE3D_FLAG_REJECT_MASKに SX2/SY2 飽和 (bit13/14) を含めるのは過剰棄却の疑い - [中]
BILLBOARD_OT_BIASが深度スケール変更に追従していない - [中]
RUN_EMU_TIMEOUT既定を 900→300 秒に下げたのは長尺シナリオに対して余裕が薄い - [中]
PCSX_LOCK_TIMEOUTを固定値 1000 に下げると、上を戻した瞬間にロックを奪う
- [高] E2E ゴールデンが未更新で
#37 — 近平面交差床の適応二分割 — 画面下部の床欠け帯を解消
M5 / PR #39 / +261/-43 / ラウンド 1 / 🔧 修正コメント 0 / 🧪 E2E 1 / 📋 レビュー 1
- マージした内容: 近平面交差する床ポリゴンの適応二分割(画面下部の床欠け解消)
- 主な指摘と決着: —
- レビューで挙がった高/中(抜粋):
- [中] [Claude]
gte3d_flag_rejectsが全シナリオで 0 になり、issue #15 の診断カウンタが実質的に死ぬ - [中] [Claude]
game_gte3d_quad_near_rejectsの単位が「quad」から「分割葉 quad」に変わり 1.5
- [中] [Claude]
#38 — png2tim: index 0 免除の厳密化と解放パレットスロットの再利用
M5 / PR #40 / +338/-28 / ラウンド 5 / 🔧 修正コメント 4 / 🧪 E2E 5 / 📋 レビュー 5
- マージした内容: png2tim の index0 免除厳密化と解放パレットスロットの再利用
- 主な指摘と決着: 回帰ガードにならないテスト(中)→ Red/Green を伴うテストへ作り直し、main とのゴールデン衝突を解消
- レビューで挙がった高/中(抜粋):
- [中] スライド名のハードコードが 3 箇所目になっている
- [中] glob → マニフェスト走査で「載っていない実アセット」が静かに検査対象外になる
- [中] [Codex + Claude]
test_gridは allowlist に入っているが実際には PS-EXE に incbin さ - [中] [Claude] exact 経路の導入で、#27 が直したフォールバック経路の不変条件テストが実質的に失効している
- [中] [Claude] 直前の 🔧 修正対応コメントの
stage.lua GATE_FAIL診断が誤り(記録の訂正が必要) - [中] [Codex + Claude] 追加されたフォールバックテストは「経路を踏む」だけで、#27 の回帰を検出できない