====================================================================
依頼81：すれ違いの止まりを直し、残りの瞬間移動を0にする
2026-11-03 13:15〜13:50　check-in：cs:69　build_id cs69_20261103_1337（画面なし・録画用とも。保留 0）
====================================================================

結論
  ・瞬間移動は 0 回になった（⑦種7 の2回とも。依頼80 の同じ回は 22 回）
  ・1 のすれ違いの止まりは出なくなった。1往復の打ち切り 4 → 0。相手がいなくなって下がりを抜け、道を引き直した回が 10 回
  ・同じ種の2回は、記録が1行も違わない（違ったのは時間を測る列 plan_ms_max と written_at だけ。依頼80 と同じ扱い）
  ・ただし、移さずに残った詰まりが 1 回の営業で合わせて 1601 秒（26.7 分）になり、止める線の 10 分を超えた。
    依頼どおり、③⑦×種0・3・7 の6回は回さずに止めた
    （詰まり 31 回はすべて、客がドリンクバーから席へ戻るとき。最長 223 秒。31 回とも歩いて席に着いて解けている。
     回の終わりまで解けずに残ったのは 0）

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

--------------------------------------------------------------------
1. すれ違いの止まりの直し（Robot/ServingRobotController.cs）
--------------------------------------------------------------------
  原因：すれ違いの相手がいなくなる（離れる・譲りに入る・もう向かってこない）と相手の記録は消えるが、
        「下がる」印だけが残った。そのため相手のいない所で下がり続け（依頼80 の ⑦種7 では 15.97 → 20.95 m の約 5 m）、
        下がれなくなった所で止まった。下がっているあいだは速さを「走っている」側に数えていたので、stops.csv にも入らなかった
  直し：
    ・相手がいなくなったら、下がる状態を抜けて道を引き直す（EndPassByBackOff）
    ・下がる状態のまま 1 コマで 1 mm も下がれていないときは「止まり」として数える。
      stops.csv の原因の名前は「すれ違いで下がった」（新しく足した。ほかの原因の名前は変えていない）。
      止まりとして数えるので、30 秒で助けを呼ぶ・60 秒で動けなくなる、の今の決まりがそのまま効く
  結果（⑦ fam_p5・種7）：
    ・1号機が (20.95, 6.25) にいた回は 0（その場所の近くに 1 度も行っていない）
    ・下がる印が立っていたのは 4 回、どれも 5 秒以内に消えた
    ・1往復の打ち切り 4 → 0。下がりを抜けて道を引き直した回 10 回。「すれ違いで下がった」止まり 0 回
    ・注意：直したことで動きの流れが変わり、依頼80 と同じ場面（9063 秒以降の卓34 行き）はもう起きていない。
      直しが「同じ場面を解いた」ことではなく「その形がもう出ない」ことを確かめた

--------------------------------------------------------------------
2. 瞬間移動を 0 にした直し
--------------------------------------------------------------------
  (1) 客の逃がし弁（People/GuestAgent.cs）
      ・移さない。60 秒（guestGiveUpSec・guestWarpHomeSec。数字は変えていない）着けないごとに、
        回り込める道があれば回り込み、なければ同じ所で待ったまま行き先へ道を引き直す
        （回り込みの探し方は助けに行くスタッフ（依頼79c）と同じ。ロボットぜんぶと、1.2 m 以内のいちばん近い人を避ける。
         客の入れない区画（レジの内側）を通る道は使わない）
      ・ドリンクバー・トイレの行き：行き詰まりが合わせて 3 分（180 秒）を超えたら、行かずに歩いて席へ戻る
        （前は 60 秒で席へ戻っていた。今は 60 秒・120 秒で行き直し、180 秒で戻る）
      ・帰り・退店・会計の行き：着くまで歩き続ける
  (2) 1往復の打ち切り（600 秒）：置き直さない・往復も終えない。trips.csv の timeout=1 として記録だけして往復を続け、
      止まっていれば今の助けの決まり（30 秒で呼ぶ・rescue_s 15 秒）で解く
  (3) スタッフが同じ仕事を 3 回あきらめたら：移さない。give_ups.csv に「交代した」と残し、その人を外して仕事を板へ戻す。
      次に手が空いた別のスタッフが取る（助けの交代と同じく、全員が一度ずつ交代したら、また全員が取れるようにする）。
      ※ 台帳の gave_up の列には「交代した」も入る（前は warped に入っていた分）
  (4) 移さずに残った詰まりの記録
      ・前なら瞬間移動していた時刻から、解ける（着く・仕事が終わる・往復が終わる）までを 1 回とする
        （客＝帰り・退店・会計で初めて行き直した時刻から。スタッフ＝初めて交代した時刻から。ロボット＝打ち切りの時刻から）
      ・nowarp_jams.csv（新しい。列：condition_id, seed, t_s, who, job, id, x, z, aisle, end_t_s, duration_s, outcome）
      ・summary.json：teleports に total（足した数）を足した。nowarp_jams（count・total_s・max_s・open_at_end・
        guest_detours・guest_retries・pass_by_backoff_ends）を足した
  変えていないもの：ロボットの速さ・物理の設定・譲る順番・人とロボットの数字・rescue_s 15 秒・30 秒の線・
                    同じ種で同じ結果にする作り・止まっている台を 1.2 m 離す決め方・台帳の列と今までの行

--------------------------------------------------------------------
3. 変えたファイル・版
--------------------------------------------------------------------
  cs:69　Assets/ServiceSim/Robot/ServingRobotController.cs・People/GuestAgent.cs・People/StaffAgent.cs・
          Service/ServiceOps.cs・Experiment/TripLogger.cs・Experiment/ExperimentRunner.cs
  実行ファイル：Builds/headless と Builds/rec16_zerowarp69（新しいフォルダ）。どちらも build_id cs69_20261103_1337・
                unity_cs ServiceSim/cs:69・pending_changes 空・error CS 0。前の録画用 rec15_standby68 は残した
  check-in の前に /tmp/ss81_compiletest に試しのビルドを作り、error CS 0 を確かめた

--------------------------------------------------------------------
4. 確かめ（画面なし・night_runner・同時 1 本・--no-retry。2 回とも completed・終了コード 0・1.4〜1.5 分）
--------------------------------------------------------------------
 (1) ⑦ fam_p5・種7（zw81a）・(2) 同じ回をもう 1 回（zw81b）
   trips 123・stops 1124・people_jams 920・yields 2938・contacts 162・rescues 28・give_ups 55・nowarp_jams 31・
   dishes 209・groups 81・robot_track 4722 行、どれも 1 行も違わない。summary.json も同じ
   （trips.csv の plan_ms_max・summary.json の written_at だけ違う。どちらも計算にかかった実時間）

 (3) 6回：回していない（下の止めた理由のため）。並べられるのは ⑦種7 だけ

   回                 立ち往生  30秒以上  瞬間移動  詰まり(回/秒/最長)     入店待ち  料理の待ち  打ち切り
   ⑦種7 今回(cs:69)   8         25        0         31 / 1601 / 223        1.45      1.30        0
   ⑦種7 依頼80(cs:68) 3         13        22        （記録なし）            1.41      1.43        4
   （立ち往生＝stops.csv の「動けなくなった」の数、30秒以上＝stops.csv の 30 秒以上の行、入店待ち・料理の待ちは中央値（分））

   ・入店待ち・料理の待ちは 2 倍の線に届いていない。詰まりの合計が 10 分の線を超えた
   ・立ち往生 3 → 8、30 秒以上の止まり 13 → 25 に増えた。客が席へ移されずに歩いて戻る・ドリンクバーで 3 分まで
     行き直すようになり、通路にいる人が増えたことが考えられるが、確かめていない（1 回だけなのでばらつきと区別できない）
   ・give_ups：ドリンクバーで 3 分であきらめて席へ戻った客 34（依頼80 は 60 秒であきらめた 27＋移した 13）。
     スタッフの「交代した」0、ロボットの打ち切り 0。詰まり 31 回はすべて客のドリンクバーの帰り

 詰まりの場所の上位（⑦種7・1 m のマスで丸めた位置・回数・合計秒）
   1. (5, 4)  5 回  690 秒　ドリンクバーの前（4.1〜4.5 m の列）
   2. (5, 6)  1 回  223 秒　通路 A02
   3. (6, 5)  4 回  203 秒　ドリンクバーの前
   4. (5, 12) 3 回  188 秒　通路 A02
   5. (8, 5)  3 回  112 秒
   60 秒以上かかった詰まりは 9 回で合計 1242 秒（全体の 78%）。2336〜2578 秒に卓1・3・4 の 5 人がドリンクバーの前で重なり、
   1 回で 100〜223 秒かかった分が大きい

--------------------------------------------------------------------
5. 台帳
--------------------------------------------------------------------
  1724 行 → 1726 行（追記だけ。列は 59 のまま。先頭 1724 行の md5 は 3dafb380… で、始める前と同じ）
  終わったあとの md5 d2f24b6e2125b42a12a58e495e53ee54。鍵ファイルは残っていない
  追記 2 行：zw81a・zw81b（どちらも cs:69・completed）
  記録：night/20261103_zerowarp81_zw81a・_zw81b。調べに使った手順と並べた回は /tmp/req81/（six.py・q/。q/zw81six.json は回していない）

--------------------------------------------------------------------
決めてほしいこと
--------------------------------------------------------------------
  1. 詰まりの 10 分の線を超えた（26.7 分。すべて客のドリンクバーの帰り、どれも最後は歩いて席に着いている）。どうするか。案：
     a. このまま進め、6 回を回して並べる（今の回は「止まったまま解けない所」は 0。帰りが長びくのは、
        ドリンクバーの前の混み方として記録する）
     b. ドリンクバーの前の混みを減らす直しを先にする（例：帰りで行き詰まったときに待つ所を通路の外にする など。直し方は相談）
     c. 詰まりの数え方を変える（今は「前なら移していた 60 秒の時刻」から着くまでを数えている。例：その場で止まっていた秒だけを数える）
  2. ドリンクバー・トイレの行きの「3 分」は、行き始めからの秒（60 秒・120 秒で行き直し、180 秒で戻る）として入れた。
     前は 60 秒で席へ戻っていた。この読み方でよいか
  3. 依頼の 4 つのほかに、画面で跳んで見える動きが 1 つ残っている：立ち往生の助けで、スタッフが 15 秒かけてロボットを動かす場面は、
     15 秒のあと最後に動かした先（最大 1.2 m ほど）へ置いている（依頼76・80 からの作り。summary.json の瞬間移動には入れていない）。
     これも少しずつ動く形にするか
     （ほかに、客が席を立つときに体を席の前に出すこと・人の体を道の面に乗せ直す小さな寄せがあるが、どちらも数 cm〜席の前の出し入れで、今は瞬間移動として数えていない）

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