====================================================================
依頼79：同じ種で同じ結果にし、立ち往生の助けを瞬間移動なしに直す
2026-11-03 11:52　始める前の確かめで止めた（コード・実行ファイル・台帳はどれも触っていない）
====================================================================

始める前の確かめ
  ・Unity：動いている。依頼78（人の動きを部品として切り出す）の別の作業が同時に走っていて、
    Unity をバッチで起動し、試しのコンパイルをしている（ログ /tmp/req78_compile.log）
  ・night_runner・rec_runner：動いていない
  ・KIOXIA：マウント済み。unity_ledger_v1.lock：無し
  ・ServiceSim の保留：0 ではない（cs:63 head の上に 10 件）。依頼78 の作業中の変更
      変更：Experiment/HeadlessRun.cs・ExperimentRunner.cs・TripLogger.cs・Service/JamWatcher.cs・
            People/PersonRobotYield.cs・tools/night_runner.py
      新規：People/PersonPart.cs・CurrentPersonPart.cs（と .meta）
  → 「Unity が動いていない」「保留 0」の2つが違うので、依頼のとおり手を止めた

やったこと
  ・上の確かめと、依頼76・77 の報告を読んだだけ
  ・台帳の退避もしていない（回していないため）

変えたファイル
  ・この報告ファイルだけ

決めてほしいこと
  1. 依頼78 と依頼79 の順番。どちらも人の道・PersonRobotYield・HeadlessRun・ExperimentRunner・
     TripLogger を触るので、同時には進められない。依頼78 の check-in（または取りやめ）が終わってから
     依頼79 を回すか、依頼79 を先にするか
  2. 依頼78 は「中身を変えずに切り出す」なので、依頼79 で人の道を同期にすると 78 の基準が変わる。
     78 の後に 79 を回すなら、そのままでよいか

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


====================================================================
依頼79b：同じ種で同じ結果にし、立ち往生の助けを瞬間移動なしに直す
2026-11-03 11:56〜12:00　「0. 先に片付けること」で止めた（コード・実行ファイル・台帳はどれも触っていない）
====================================================================

結論（一行）
  依頼78 の書きかけは保留として残っていなかった。11:53:14 に cs:64 として check-in 済みで、
  そのあと実行ファイル2つ（headless_part64・rec13_part64）を作り、試しの回も1つ始めていた。
  cs:63 の状態に戻すには「戻すための check-in」か「作業場所を cs:63 に切り替える」のどちらかが要る。
  どちらも依頼の「check-in はしない」「保留を取り消す」の範囲を外れるので、そこで止めた。

--------------------------------------------------------------------
0. 先に片付けること で見たもの
--------------------------------------------------------------------
  ・バッチの Unity：残っていなかった。Unity のコンパイル用の裏方（VBCSCompiler、11:52〜11:53 起動の3つ）
    だけ残っていたので終わらせた。Unity エディタ・night_runner・rec_runner・ServiceSim.app も動いていない
  ・ServiceSim の作業場所：cs:64 - head、保留 0
      cs:64　2026/11/03 11:53:14
      コメント「依頼78：人の動きを差し替えられる部品として切り出す（IPersonPart・最初の部品 current＝
      今の動きそのもの。PersonRobotYield・JamWatcher は当てはめと記録だけ。-ssPersonPart、
      summary.json・trips.csv に person_part）」
      変更：ExperimentRunner.cs・HeadlessRun.cs・TripLogger.cs・PersonRobotYield.cs・JamWatcher.cs・
            tools/make_queue.py・tools/night_runner.py
      新規：People/PersonPart.cs・CurrentPersonPart.cs（と .meta）
      （依頼にあった10件に make_queue.py が加わった11件）
  ・依頼78 が作った実行ファイル（どちらも cs64_20261103_1153・pending 空）
      Builds/headless_part64（11:53:40）・Builds/rec13_part64（11:53:46）
  ・Builds/headless：今も cs63_20261103_1114（pending 空）。依頼どおり
  ・KIOXIA に依頼78 が残したもの（台帳には書いていない）
      night/20261103_part_p/（11:54）
      20261103_part_p_cs64_fam_p1_r0_s0_passon_sbret_ek_post_rescue_stopped（11:54・途中で止まった回）
      archive/unity_ledger_v1_pre_part_20261103/（11:53・台帳の退避）
  ・台帳 unity_ledger_v1.csv：1671 行・md5 f4bdbeb5ddd45c8b6f7c93a08a15f865（依頼77 の終わりと同じ。変わっていない）
  ・unity_ledger_v1.lock：無し。KIOXIA：マウント済み

--------------------------------------------------------------------
やったこと
--------------------------------------------------------------------
  ・上の確かめと、依頼76・77・79 の報告を読んだ
  ・残っていた Unity のコンパイル用の裏方3つを終わらせた
  ・コードの戻し・1・2・3 はしていない。台帳の退避もしていない（回していないため）
  ・依頼78 が KIOXIA に残したフォルダと実行ファイルは消していない

変えたファイル
  ・この報告ファイルだけ（下に書き足した）

--------------------------------------------------------------------
決めてほしいこと
--------------------------------------------------------------------
  1. cs:64（依頼78）をどう扱うか
     a. 取りやめる：cs:63 の中身に戻す check-in（例 cs:65「依頼78 を取り消す」）をしてよいか。
        そのうえで依頼79b を cs:65 の上で進める
     b. 残す：cs:64 の上で依頼79b を進める（依頼78 は「中身を変えずに切り出す」だが、
        動きが本当に変わっていないかは確かめられていない。途中で止められた作業のため）
     c. 作業場所だけ cs:63 に切り替えて進める（あとの check-in が cs:64 と枝分かれになるので勧めない）
  2. 依頼78 が残した Builds/headless_part64・Builds/rec13_part64・KIOXIA の part_p のフォルダ3つを消すか残すか
  3. 1 が決まれば、依頼79b を最初からやり直すか

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


====================================================================
依頼79c：同じ種で同じ結果にし、立ち往生の助けを瞬間移動なしに直す
2026-11-03 12:00〜12:45　check-in：cs:65（戻し）・cs:66・cs:67　build_id cs67_20261103_1226（保留 0）
====================================================================

結論
  ・1（同じ種で同じ結果）は合格。③⑦ × 種0・3・7 を 2 回ずつ、同時1本・同時4本の両方で回し、
    8つの記録（trips・stops・people_jams・yields・contacts・rescues・give_ups・summary.json）が
    12 組とも 1 行も違わなかった。1本の回と4本の回どうしでも同じ
  ・2 は入れた。止まっている台の方を動かす・スタッフは瞬間移動しない（「移した」0 回）
  ・ただし 3 の⑦種7 で「同じ所で何度も助けが要る」が残った（待機場所で 2 回ずつ 2 組。前は 8 回ずつ 2 組）。
    今の動かし先の決め方では、止まっている台が 0.02 m しか動かないため。依頼どおりそこで止めた

--------------------------------------------------------------------
0. 先に片付けること
--------------------------------------------------------------------
  ・cs:65「依頼78 の取りやめ。cs:63 の中身に戻す」を check-in（作業場所は切り替えていない）
    変えた 7 ファイルを cs:63 の中身で上書きし、新しい 4 ファイル（PersonPart.cs・CurrentPersonPart.cs と .meta）を消した
  ・確かめ：保留 0、Unity エディタ・night_runner・rec_runner は動いていない（Unity Hub だけ）、
    cs:63 と cs:65 のファイル一覧が同じ（345 件）、変えた 7 ファイルの中身が cs:63 と 1 字も違わない、
    Builds/headless は cs63_20261103_1114
  ・Builds/headless_part64・Builds/rec13_part64・KIOXIA の part_p のフォルダは消していない
  ・始める前：KIOXIA マウント済み、unity_ledger_v1.lock なし、
    台帳を archive/unity_ledger_v1_pre_det_rescue_20261103/ に退避（1671 行・md5 f4bdbeb5ddd45c8b6f7c93a08a15f865）

--------------------------------------------------------------------
1. 同じ条件・同じ種なら同じ結果
--------------------------------------------------------------------
  直したこと（3つ）
   (a) 人の道を同期で引く切り替え（ExperimentPlan.detCheckSyncPeoplePaths）を今の標準（入）にした。
       .asset と既定を入にし、画面なしの回は HeadlessRun が毎回入れ直す（.asset に頼らない）
   (b) 同期の回は、Unity の裏方の作業（job）の流れを 0 本にし、全部を1本の流れで順に回す
       （JobsUtility.JobWorkerCount = 0。回し終わりに元へ戻す）。
       ★ (a) だけでは一致しなかった。1コマごとの指紋で探すと、③種0 の 1921.8 秒で、Staff01 の位置・速さ・道・
       近くの客の様子がまったく同じなのに、よけ方を入れた向き（desiredVelocity）だけが回によって
       (0.119,-0.636) と (0.154,-0.702) に分かれた。人のよけ方（NavMeshAgent の局所回避）を Unity が
       何本もの流れで同時に計算していて、その順番が Mac の忙しさで変わるのが元だった。(b) でここが消えた
       run_info.json の det_check に「sync_people_paths=入 / job_workers=0」と出る
   (c) 往復を終えた台を待機場所へ下げる agent の道（GoStandby）も、同期の回は同期で引くようにした（同じ種類の元）
   ・(b) を入れたら 1 回の実時間が 3〜4 分 → 1.2〜1.5 分に縮んだ（同時4本でも 2 分前後）
   ・調べ用に -ssDetFrames on（det_frames.csv）・-ssDetPeople 秒,秒（det_people.csv）を足した（ふだんは出ない）

  確かめ（cs:67 の Builds/headless・night_runner・--no-retry）
    同時1本：det1a・det1b（各 6 回）／同時4本：det4a・det4b（各 6 回）。24 回すべて completed・終了コード 0
    比べ方：外したのは plan_ms_max と summary.json の written_at だけ（/tmp/req79/cmp.py）
    結果：
      同時1本の 2 回      6 組とも 8 つ全部一致
      同時4本の 2 回      6 組とも 8 つ全部一致
      1本の回と4本の回    6 組とも 8 つ全部一致
      （参考に dishes・groups・timeline・robot_track・passes・requeues も全部一致）
    記録：night/20261103_det79_det1a・_det1b・_det4a・_det4b

--------------------------------------------------------------------
2. 立ち往生の助けの決まり
--------------------------------------------------------------------
  ・相手が往復を終えて止まっている台（Idle・往復おわり）なら、止まっている台の方を動かす。
    動かす先の決め方は今のまま（呼んだ台の道の先 4 m から 2 台の半径＋0.1 m 以上離れた、いちばん近くの空いた所）。
    止まっている台は動かした所で次の仕事を待つ（道は引かない）
  ・助けに行くスタッフ（ふさがれて 3 秒近づけないとき。細い通路のときだけ）
    (1) 動かす台の反対側に立つ点まで、ふさいでいる所（前の人・ロボット）を通らずに行ける道を
        人用の面を 0.2 m のマスにして探し、あれば途中の点をたどって回り込む（新しい PeopleDetour.cs）
    (2) なければ通路の入口（店の形の entrance）へ下がり、その通路に人がいなくなったら入る
    (3) 向かい始めて 60 秒たっても着けなければ、その人は仕事に戻り、助けは板へ戻る。
        着けなかった人は同じ助けを取らず、次に手が空いた別の人が取る（全員が着けなければ、また全員が取れる）
    助けでは「あきらめた」3 回目の「移した」を使わない
  ・rescues.csv の列の最後に足した：handoffs（着けずに交代した回数）・handoff_s（交代した人が使った秒）・
    entrance_wait_s（入口で待った秒）・detours（回り込んだ回数）。summary.json の stuck_rescue にも合計
  ・summary.json に teleports（回のたびの瞬間移動の回数）を足した：
    guest_escape（客の逃がし弁）・trip_timeout_reset（1往復の打ち切りの置き直し）・
    staff_after_3_tries（料理などを運べず3回で移す）・rescue_staff（助け。0 のはず）
  ・助け以外の瞬間移動の決まりは変えていない

--------------------------------------------------------------------
3. ⑦ fam_p5・種7・ロボット2台の確かめ（rescue79・同時1本・completed・実時間 1.4 分）
--------------------------------------------------------------------
  出力 20261103_rescue79_cs67_fam_p5_r2_s7_passon_sbret_ek_post_rescue
  （同じ種なら同じ結果になったので、det の ⑦種7 の 4 回とも 1 行も違わない）

  助けの数：呼んだ 17・動かした 14・自分で動き出して取り消し 1・往復が終わって取り消し 2
    相手：ロボット2号機 7・客 5・スタッフ 4・ロボット1号機 1
    解けるまで（止まり始めから）中央 51.3 秒・最短 33.9・最長 118.8
  依頼76 の 16 回の詰まり（待機場所の手前・受け渡し口の近く）
    受け渡し口の近く (15.7, 5.0)：呼び出し 0 回（出なくなった）
    待機場所の手前：1号機が自分の待機場所の 0.35 m 手前 (16.56, 5.94) で、待機場所 (17.53, 5.90) に
      止まっている2号機を前のセンサーに見て止まる形は残った。2号機を動かすようになったが、
      動いた距離は 0.017〜0.026 m。2 回ずつ 2 組（8869〜8941 秒・9169〜9219 秒）助けが入り、
      9156 秒からの止まりは 104 秒続いて、2号機が次の往復に出た 9235 秒にやっと解けた
      わけ：1号機の道は自分の待機場所で終わるので、2号機はもとから「道から 0.6 m 以上外れた所」にいる。
      決め方どおりだと、いちばん近い隣のマスへ 0.02 m 動かすだけになる。
      一方、体どうしの間は 0.47 m で、前のセンサーの長さ 0.6 m より短いので、1号機は止まったまま
  助けに行ったスタッフ
    瞬間移動：0 回（give_ups に助けの「移した」「あきらめた」なし。teleports.rescue_staff 0）
    着けずに交代 1 回：1163.6 秒、待機場所の2号機へ Staff04 が 60 秒着けず交代、次の人が着いた
      （歩いた秒 73.7・解けるまで 118.8 秒）。細い通路ではないので、回り込み・入口で待つは働いていない
    細い通路 A01 の助け 2 回（4834・5154 秒）は、どちらも交代なしで着いた（歩いた秒 22.5・2.8）
    回り込んだ 0 回・入口で待った 0 秒（この回では (1)(2) が働く場面が無かった）
  30 秒以上の止まり 16 回・60 秒以上 4 回（うち 3 回は待機場所の上の形）

  助け以外の瞬間移動（この回）
    客の逃がし弁 15・1往復の打ち切りの置き直し 2・スタッフが3回で移した（片付け）2・助け 0

--------------------------------------------------------------------
4. 変えたファイルと版
--------------------------------------------------------------------
  cs:65  依頼78 の取りやめ（cs:63 の中身に戻す）
  cs:66  People/PeopleDetour.cs（と .meta）だけ（check-in のやり方を誤り、新しいファイルだけが先に入った）
  cs:67  cs:66 の続き。Experiment/ExperimentPlan.cs・ExperimentPlan.asset・ExperimentRunner.cs・HeadlessRun.cs・
         TripLogger.cs、People/PeopleNav.cs・StaffAgent.cs、Robot/ServingRobotController.cs、Service/ServiceOps.cs
  実行ファイル：Builds/headless と Builds/rec14_det67（どちらも build_id cs67_20261103_1226・unity_cs cs:67・保留 0）
  tools/*.py は変えていない

--------------------------------------------------------------------
5. 台帳
--------------------------------------------------------------------
  1671 行 → 1716 行（追記だけ。列は 59 のまま。先頭 1671 行の md5 は f4bdbeb5… で始める前と同じ）
  終わったあとの md5 04d9e503b10b16b11cc5ac885b0f10da。鍵ファイルは残っていない
  ★ 注意：追記 45 行のうち 20 行（run_folder が 20261103_t1a〜t5b_cs65_…）は、原因を探すために
    check-in 前の作りかけの実行ファイル（/tmp/ss79_t1〜t5）で回したもの。実行ファイルが自分で台帳に書くため入った。
    unity_cs は ServiceSim/cs:65 と出ているが、中身は cs:65 と同じではない。基準データには使わないでください
  残り 25 行：det1a・det1b・det4a・det4b 各 6・rescue79 1（cs:67）

--------------------------------------------------------------------
決めてほしいこと
--------------------------------------------------------------------
  1. 待機場所で止まっている台を動かす先の決め方。今の決め方（呼んだ台の道から 2 台の半径＋0.1 m 外れた
     いちばん近い所）だと 0.02 m しか動かず、詰まりが解けない。案：
       a. 止まっている台を動かすときだけ、呼んだ台の道の先に前のセンサーの長さ（0.6 m）も足した範囲から外す
       b. 止まっている台は、もう1台の待機場所から離れた決まった空き場所へ動かす
       c. 待機場所どうしの間（中心どうし約 0.76 m）を店の形で広げる
       d. 自分の待機場所のすぐ手前（例 0.5 m 以内）で止まっている台にふさがれたら、そこで往復を終えたとみなす
  2. 台帳に入った作りかけの 20 行（t1a〜t5b）の扱い（台帳は追記だけなので、印の付け方を決める）
  3. 同期の回で Unity の裏方を1本の流れにしたこと（(b)）をこのまま標準にしてよいか。動きの意味は変えていないが、
     人のよけ方の細かい値は前の版と同じにはならない（前の版の数字とは並べて比べられない）

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