新しい固定版は cs:137 です。（1件も保留なし。Mat_MonitorBoard は Private
  のまま）

  1. 条件のファイル

  Assets/ServiceSim/Experiment/serving-robot-params.json   v2.4 → v2.7
  meta.layout_generation  82023936eb99  ← 店の形の JSON
  と一致（写し直していません）
  robot_first_wait_s は SiteValues が JSON から読みます（value: 120 / role: 
  site_rule）。.asset に手で写していません。読めない・role が違う場合は Problems
  に残って回りません（Rule() → Apply() が false → 走らない）。実際に使った値は
  summary.json の robot_first_wait_s に出ます。 

  2. 割り当ての決まり（ServiceOps）

  ┌──────────────────────────────┬───────────────────────────────────────────┐
  │            決まり            │                   実装                    │
  ├──────────────────────────────┼───────────────────────────────────────────┤
  │                              │ PutDish がスタッフの仕事板に配膳を出さな  │
  │ できたらまずロボットを待つ。 │ い（ロボットは受け渡し口の列 _pass        │
  │ スタッフは料理を持たない     │ を直に見るので受け持てる）。スタッフは案  │
  │                              │ 内・片付け・会計を続けます                │
  ├──────────────────────────────┼───────────────────────────────────────────┤
  │ 120 秒を過ぎたら先に空いた方 │ ReleaseDishesToStaff（毎コマ・AssignRobot │
  │                              │ s の後）が板にも出す                      │
  ├──────────────────────────────┼───────────────────────────────────────────┤
  │ fragile_by=staff             │ StaffCarriesFromStart で、はじめから板に  │
  │ の倒れやすい料理             │ 出す（倒れやすい皿だけ。ほかは待ちます）  │
  ├──────────────────────────────┼───────────────────────────────────────────┤
  │ ロボット0台                  │ 同じく、はじめから板に出す ＝ cs:136      │
  │                              │ と同じ回し方                              │
  ├──────────────────────────────┼───────────────────────────────────────────┤
  │ 後に回した皿も、料理ができた │ 判定は NowS -                             │
  │ 時から数える                 │ d.readyS。通路の決まりで後に回しても、受  │
  │                              │ け渡し口に戻されても数え直しません        │
  └──────────────────────────────┴───────────────────────────────────────────┘

  robotFirstWaitSec を 0 にすると v2.7
  より前の回し方に戻せます（前後を比べる用）。

  3. 記録
  
  dishes.csv を皿ごとの記録に変えました。 列は
  condition_id,seed,dish_id,table_id,group_id,fragile,
  ready_s,first_taken_s,arrived_s,carried_by,pass_wait_s,carry_s,requeue_lost_s,
  requeued,staff_from_start,robot_wait_expired,late_staff_pickup,deferred_for_ais
  le
  - carried_by … ロボット／スタッフ
  - pass_wait_s … 受け渡し口で待った秒数
  - late_staff_pickup … 2分を過ぎて人が拾った皿（1 なら該当）

  ⚠ これまでの dishes.csv（戻した1回ずつ）は requeues.csv に移しました。
  中身と列名は同じです。読み手を探したところ Unity
  の中だけだったので、外の集計は壊れません。

  summary.json の sim_like に3つ足しました:
  "late_staff_dishes"   2分を過ぎて人が拾った皿の数
  "late_staff_share"    届いた皿に対する割合
  "robot_first_wait_s"  その回に使った値（120）

  4. キッチンのモニター

  受け渡し口でロボットを待っている皿 N
  dishes.csv の late_staff_pickup と同じ皿を数えています（120 秒の中にいて、まだ
  誰も持っていない皿）。はじめからスタッフが運ぶ皿は数えません。
  LABEL_RULES.md を先に直してから作りました（「新しい表示を足すときは先にこのファ
  イルを直す」の決まりどおり）。

  5. ほかの動きは変えていません

  よけ方・通路・立ち往生の助け方・NavMesh・前のセンサー・PickBatch の通路の決まり
  — いずれも触っていません。

  コンパイルの確認

  Unity 同梱の Roslyn（DotNetSdkRoslyn/csc.dll）＋ Unity
  の参照アセンブリで2つに分けて通しました。エラー・警告ゼロです。
  ServiceSim ランタイム 35 ファイル  → OK
  ServiceSim/Editor           → OK
  ただし Unity 本体はまだ再コンパイルしていません（Editor
  にフォーカスが当たっていないため、ログは 21:40 止まり）。一度 Unity
  に切り替えてコンパイルを通してから回してください。

  回すときの注意

  ServiceOps に欄を1つ足した（_dishesWaitingForRobot）ので、シーンを次に保存する
  と1行だけ増えます（_dishesWaitingForRobot: 
  0）。読むだけの表示欄で動きには効きません。

  ③ を回したあと、前の回（1311）と比べる所は summary.json の robot_share /
  dish_wait_mean / entry_wait_mean、それに新しい late_staff_dishes
  です。ロボット0台の条件は回し方が cs:136 
  と同じなので、そこが揃っていれば比較の土台が確かめられます。
