契約(ロードと API 形状) contract | board_model のロード・インスタンス化・必須 API と enum の存在 load / instantiate / API / enums | ✅ |
API 挙動 api | setup() 直後の初期状態が仕様どおり setup initial state | ✅ |
受け入れ例どおりのスポーンと序盤の移動 acceptance spawn and early movement | ✅ |
get_cell の ASCII マッピングと盤外の扱い get_cell ASCII mapping and out of bounds | ✅ |
place_belt の配置可否ルール place_belt rules | ✅ |
rotate_cell の回転可否ルール rotate_cell rules | ✅ |
spawn_item の成否ルールと乱数を消費しないこと spawn_item rules and RNG non-consumption | ✅ |
peek_next_kind が安定し実際のスポーン色と一致する peek_next_kind is stable and matches spawn | ✅ |
移動 movement | 直線ベルトで 1 tick に 1 マス進む straight belts move one cell per tick | ✅ |
隣接する 2 個が同一 tick で追従して進む adjacent pair follows in the same tick | ✅ |
ループ上の 3 個が全て前進する three items in loop all advance | ✅ |
満杯のループは停滞し全荷物がミスになる full loop stalls then misses | ✅ |
衝突・停滞 collision | 同一の空きマスへの合流は小さい id が優先される merge to same empty cell chooses low id | ✅ |
正面からの入れ替わり移動はブロックされる head-on swap is blocked | ✅ |
5 tick 停滞した荷物はミスになる blocked item misses after five ticks | ✅ |
移動できると停滞カウンタがリセットされる stuck counter resets after movement | ✅ |
搬出と得点 exit_scoring | 色が一致する出口で得点し荷物が消える matching exit scores and removes item | ✅ |
色違いの出口はミスになる wrong exit misses | ✅ |
同じ出口に同一 tick で 2 個搬入できる two items can enter same exit | ✅ |
盤外への移動はミスになる off-board movement misses | ✅ |
出口へ抜けたマスを後続が同一 tick で使える exit departure frees previous cell for follower | ✅ |
スプリッター splitter | スプリッターが右→左→右と交互に振り分ける splitter alternates right left right | ✅ |
スプリッターごとにトグル状態が独立している splitter toggles are independent | ✅ |
送出できなかったスプリッターはトグルしない blocked splitter does not toggle | ✅ |
出口搬入・盤外退場でもトグルが反転する splitter toggles on exit and off-board departure 詳細: exit_case=false off_case=false | ❌ |
「右」が進入方向に対する相対方向である splitter right is relative to entry direction | ✅ |
スポーンとミス spawn_miss | スポーンが t=1,4,7… の周期で発生する spawn schedule is t=1,4,7 | ✅ |
入口封鎖時のスポーンはミスになり乱数を消費する blocked spawn misses and consumes RNG | ✅ |
入口封鎖時のスポーンでも id は消費される blocked spawn consumes id | ✅ |
t=120 で終了し以降の tick で状態が変化しない finish at t=120 freezes future ticks | ✅ |
決定性 determinism | 同一シード・同一操作列で結果が完全一致する same seed and operations produce same results | ✅ |
スポーン色の系列が RandomNumberGenerator の仕様と一致する spawn color sequence matches RandomNumberGenerator | ✅ |
勝利経路 win_path | 標準マップで単純な操作方針により勝利閾値へ到達できる standard map simple controller reaches win threshold | ✅ |
View 挙動 view | 表示文字がフォントに存在する(豆腐なし) labels have no missing glyphs | ✅ |
tick が実時間 0.5 秒間隔で進む tick advances at 0.5s interval | ✅ |
クリックで空セルにベルトを設置できる mouse click places a belt 詳細: placed=0 clicks=400 empties=50 finished_during_test=false | ❌ |