====================================================================
依頼80：待機場所で止まっている台を、相手の前のセンサーにかからない所まで動かす
2026-11-03 12:58〜13:25　check-in：cs:68　build_id cs68_20261103_1303（保留 0）
====================================================================

結論
  ・ねらいの詰まりは解けた。⑦種7 で依頼79c に残った「待機場所の手前で 2 回ずつ 2 組」（8869〜9219 秒）は、
    8869 秒の 1 回の助けで解けた（2号機を 0.63 m 動かし、止まり始めから 72.4 秒）。そのあとの呼び出しは無い
  ・同じ種の 2 回は、8つの記録が 1 行も違わない
  ・ただし ⑦種7 で「1往復の打ち切りの置き直し」（瞬間移動）が 2 → 4 回に増えた。
    増えた 2 回は助けではなく、すれ違いで下がる状態が解けずに残ったもの（下の 4）。依頼どおりここで止めた

--------------------------------------------------------------------
0. 始める前の確かめ
--------------------------------------------------------------------
  Unity エディタ・night_runner・rec_runner：動いていない（Unity Hub だけ）／KIOXIA：マウント済み／
  unity_ledger_v1.lock：無し／保留 0／作業場所 cs:67 - head。どれも依頼どおり
  台帳を archive/unity_ledger_v1_pre_standby_rescue_20261103/ に退避（1716 行・md5 04d9e503b10b16b11cc5ac885b0f10da）

--------------------------------------------------------------------
1. 動かす先の決め方（Robot/ServingRobotController.cs の RescueMove）
--------------------------------------------------------------------
  ・往復を終えて止まっている台（道を持たない台）を、立ち往生した台の前から動かすときだけ使う
  ・相手（立ち往生した台）の道の先（いまの位置から 4 m）から、
      相手の体の半径 0.25 ＋ 相手の前のセンサーの長さ 0.6 ＋ 自分の体の半径 0.25 ＋ 今までの離れ 0.1 ＝ 1.2 m
    以上離れた所。前の決め方は 2 台の半径＋0.1 ＝ 0.6 m
  ・探すのは、いまのマスから床をたどって届く所だけ（障害物から自分の半径以上あるマスを通る。ほかの台の体の上は通らない）。
    近くの 2.5 m で無ければ 5 m まで広げる。そのうち、まっすぐの距離でいちばん近い所を選ぶ
    （同じ距離ならマスの番号の小さい方。乱数は使わない）
  ・置く所は、自分が入れるマス（free_class 1 以上）で、ほかの台・人と重ならず、椅子（引かれた椅子も）とも重ならない所
  ・見つからなければ今までの決め方に戻す。rescues.csv の最後に parked_fallback の列を足した（戻した回は 1、ほかは 0）
  ・ロボットの速さ・物理・譲る順番・人とロボットの数字・rescue_s 15 秒・30 秒の線・同じ種で同じ結果にする作りは変えていない
  ・メモ：依頼の「0.6 m と相手の半径」に、自分の体がかからないように自分の半径を足し、今までの離れ 0.1 m も残した
    （依頼79c の案 a「今までの範囲に 0.6 m も足す」と同じ 1.2 m になる）

--------------------------------------------------------------------
2. 基準データに使わない回の一覧
--------------------------------------------------------------------
  ・KIOXIA の service_sim/unity/unity_ledger_v1_excluded_runs.csv（列：run_folder・理由・決めた日）
    20 行（見出しを除く）。20261103_t1a〜t5b_cs65_… の 20 回（t4c・t4d を含む。台帳の unity_cs は ServiceSim/cs:65）
  ・judge_night.py：一覧の回を、振り分ける回からも基準データからも外す（出力フォルダが残っていても拾わない）
    確かめ：--runs '20261103_t*_cs65_*' は「振り分ける回が見つからない」、det1a の 6 回はそのまま拾う
  ・ledger.py：excluded_folders() を足し、read_rows(..., drop_excluded=True) で外せるようにした（読み 1715 → 1695 行）。
    同じ run_folder を 2 度書かない確かめ（has_row・all_folders・completed_folders）は、外さずに今までどおり見る
  ・台帳そのものは書き換えていない

--------------------------------------------------------------------
3. 変えたファイルと版
--------------------------------------------------------------------
  cs:68　Assets/ServiceSim/Robot/ServingRobotController.cs・Service/ServiceOps.cs・Experiment/TripLogger.cs・
          tools/ledger.py・tools/judge_night.py
  実行ファイル：Builds/headless と Builds/rec15_standby68（どちらも build_id cs68_20261103_1303・unity_cs cs:68・保留 0）
  KIOXIA：unity_ledger_v1_excluded_runs.csv を新しく作った

--------------------------------------------------------------------
4. 確かめ（画面なし・night_runner・同時 1 本・--no-retry。8 回とも completed・終了コード 0・1 回 1.2〜1.4 分）
--------------------------------------------------------------------
 (1) ⑦ fam_p5・種7・ロボット2台（sb80a）
   ・ねらいの詰まり（依頼79c で 8869・8941・9169・9218 秒の 4 回、9156 秒から 104 秒の止まり）
       → 8869 秒の 1 回だけ。2号機を (17.49, 5.99) → (18.11, 5.99) へ 0.63 m 動かし、止まり始めから 72.4 秒で解けた
         （呼ぶまで 30.0 秒＋スタッフが歩いた 20.1 秒＋動かす 15 秒ほか）。1号機は 8915 秒に往復を終えた
       → 待機場所のあたりで 30 秒以上の止まり：依頼79c は 5 回（うち 104 秒 1 回）→ 今回 3 回。
         9104 秒・9705 秒にも止まりはあるが 14 秒ほどで自分で動き出した
   ・同じ所で何度も助け（1 m 以内・200 秒以内に 2 回以上）：0 組（依頼79c は 2 組）
   ・新しい決め方で動かしたのは 1 回、今までの決め方に戻したのは 0 回
   ・残ったもの：1163 秒と 2578 秒の待機場所の助けは、まだ 0.02 m しか動いていない（依頼79c と同じ数字）。
     呼んだときは2号機が止まっていたが、スタッフが動かし終える前に2号機が次の往復に出たため（1240 秒に「卓へ」）、
     動かすときには「止まっている台」でなくなり、新しい決め方の外になっている。
     どちらも2号機が自分で出て行って解けた（止まり始めから 118.8 秒・60.6 秒）
   ・助けに行ったスタッフの瞬間移動 0 回。着けずに交代 1 回（1163 秒。依頼79c と同じ）
 (2) 同じ回をもう 1 回（sb80b）
   trips 121 行・stops 654 行・people_jams 516 行・yields 994 行・contacts 183 行・rescues 13 行・give_ups 63 行・
   summary 309 項目、8つとも 1 行も違わない（外したのは plan_ms_max・written_at だけ。参考の 6 つも全部同じ）
 (3) ③ fam_p1・⑦ fam_p5 × ロボット2台 × 種 0・3・7（sb80six。かっこ内は依頼79c の cs:67 の同じ回）
   立ち往生＝60 秒で動けなくなった回数、瞬間移動＝summary.json の teleports の合計、
   入店待ち＝groups.csv の waited_min の中央値（分）、料理の待ち＝dishes.csv の 届いた−できた の中央値（分）

   回        立ち往生  30秒以上  瞬間移動   助け(呼んだ/動かした)  同じ所の続き  入店待ち     料理の待ち
   ③種0     1 (1)     12 (12)   19 (19)    10/5  (10/5)           0 (0)        1.23 (1.23)  0.94 (0.94)
   ③種3     3 (3)     20 (21)   31 (33)    20/14 (22/17)          4 (2)        1.36 (1.36)  1.47 (1.13)
   ③種7     7 (10)    28 (35)   36 (37)    26/18 (32/24)          2 (6)        1.33 (1.33)  1.44 (1.45)
   ⑦種0     1 (1)     20 (18)   24 (20)    20/13 (18/11)          6 (6)        1.26 (1.26)  0.86 (0.83)
   ⑦種3     0 (1)      7 (12)   23 (26)     7/7  (44/44)          0 (35)       1.36 (1.36)  1.34 (1.42)
   ⑦種7     3 (3)     13 (16)   22 (19)    13/11 (17/14)          0 (2)        1.41 (1.41)  1.43 (1.40)
   6回の合計 15 (19)  100 (114)  155 (154)  96/68 (143/106)       12 (51)

   ・今までの決め方に戻した回：6 回とも 0。助けに行ったスタッフの瞬間移動：6 回とも 0
   ・⑦種3：依頼79c では (15, 6) で、止まっている2号機を 0.025 m ずつ動かす助けが 37 回続いていた（依頼79c の報告に無かった形）。
     今回は 0 回。呼び出しは 44 → 7 回
   ・③種3・⑦種0 の「同じ所の続き」は、どれも人とロボットの助け（呼んだ台を動かす形）で、今回の直しの外。
     依頼79c の回にも同じ形がある
   ・③種3 の交代 0 → 1（5120 秒・止まり始めから 131 秒で解けた）。ほかの回では交代は同じか減った
   ・瞬間移動の増えた回
       ⑦種0　20 → 24：客の逃がし弁 19 → 23（ドリンクバーなど）。助け・ロボットの瞬間移動は増えていない
       ⑦種7　19 → 22：客の逃がし弁 15 → 16、1往復の打ち切りの置き直し 2 → 4
   ★ ⑦種7 で増えた打ち切り 2 回（1号機の往復 117・121、どちらも卓34 行き、9063〜10261 秒）
       1号機が (20.95, 6.25) で「すれ違いで下がる」状態（robot_track の backing_off=1）のまま約 500 秒止まり、
       600 秒で打ち切られて置き直された。置き直したあとの往復 121 も同じ所で同じ形になった。
       このとき2号機は遠く（(8.7, 6.6) や待機場所）にいて、下がる相手がいない。
       stops.csv にはこの止まりが入っていない（30 秒以上の止まりにも数えられていない）。
       8869 秒の助けのあと、動きの流れが前の版と変わって初めて出た形で、助けの処理の中ではなく、すれ違いの処理の中で起きている。
       cs:67 の ⑦種7 の 5 回（det1a・det1b・det4a・det4b・rescue79）にはこの形は無い

--------------------------------------------------------------------
5. 台帳
--------------------------------------------------------------------
  1716 行 → 1724 行（追記だけ。列は 59 のまま。先頭 1716 行の md5 は 04d9e503… で、始める前と同じ）
  終わったあとの md5 3dafb380b4b46527037f948cfe494059。鍵ファイルは残っていない
  追記 8 行：sb80a・sb80b 各 1、sb80six 6（どれも cs:68・completed）
  記録：night/20261103_standby80_sb80a・_sb80b・_sb80six。調べに使った手順は /tmp/req80/（six.py）と /tmp/req79/（cmp.py・rescue_check.py）

--------------------------------------------------------------------
決めてほしいこと
--------------------------------------------------------------------
  1. ⑦種7 の、相手がいないのに「すれ違いで下がる」状態が解けず、1往復の打ち切りになる形（瞬間移動 +2）をどうするか。
     助けの直しの中ではなく、すれ違いの処理の中で起きている。案：
       a. 次の依頼で、すれ違いで下がる状態に「相手がいなくなった・離れたら終える」決まりを足す（直す範囲が今回の外のため、今回は触っていない）
       b. 今回の cs:68 はこのまま使い、この形は記録だけしておく
  2. スタッフが着く前に、止まっていた台が次の往復に出た回（⑦種7 の 1163・2578 秒）は、今の決め方（0.02 m）のまま。
     このときも 1.2 m 離す決め方を使うか（今はどちらも、出て行った台が自分で離れて解けている）
  3. 動かす先の離れに、今までの 0.1 m も足して 1.2 m にした。1.1 m（0.1 m を足さない）にするか

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