====================================================================
依頼108：⑧の待機点を2列にした店の形で建て直し、どかされた台が待機点へ戻るように直して、⑧で比べる
2026-11-07 13:09〜13:45　作業場所 cs:89 → cs:90（直し）→ cs:91（店の形）→ cs:92・cs:93（待機点の確かめ用）
====================================================================

結論
  ・2 の確かめのうち「⑧の待機点に5台がそれぞれ入れること」が通らなかった。依頼の決まり（入れない待機点があれば止める・
    通らなければ 3 は回さない・2 が通れば撮る）に従い、3（回す）・4（表と図）・5（撮る）はやっていない
      待機点3（奥の列の右）：台3 だけを往復させ、ほかの4台は待機点にいるままにすると、台3 は外へは出られたが、
        戻るときに手前の列の待機点5 の台の真下（21.1, 8.85）ですれ違いの動きをくり返し、900 秒（店の時刻）たっても待機点3 に戻れなかった
      待機点2（奥の列のまん中）：台2 だけを往復させたときは戻れた（101 秒）。ただ、台1 が待機点の中心から 0.23 m ずれて止まっていた
        ときは（1台ずつ順に回したとき）、台2 は待機点1 と待機点4 のあいだの通り道で行ったり来たりして、900 秒のうちに外へ出られなかった
      待機点1・4・5：戻れた
  ・止める線（瞬間移動・同じ種の2回の違い）には当たっていない。瞬間移動 0・1コマの跳び 0。⑧5台 serve 種0 の2回は全ファイル一致
  ・⑨（店の形は版の名前だけ）2台 serve 種7 は large95 と同じにはならなかった。原因は「どかされた台が戻る」直しで、店の形の読み直しではない
    （直しだけを入れて前の店の形のままの実行ファイルと、新しい店の形の実行ファイルで、⑨は版の名前の1欄のほかは全ファイル一致。
     large95 と比べると、直しが初めて働いた時刻 10,597 秒より前はすべて同じ）
  ・どかされた台が戻る直しは入れた（cs:90）。⑧5台 種0 では 67 回戻り、65 回は待機点に着き、2 回は戻る途中で次の往復へ出た


--------------------------------------------------------------------
0. 始める前の確かめ（13:09〜13:16）
--------------------------------------------------------------------
  1. 作業場所 cs:89 - head・保留 0（cm status）。Builds/headless は build_id cs89_20261107_1003・unity_cs ServiceSim/cs:89・pending_changes 空
     Unity エディタ・night_runner・rec_runner は動いていなかった（動いていたのは Unity Hub と、この依頼の claude だけ）。
     KIOXIA マウント済み／unity_ledger_v1.lock なし
     退避：archive/unity_ledger_v1_pre_108_20261107/
       unity_ledger_v1.csv　3,510 行・md5 5c38ea6493dfe5c79db00dfbf463e6c1（依頼105 の終わりと同じ）
       unity_ledger_v1_excluded_runs.csv　24 行・md5 d754edc5add03259ab8050e43d200322（依頼105 の終わりと同じ）
  2. サイトの写し：p2m-site 18d23fe（main と同じ）から gh api で取った。置き場所 unity/site_copy_large-b13cd179e6bf_sb108/
       params.json（md5 2e296629dcf75070ab1010311e6e63d7。main と同じ）・layouts_large/summary.json・layouts_large/unity/ の4つ・
       layouts_large/layout/（p6・p7 の layout。robot_standby.slot_rects を見るため。Unity は読まない）・README.txt
     前の写し（cs:89 の Unity の写し＝site_copy_large-99db3254b08b_large95 と同じ md5）と JSON を中まで比べた
       params：違いは meta.layout_generation_large（large-99db3254b08b → large-b13cd179e6bf）・stores.large_p6（dist_list 19 卓・dist_m の最大 22.0 → 21.4）・
         unity_conditions の site_result が 23 件。23 件はどれも large_p6 の条件（large_p6 の条件はちょうど 23 件）。condition の中身・ほかの欄は同じ → 依頼どおり
       ⑨ p7_large_b.json・p7_large_b_map.json：違いは meta.generation の1行だけ → 依頼どおり
       summary.json：generation 2か所と⑧の robot_dist_mean 15.6 → 15.5・robot_dist_max 21.97 → 21.38
       ⑧ p6_large_center_map.json：generation の1行だけ（地図のマスは同じ）
       ⑧ p6_large_center.json：待機点6つ（依頼文の座標どおり。奥の列 y 11.35 に x 18.9・20.5・22.1、手前の列 y 9.5 に x 19.7・21.3・22.9）・
         通路2本の end_dist・道順（routes）・generation。それと、依頼文に書かれていない違いが1つあった：
         ★ スタッフの持ち場 4（StaffPost）が (10.75, 12.75) → (23.25, 11.75) に動いていた（待機点3 の右上、約 1.2 m）。
           この持ち場は⑧の回で使われている（run_info の staff_posts.posts_used 4）。下書きの 93e2d10 から変わっている。
           公開済みの店の形なのでそのまま使った（決めてほしいこと 2）
  3. 除く一覧に3行足した（理由「依頼105 で cs:88（戻る台の待機点の決め方を cs:89 で直す前の作り）の実行ファイルで回した確かめの回。
     依頼105 の決めてほしいこと 3 でエイイチが除くと決めた」・決めた日 2026-11-07）
       20261107_det105_cs88_large_p6_r5_s7_passon_sbret_ek_post_rescue_smove
       20261107_chk105a_cs88_large_p6_r5_s0_passon_sbret_ek_post_rescue_smove_sq_rstop
       20261107_chk105b_cs88_large_p6_r5_s0_passon_sbret_ek_post_rescue_smove_sq_rstop
     24 行 → 27 行・md5 dcaed1a6000e1426600e4d7a03058ab0


--------------------------------------------------------------------
1. 直す・建て直す
--------------------------------------------------------------------
1-1. どかされた台が待機点へ戻る（作りの直し・切り替えなし。cs:90）
  穴の中身：往復を終えて止まっている台（Idle／Done）は、スタッフに押されると「動かした所で次の仕事を待つ」作りだった
    （ServingRobotController.FinishRescueMove）。ServiceOps.ParkIdleRobots は毎コマ GoStandby を呼ぶが、GoStandby は NavMesh の行き先を
    入れるだけで、往復の外の台は Update で動かさないため、待機点へは戻っていなかった
  直し（Assets/ServiceSim/Robot/ServingRobotController.cs）
    ・EndRescuePush（2717 行め）：押す前に往復の外で止まっていた台なら、押し終わって助けの行を閉じたあと TryBeginParkReturn を呼ぶ
      （近くのスタッフ・30 秒の呼び出しのどちらも、この押しを通る）
    ・FinishEscort（3036 行め）：連れて戻された台は、そこで往復が終わったあと、連れて戻された所が自分の待機点でなければ同じく戻る
    ・「どかされた台が待機点へ戻る」の節（2720〜2850 行め）
        TryBeginParkReturn：待機場所へ戻るが入の回で、自分の待機点（SetStandbyPoint で決まった所＝standby_queue 切では台 i → 待機点 i。決め方は変えていない）
          から arriveRadius より離れていれば、往復の戻り（段「受け渡し口へ」・行き先は自分の待機点）と同じ走り方で自分で走って戻る。
          前のセンサー・見張り・30 秒の呼び出し・押される・連れて戻すも往復と同じに働く。瞬間移動はしない。地図で道が引けなければ戻らない（数える）
        FinishParkReturn（Finish の頭 3575 行めから）：着いた・連れて戻された・取りやめのとき。往復ではないので TripCompleted（trips.csv）は出さない
        EndParkReturn：開いている止まりを閉じて ParkReturnEnded を知らせる
    ・StartRunCore（869 行め）：戻る途中で次の往復が来たら、そこで戻りを終えて、いまいる所から往復を始める
    ・BeginRun の数と走りの中身の初期化を ResetRunState（894 行め）に分けた（中身・順番は同じ。戻り始めにも使う）
  Assets/ServiceSim/Service/ServiceOps.cs
    ・AssignRobots（3663 行め）：戻る途中の台にも、走っていて（段「受け渡し口へ」）、助け・近くのスタッフの動かしにかかわっていなければ次の往復を渡す
    ・SampleRobotUtil（1515 行め）：戻っているあいだは robot_util の「ふさがっている」に数えない（往復の外）
  記録（Assets/ServiceSim/Experiment/ExperimentRunner.cs・TripLogger.cs）
    ・戻りのあいだの止まりは stops.csv に trip_id 0 で入れる（往復の止まりと同じ欄。往復の id は 1 から）
    ・park_returns.csv（新しく足した。どの回にも書く。無い回はヘッダーだけ）：1回の戻り1行（始めた時刻・終わった時刻・どこから・自分の待機点・
      走った距離・止まり・終わったときの待機点までの距離・どう終わったか＝着いた／次の往復へ／連れて戻された／取りやめ／回の終わり）
    ・summary.json の park_return（1回でも戻り始めた・道が引けなかった回だけ書く）：begun・arrived・next_trip・escorted・aborted・run_end・no_path・return_s・stopped_s・stops
    ・robot_track.csv の段は、戻っているあいだも今までの戻りと同じ「受け渡し口へ」（依頼104 の型分けで「戻る台」に入る）
  中身の数：⑧5台 serve 種0（chk108a）で 67 回戻り始め、着いた 65・次の往復へ 2・道が引けない 0。戻っていた秒の合計 365 秒・うち止まり 285 秒・止まり 133 回
    ⑨2台 serve 種7（det108）で 9 回（9 回とも着いた。動かされた距離は 0.3〜0.8 m で、戻りの 291 秒のうち 284 秒は止まっていた）

1-2. ⑧を新しい店の形で建て直す（cs:91）
  サイトの unity/ の4ファイルと summary.json を Assets/ServiceSim/Store/Layouts/large/ に、params を Assets/ServiceSim/Experiment/serving-robot-params.json に写した
  （md5 は 0 章の写しと同じ）。店は回すたびに JSON から建てるので（依頼95 の⑨の直しと同じ）、写せば新しい店の形になる。ロボットの地図も新しい p6_large_center_map.json を読む
  1列に並んでいる前提のコード：Unity の作りには無かった（待機点はどこも店の形の RobotStandby の点を読んでいる：置き始め ExperimentRunner・
    台ごとの待機点 ServiceOps.RegisterRobot／ParkIdleRobots・置き直し PickResetPoint・道の確かめ TrafficRules.CheckReach／MapPlanCheck）。
    1列の前提があったのは型分けの台本（依頼104 の ep104.py の待機場所のそばの四角 BOX と「並びの中」の端 ROW_X・ROW_Y が数で書いてあった）なので、
    依頼108 の ep108.py・common108.py で待機点の rect から決めるように直した（1列の店の形では依頼104 と同じ数になることを確かめた。新しい店の形では
    BOX x 17.8〜24.3・y 8.15〜12.6、ROW_X 18.5、ROW_Y 8.9）

1-3. check-in と実行ファイル（cm ci でファイルを1つずつ指定。保留 0）
  cs:90：ServingRobotController.cs・ServiceOps.cs・ExperimentRunner.cs・TripLogger.cs（直しだけ。店の形・params は前のまま）
    → 実行ファイルを作り、Builds/sb108ret_cs90 に写して残した（build_id cs90_20261107_1320・実行ファイル md5 c9e0cf6451549a3196201cd87ca2d5ea）。
      3-1 の「前の店の形（1列）のまま、直しだけ」はこの実行ファイルで回すつもりだった（前の店の形の写しを別名で残す方法として。0 章の前の写しも残っている）
  cs:91：店の形5ファイル・params（新しい店の形）
  cs:92：待機点に入れるかの確かめ（-ssStandbyCheck on のときだけ。HeadlessRun.cs・ExperimentRunner.cs の UpdateStandbyCheck。台帳には書かない・フォルダ名に _sbchk）
  cs:93：その確かめで往復させる台を1台にする（-ssStandbyCheckOnly 台の番号）
  いまの Builds/headless：build_id cs93_20261107_1331・unity_cs ServiceSim/cs:93・pending_changes 空・Build Finished, Result: Success
  cs:92 のふだんの回（chk108c：⑧5台 serve 種0）は cs:91 の chk108a と全ファイル一致（確かめ用の作りはふだんの回を変えていない）


--------------------------------------------------------------------
2. 確かめ
--------------------------------------------------------------------
  比べ方：cmp108.py（依頼105 の cmp105.py の写し・md5 同じ）。pre108.py は、ある時刻より前の行だけを比べる台本（新しく書いた）
  (1) ⑨ 2台 serve 種7 人の先よけ入（すぐ押す 切。large95 と同じ指定）
      cs:91（det108）と large95（20261106_large95_cs81_…_pyield）：同じにならなかった（conditions.json・requeues.csv だけ同じ）
      分け方：
        ・cs:90（直しだけ・前の店の形。p7ret108）と cs:91（直し＋新しい店の形。det108）は、run_info.json の map_generation（版の名前）のほかは全ファイル一致
          → 店の形の読み直しによる違いは無い
        ・large95 と cs:90 の違いは、直しが初めて働いた時刻（台1 が 30 秒の呼び出しで押されたあと戻り始めた 10,597.25 秒）より前はすべて同じ
          （robot_track 4,240 行・stops 1,068 行・trips 118 行・timeline 177 行・contacts・people_jams・rescues・yields・yield_ahead・give_ups・nowarp_jams。
           groups はその時刻より前に帰り終えた 78 組が同じ）。最初の違いは 10,600 秒の robot_track（台1 が待機点へ戻り始めている）
          → 違いは、どかされた台が戻る直しのせい
        ・瞬間移動 0・1コマの跳び 0・全員が帰った
  (2) ⑧5台 serve 種0（すぐ押す 入・人の先よけ 切）を2回（chk108a・chk108b。cs:91）→ 19 ファイルとも一致（park_returns.csv も同じ）
  (3) 瞬間移動 0・1コマの跳び 0（p7ret108・det108・chk108a・chk108b・chk108c のどれも）
  (4) ⑧の待機点に5台がそれぞれ入れるか → 通らなかった
      確かめ方（cs:92・cs:93 の確かめ用の作り）：⑧5台の条件で店を建て（台 i は待機点 i に置いて始める）、客は来させず（スタッフはふだんどおり）、
        台を1台ずつ、受け渡し口に一番近い卓（T27）へ1往復させる（待機点 → 受け渡し口 → 卓 → 自分の待機点。走り方・止まる決まり・助けはふだんと同じ）。
        往復が終わったとき自分の待機点から arriveRadius（0.25 m）以内にいれば「入れた」。1台あたり店の時刻で 900 秒まで待つ
      ・地図の上で道を引くだけ（エディタの「⑧⑨ 確かめ A」。台を置かない）：受け渡し口から待機点1〜6 のどれにも道が引けた
        （奥の列 1〜3 は「狭い道だけ」のマス、手前の列 4〜6 は「ふだんの道」のマス）
      ・台を1台だけ往復させる（ほかの4台は待機点にいるまま。sbchk1〜5）
          台	待機点	結果	往復の秒	止まり（回／秒）	待機点まで
          1	1 (18.9, 11.35)	入れた	68.9	6／12.1	0.230 m
          2	2 (20.5, 11.35)	入れた	101.1	7／16.3	0.219 m
          3	3 (22.1, 11.35)	900 秒で戻れず	900.0	214／669.0（60 秒動けなくなった 1）	2.762 m
          4	4 (19.7, 9.5)	往復は終わった（台が着いたと判断）	82.9	3／5.1	0.260 m（0.25 より 1 cm 外）
          5	5 (21.3, 9.5)	入れた	69.7	2／5.1	0.242 m
          台3：出るのは出られた（待機点のすぐ左で約 40 秒止まった）。戻るとき、地図の道が手前の列の下から上がる向きになり、待機点5 の台の真下（21.1, 8.85）で、
            その台をすれ違う相手とみてすれ違いの動きと後ずさりをくり返し、そのまま 900 秒たった（依頼104 の D「1台が行ったり来たり」と同じ形）
          台4：往復は「着いた」で終わっている（着いたかは道の終わりの点で見ているため）。待機点の中心から 0.26 m で、入れたとみてよいと思う
      ・1台ずつ順に（台1→台5。前の台が終わってから次。sbchk）
          台2：台1 が戻って待機点1 の中心から左へ 0.23 m ずれて止まったあと、待機点1 と待機点4 の台のあいだの通り道（19.5, 10.57）で
            行ったり来たりして 900 秒のうちに出られなかった（止まりとしては 66.7 秒しか数えられず、30 秒の呼び出しにならなかった）
          台3：台2 が通り道に残っていたため、これも 900 秒のうちに戻れなかった（台3 の結果としては見ていない。上の1台だけの確かめで見た）
          台1・4・5：入れた。台2・3 は、ほかの台が動いたあと、記録の終わりまでには自分の待機点に入っていた
      図：night/20261107_sb108/fig_standby_check108.png（報告の置き場所の 20261107_sb108_files/ にも写した）
      ふだんの回では：chk108a（種0）は全員が帰り、待機場所のそばの止まりは 1列（sm101p6on 種0）より少なかった（下の参考）が、
        30 秒の呼び出しは 41 → 104 回に増えた。ほかの台が動くので、確かめのような長い詰まりにはならずに解けていた
  → (4) が通らなかったので、3 は回していない


--------------------------------------------------------------------
3〜5. 回す・表と図・撮る
--------------------------------------------------------------------
  回していない（2 の (4) が通らなかったため。依頼の「通らなければ 3 は回さない」「2 が通れば撮る」に従った）
  用意してあるもの（このあと回すときに使える）
    ・3-1（sb108ret）用の実行ファイル Builds/sb108ret_cs90（直し＋前の1列の店の形・前の params）
    ・型分けの台本 ep108.py・common108.py（店の形の置き場所を LAYOUT_DIR で選ぶ。前の店の形の写しは night/20261107_sb108/layout_1row_99db/）
  参考（種0 の1回だけ。10 種の中央値ではない）
    項目	1列・直しなし（sm101p6on 種0・cs:87）	2列＋直し（chk108a・cs:91）
    ロボットの止まりの合計秒	6,279	4,406
    待機場所のそばの止まり（秒）	2,759	2,234
    待機場所のそばの 30 秒以上のロボット同士の詰まり（件／秒）	21／1,220	13／558
    60 秒動けなくなった（回）	14	1
    30 秒の呼び出し（回）	41	104
    スタッフが動かした（回）	105	108
    往復数	209	218
    料理ができてから届くまで（分）	1.52	1.38
    入店待ち（分・参考）	1.86	1.84
    全員が帰った	はい	はい


--------------------------------------------------------------------
台帳
--------------------------------------------------------------------
  3,510 行（始める前）→ 3,515 行（追記 5 行だけ。どれも completed）
    p7ret108（cs:90）・det108・chk108a・chk108b（cs:91）・chk108c（cs:92）
  先頭 3,510 行の md5 は 5c38ea6493dfe5c79db00dfbf463e6c1（始める前と同じ）。終わったあとの md5 13095221b8872182bf9f0955807256ae。鍵ファイルは残っていない
  待機点の確かめ（sbchk108・sbchk1081〜1085）は台帳に書いていない（回ではないため。フォルダは KIOXIA に残した）
  除く一覧：24 行 → 27 行（0 章の 3）・md5 dcaed1a6000e1426600e4d7a03058ab0


--------------------------------------------------------------------
記録の置き場所
--------------------------------------------------------------------
  KIOXIA night/20261107_sb108/：build_cs90〜93.log・compile1〜2.log・checkA_large.log（確かめ A）・q_*.json・run_chk108.sh・runner_*.txt・
    cmp108.py・pre108.py・cmp_*.txt・pre_p7ret108_vs_large95.txt・sbchk108*.log・standby_check_all.txt・figchk108.py・fig_standby_check108.png・
    common108.py・ep108.py・ep_ref_*.csv・layout_1row_99db/（前の⑧の店の形の写し）
    （置いた台本に 0 の字が入っていないことを確かめた）
  night/20261107_p7ret108・det108・chk108a・chk108b・chk108c（実行係の記録）・night/20261107_p7ret108_dry（名前を確かめるための、から回し）
  回のフォルダ：20261107_p7ret108_cs90_…・20261107_{det108|chk108a|chk108b}_cs91_…・20261107_chk108c_cs92_…・
    20261107_sbchk108_cs92_…_sbchk・20261107_sbchk108_cs93_…_sbchk1〜5
  サイトの写し：unity/site_copy_large-b13cd179e6bf_sb108/


--------------------------------------------------------------------
変えたファイル
--------------------------------------------------------------------
  Unity：cs:90 Robot/ServingRobotController.cs・Service/ServiceOps.cs・Experiment/ExperimentRunner.cs・Experiment/TripLogger.cs
         cs:91 Store/Layouts/large/p6_large_center.json・p6_large_center_map.json・p7_large_b.json・p7_large_b_map.json・summary.json・Experiment/serving-robot-params.json
         cs:92・cs:93 Experiment/HeadlessRun.cs・Experiment/ExperimentRunner.cs
  Builds/headless（cs:93 に作り直し）・Builds/sb108ret_cs90（新しく足した写し）
  KIOXIA：archive/unity_ledger_v1_pre_108_20261107/・除く一覧に3行・台帳への追記 5 行・上の置き場所のもの
  このファイルと 20261107_sb108_files/fig_standby_check108.png
  変えていない：サイト（何も上げていない）・tools/ の台本・rec101b の台帳の行・standby_queue／repeat_stop（切のまま）


--------------------------------------------------------------------
決めてほしいこと
--------------------------------------------------------------------
  1. 2列の店の形で、待機点3 に戻れない（台3 だけ往復させると、手前の列の待機点5 の台の真下で行ったり来たりして 900 秒たった）。
     待機点2 も、隣の台が少しずれて止まっていると外へ出られないことがあった。どうするか。例：
       ・待機点の位置・2列のあいだの幅を変える（サイトの店の形の直し）
       ・台の番号と待機点の組み合わせを変える（5台なら奥の列の右端 3 を使わず 6 を使う、など）
       ・止まっている台をすれ違う相手とみて行ったり来たりする動き（依頼104 の D）を先に直す
       ・このまま 3 を回す（ふだんの回では、ほかの台が動くので解けていた。種0 は全員が帰った）
     決まったら、3-1（sb108ret・Builds/sb108ret_cs90）・3-2・3-3 と撮影を回せる
  2. 新しい⑧の店の形で、スタッフの持ち場 4 が (10.75, 12.75) から待機点3 の右上 (23.25, 11.75) に動いていた（依頼文に無い違い）。
     サイトの作り直しで自動で動いたものか、決めて動かしたものか。比べる回の結果にかかわるので、このままでよいか
  3. 待機点に入れるかの確かめ（cs:92・93）の決め方は私が置いた（受け渡し口に一番近い卓へ1往復・ほかの台は待機点にいるまま・900 秒まで・中心から 0.25 m 以内）。
     この決め方でよいか
  4. 戻りのあいだの止まりを stops.csv（trip_id 0）に入れ、ロボットの止まりの合計秒に入るようにした。robot_util には入れていない。この数え方でよいか

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