v8b を v8 に足し終えました。Check-in はまだです（指示書どおり、確かめのあと v8
  と一緒に1回で入れます）。

  記録で原因を裏付けました

  止まった回（..._0859_stopped）を読みました。指示書のとおりです。

  ┌────────┬─────────────────────────────────────────────────┐
  │        │                                                 │
  ├────────┼─────────────────────────────────────────────────┤
  │ 止まり │ 434 回中 394 回が (15.3, 6.0) ＝ 受け渡し口の点 │
  ├────────┼─────────────────────────────────────────────────┤
  │ 原因   │ 「もう1台のロボット」401 回                     │
  ├────────┼─────────────────────────────────────────────────┤
  │ 往復   │ 68 回中 timeout 54・stuck 54                    │
  └────────┴─────────────────────────────────────────────────┘

  A. 打ち切りで戻すとき、ほかの台と重ねない

  ServingRobotController.cs:
  - 打ち切り（TotalS > maxTripSec）の置き直しを PlaceAt(_passPoint, …) から
  PickResetPoint() に変更
  - 選ぶ順: 受け渡し口の点 → 待機場所（RobotStandbyPoints）を順に。ほかの台が
  直径 0.5 m ＋ 余裕 0.3 m ＝ 0.8 m 以内にいる点は飛ばします
  - どこも空いていなければ、ほかの台からいちばん遠い待機場所へ
  - 置き直した先を ResetTo（pass / standby1 / standby2 …）に残し、StartRun
  で往復ごとに空へ戻します

  TripLogger.cs / ExperimentRunner.cs: trips.csv の後ろに reset_to
  列を追加（打ち切りでない往復は空）。

  打ち切りそのもの（600秒）と timeout の1行は変えていません。行き止まりで2台が向
  かい合うこと自体も、指示書どおり今回は触っていません。

  B. 来る客を、版や動きのずれに関係なくそろえる

  GroupManager.cs の乱数を3つに分けました。

  ┌────────┬─────────────┬──────────────────────────────────────────────────┐
  │  乱数  │     種      │                     引くもの                     │
  ├────────┼─────────────┼──────────────────────────────────────────────────┤
  │ _arriv │ seed * 7919 │ 来客の間隔だけ（2か所の ExponentialSec）         │
  │ alRng  │  + 101      │                                                  │
  ├────────┼─────────────┼──────────────────────────────────────────────────┤
  │ Group. │ seed        │ 人数・最初の2皿の作る時間・食べる時間・割れ物・  │
  │ rng    │ と組の番号  │ 呼び出し・ドリンクバー・トイレ                   │
  │        │ から作る    │                                                  │
  ├────────┼─────────────┼──────────────────────────────────────────────────┤
  │        │ seed * 7919 │                                                  │
  │ _rng   │  + 13（その │ 待つ場所を選ぶ（RandomWaitingSpot）だけ          │
  │        │ まま）      │                                                  │
  └────────┴─────────────┴──────────────────────────────────────────────────┘

  組ごとの乱数は NewGroupRng(groupId) が種と組の番号だけから作るので、いつ引いて
  も同じ組なら同じ値です。引く順番も組ごとに決まっています:

  人数 → 1皿めの作る時間 → 2皿めの作る時間 → 食べる時間
      → 割れ物（数・時刻・作る時間）→ 呼び出し×2 → ドリンクバー → トイレ

  ScheduleDuringMeal
  は「食べ始め」の直後にしか呼ばれないこと（呼び出し2か所とも）、PickGroupSize
  が2か所とも g.rng になったことを確認済みです。慣らしの組（SeedWarmupGroups）も
  同じ扱いにしました。

  引く数の分布・決まり（ServiceSpec の値）は変えていません。
  変わったのは「どの乱数の列から引くか」だけです。.asset
  は1つも触っていません（保留ファイル一覧に .asset がないことで確認済み）。

  ご指摘のとおり、この直しで cs:140 
  と同じ種でも来る客は変わります（段階Bの18回とは客がそろいません）。

  ---
  お願い：確かめの2回を回してください
  
  Unity がプロジェクトを開いているので私からは回せません。一度 Unity 
  に切り替えて（再コンパイルされます）、ServiceSim / Site Run から順に2回:

  1. ③ スタッフ4人・ロボット2台
  2. ③ スタッフ4人・ロボット0台

  どちらも種0（ExperimentPlan.trialSeed）です。終わったら「終わった」と教えてくだ
  さい。

  確かめ用スクリプトは用意済みで、次を機械で見ます:

  - B1 2回の groups.csv で group_id・arrive_s・size が全部同じ
  - B2 同じ組の食べる時間（eat_end_s − eat_start_s）が2回で同じ
  - A1 打ち切りの往復に reset_to が入っている（置き直した先の内訳も出します）
  - A2 同じ点で「もう1台のロボット」の止まりが 60 秒以上続いていない
  - v8 の5項目 — b2 は指示どおり、requeues.csv 
  の皿を「2つの往復に出ていない」から除き、代わりに「最初の往復で着いた時刻が
  -1」を見ます
  - どちらの回も全員が店を出た（everyone_left かつ stopped_early でない）

  比べ先の robot.carry_mean_min = 2.9041 分（段階B ③r2s0）も確認済みです。

  なお ServingRobotController に ResetTo を足したので
  1回目は打ち切りが0回かもしれません（A が効けば本来そうなるはずです）。その場合
  A1 は「打ち切りなし」と出ますが、それは直った証拠なので、A2
  と合わせて報告します。
