====================================================================
依頼104：台帳の2つを直し、⑧の待機場所のそばでロボット同士が止まり合う詰まりを調べる（直さない）
2026-11-07 08:05〜08:25　作業場所 cs:87（変えていない）
====================================================================

結論
  ・止める線には当たらなかった（案B 入の 10 回すべて completed・瞬間移動 0・1コマの跳び 0）
  ・台帳の直し：依頼101 の3行（cs:85）は除く一覧に入れた。
    rec101b の失敗の行と撮り直した回は「同じ run の名前」なので、決めたことどおりにはできなかった。この項目は止めた（決めてほしいこと 1）
  ・調べ（⑧5台・すぐ押す・種0〜9）：待機場所のそばの、ロボット同士の 30 秒以上の詰まりは 369 件・54,008 秒（うち 31,320 秒は種7 の行ったり来たり1件）
    いちばん多い型は「C1 待機点にいる台のそばで、戻る台が入れない」103 件・6,735 秒
  ・見つけた形
      1) 待機点どうしの間が 0.8 m しかなく、前のセンサーの届く所（台の半径 0.25 m＋0.6 m）が隣の待機点の台にかかる。
         戻る台が斜めに自分の待機点へ寄ると、隣の台に近づいたところで止まる（C1）
      2) 道を探すと 87〜98% は「引けた」になる（止まっている台を道の上の障害として見ていないとみられる・推測）のに、走ると前のセンサーで止まる。
         解けたのは「スタッフが動かした」が 246／369 件
      3) 往復を終えた台のうち、待機点4・5 の台は、待機点の中心から 0.3 m より外（手前・下側に 0.4〜0.7 m）で止まっている時間が 57%・75%。
         はみ出した台が並びの前の道をせばめる（C2）
      4) 右の卓（T55〜T62 の側）へ行く台・右から戻る台が、待機点の並びの中（y 10.9 より奥）を通る（H・A・G）
      5) 種7 の行ったり来たり（D）は、ロボット2 が待機点2 から受け渡し口へ出ようとして、待機点1 のロボット1 の下を抜けられず、
         「10秒で0.5m 進めない」の見張りで 2,051 回止められては放された（中央値 15.3 秒ごと）。止まりが毎回 5 秒・30 秒に届かないので、
         近くのスタッフも 30 秒の呼び出しも一度も来なかった。この止まりは stops.csv に入らない（往復が終わらないと書かれないとみられる）
  ・案B 入にしても、待機場所のそばの止まりはほとんど変わらなかった（30 秒以上：369 件 → 349 件、行ったり来たりを除く秒 22,688 → 23,117）。
    型ごとでは B・F・C2 が減り、A・C1・G・E が増えた。往復数・料理の待ち・入店待ちは悪くなった
  ・直す候補を3つ書いた（どれも作っていない）


--------------------------------------------------------------------
0. 始める前の確かめ（08:05〜08:06）
--------------------------------------------------------------------
  1. 作業場所 cs:87（cm status：保留なし）。Builds/headless は build_id cs87_20261107_0533・unity_cs ServiceSim/cs:87・pending_changes 空
     Unity（エディタ・実行ファイル）・night_runner・rec_runner は動いていなかった（動いていたのは Unity Hub だけ）
     KIOXIA マウント済み／unity_ledger_v1.lock なし
  2. 退避：archive/unity_ledger_v1_pre_104_20261107/
       unity_ledger_v1.csv　3,443 行・md5 8081fb2b969709951db80fd654af4cb1（依頼101b の終わりと同じ）
       unity_ledger_v1_excluded_runs.csv　21 行（見出し＋20 回）・md5 c4667f28408389ec5697d3f8033652a4


--------------------------------------------------------------------
1. 台帳の直し
--------------------------------------------------------------------
  決めたこと 2（依頼101 の3行）：除く一覧に3行を足した（理由「止めた依頼101 が check-in 済みの cs:85 … の実行ファイルで回した。
    依頼101b の決めてほしいこと 2 でエイイチが除くと決めた」・決めた日 2026-11-07）
      20261107_det101_cs85_large_p6_r2_s7_passon_sbret_ek_post_rescue
      20261107_chk101a_cs85_large_p6_r5_s0_passon_sbret_ek_post_rescue_smove
      20261107_chk101b_cs85_large_p6_r5_s0_passon_sbret_ek_post_rescue_smove
    除く一覧：21 行 → 24 行・md5 d754edc5add03259ab8050e43d200322（先頭 21 行の md5 は c4667f28… のまま）
    tools/ledger.py の read_rows(drop_excluded=True) で読むと、台帳 3,442 回 → 3,419 回（除く 23 回。この3回が外れることを確かめた）

  決めたこと 1（rec101b）：止めた。何も足していない・除いていない
    わけ：失敗の行と、撮り直して completed になった回が、同じ run の名前
      20261107_rec101b_cs87_large_p6_r5_s7_passon_sbret_ek_post_rescue_smove
    になっている（撮り直した回の出力はこの名前のフォルダ。撮りかけは _dup_stopped・_stopped に別名で残っている）。
      ・除く一覧は run の名前で外す作り（ledger.py・judge_night.py とも）。名前を除く一覧に入れると、あとで足す completed の行も一緒に外れる
      ・台帳は「同じ run_folder の行は2度書かない」決まり（ledger.append_row も C# の ServiceSimLedger も足さない）。
        手で同じ名前の行を足すと、この決まりを破ることになり、読むとき（read_rows）は後の行が勝つ
    → どちらを曲げるかは決まりの変更に当たるので、推測で決めずに止めた（決めてほしいこと 1 に案を書いた）

  台帳の終わりの形：3,443 行 → 3,453 行（2 章の案B 入 10 回を night_runner が足しただけ。先頭 3,443 行の md5 は 8081fb2b… のまま）
    終わったあとの md5 7825123e526a26c31b917d76a6d66ca1。鍵ファイルは残っていない


--------------------------------------------------------------------
2. 調べ（⑧5台・すぐ押す・人の先よけ 切）
--------------------------------------------------------------------
2-0. 材料と数え方
  材料：依頼101b の sm101p6on の ⑧5台 種0〜9（10 回）と、撮った回（20261107_rec101b_…_smove・種7・録画 rec_sm101_20261107/on_now）。
    40 回のうち 2〜4台は使っていない（依頼の「⑧・5台」に合わせた）。回し直しは案B 入の 10 回だけ（2-4）
  場所：店の形（p6_large_center.json）の RobotStandby は待機点1〜6 が x 19.1〜23.1（0.8 m おき）・y 11.35 に横1列。
    受け渡し口の前は (17.0, 11.25)。台は ServiceOps で決まった待機点を持つ（1号機→待機点1 … 5号機→待機点5。待機点6 は空き）。
    範囲は依頼の目安のまま x 18〜24.5・y 10〜12.6（待機点の並びとその前・右の端がおさまる）
  1つの詰まり：stops.csv の止まりを、同じ台で 3 秒以内に続いたものを1つにまとめた（始め＝最初の止まりの始め、終わり＝最後の止まりの終わり）。
    始めの位置が範囲の中で、止まりの秒の半分以上が「もう1台のロボット」のもの。30 秒以上を数えた
  付けたこと（1件ごと。episodes_on_sm101p6on_r5.csv の列）
    台の位置（x, y）・段（robot_track の phase）・向かう先（止まりの solve_to が受け渡し口／待機点n／卓n のどれか）・
    何をしていたか（待機場所から出る（受け渡し口へ）／待機場所へ戻る（待機点から 1 m より遠い）／待機点へ入る（1 m 以内）／受け渡し口から卓へ）・
    相手の台（cause_detail の ServingRobot0x のうち秒がいちばん長い台）と、そのときの相手の位置・段・何をしていたか
    （相手が往復おわり・待機で、待機点の中心から 0.3 m 以内＝待機点にいる、0.3 m より外で 30 秒のあいだ 0.1 m も動かない＝待機点の手前で止まっている）・
    待機点の埋まり方（待機点1〜5 の中心から 0.35 m 以内にいた台の番号。例 "12-4-"）・道を探した結果（solve_status ごとの回数）・引き直し回数・
    どう解けたか（スタッフが動かした＝その間に staff_moves／rescues の「動かした」がこの台か相手にあった／よけた／回り込んだ／自分で（相手が動いた）／
    動けなくなった（60 秒）／解けない（上限まで））
  台の位置の記録（robot_track）は 5 秒ごとなので、段は最大 5 秒遅れる。向かう先は止まりの記録の方を先に使った
  種7 の行ったり来たりは stops.csv に入っていないので、robot_track から「往復おわり以外の段で、1.5 m 四方の中に 300 秒以上いつづけて回の終わりまで」を拾い、
    summary.json の progress_watch.halts_list（見張りで止まった時刻）を足した

2-1. 型の表（⑧5台・すぐ押す・種0〜9 の 10 回の和。30 秒以上）
  型	件	秒	中央値（秒）	最長（秒）	主な解け方
  A 待機場所から出る台と入る台が向かい合う（並びの中 y≧10.75・x≧18.7）	35	2,173	48.9	153	スタッフ 24・よけた 9
  B 受け渡し口へ向かう台と待機場所へ戻る台がぶつかる（並びの前）	35	2,004	48.2	117	スタッフ 28・よけた 6
  C1 待機点にいる台のそばで、戻る台が入れない	103	6,735	60.0	290	スタッフ 66・よけた 28・動けなくなった 6
  C2 待機点の手前にはみ出して止まった台で、戻る台が入れない	25	2,463	62.9	588	スタッフ 13・よけた 7・動けなくなった 5
  D 1台が行ったり来たりして抜けられない（種7）	1	31,320	—	31,320	解けない（上限まで）
  E 待機点にいる台・はみ出した台で、出る台が出られない	8	499	55.8	98	スタッフ 4・回り込んだ 2・よけた 2
  F 出る台どうし（受け渡し口へ向かう列）	30	1,490	41.2	128	スタッフ 20・よけた 7
  G 戻る台どうし	41	2,349	54.2	129	スタッフ 32・よけた 7
  H 受け渡し口から卓へ向かう台がからむ（右の卓へ行く台が並びを横切る）	79	4,304	50.0	117	スタッフ 52・動けなくなった 10・回り込んだ 8
  Z そのほか（相手が卓で止まる・立ち往生など）	12	671	51.2	99	スタッフ 7・よけた 4
  合わせて	369	54,008（D を除く 368 件・22,688 秒）
  （参考：長さを問わない全件 2,888 件・71,685 秒。多い順に H 1,079 件・10,173 秒／C1 461 件・9,696 秒／E 309 件・1,689 秒）
  依頼の例の型との対応：「出る台と入る台が向かい合う」＝A、「受け渡し口へ向かう台と戻る台」＝B、「待機点が埋まっていて入れない」＝C1・C2、
    「1台が行ったり来たり」＝D。見つかって足した型が E・F・G・H

2-2. 型ごとの中身（type_detail_out.txt）
  C1（いちばん多い）
    ・戻る台 69 件・入る台 34 件。相手は全件「待機点にいる」台。待機点にいた台の数は中央値 2
    ・止まった所：並びの前で自分の待機点より左 28・並びの中の右の端（待機点6 のそば）27・並びの中で自分の待機点の前 26
      → 左下から斜めに寄る台が、自分より受け渡し口側の待機点の台に近づいて止まる形と、右の端から並びに入り、並びに沿って左へ進もうとして
        途中の待機点の台にふさがれる形の2つが多い
    ・相手の組は (3→2) 12・(4→5) 11・(5→4) 11・(2→3) 11・(2→1) 10 と、隣どうしがほとんど
    ・道を探した結果は 87% が「引けた」。引けるのに進めない
    ・最長は種2 のロボット5（290 秒）：待機点5 へ左下から戻り、待機点4 のロボット4 に前のセンサーが届いて止まる（fig_C1_examples.png 左）
  C2
    ・往復を終えた台が待機点に入りきらずに手前に止まっていて、それに戻る台がつかえる。最長 588 秒
    ・往復おわりの台が待機点の中心から 0.3 m より外にいた時間の割合（10 回）：待機点1 28%・2 51%・3 36%・4 57%・5 75%。
      待機点からの y のずれの中央値は 1〜5 で −0.11・−0.23・−0.24・−0.44・−0.69 m（手前＝下へはみ出す）
      （戻りの往復は待機点から 0.25 m で着いたことになり、そのあとの寄せは止まりの決まりの外で動く。なぜ手前で止まるかは、この依頼では確かめていない）
  D（種7）
    ・ロボット2 が店の時刻 11,880 秒に待機点2 から受け渡し口（卓2 の料理）へ出る。ロボット1 は待機点1 の中心より左に 0.17 m・下に 0.11 m ずれて止まっていた
      （18.93, 11.24）。ロボット3 は待機点3、ロボット4・5 は待機点4・5 の手前にはみ出していた（待機点の埋まり方 "123--"）
    ・ロボット2 は x 19.22〜20.03・y 10.72〜11.27 を行き来した。左へ 0.5 m 弱進む → 見張りで止まる → 前が空いて少し下がる、をくり返した
    ・見張りで止まった回数 2,051 回（原因はすべて「もう1台のロボット」）・間隔の中央値 15.3 秒。止まりは毎回短く、近くのスタッフ（5 秒）にも
      30 秒の呼び出しにも届かず、staff_moves・rescues にこの台の行は 0。回の終わり（43,200 秒）まで 31,320 秒続いた
    ・この間、ロボット4・5 には「止まっている台が人の道をふさいでいた」の 30 秒の呼び出しが何度も来ていた（ロボット2 には来ない）
  A・B・F・G：出る台と戻る台・戻る台どうし・出る台どうしが、待機点の並びの中とその前（幅およそ 1 m）ですれ違えない。
    A は並びの中、B は並びの前。F は待機点2〜5 から出る台が受け渡し口へ向かう列で、手前の待機点の台の前を通る所でつかえる
  H：受け渡し口で料理を積んで右の卓へ行く台が、待機点の並びの中（y 10.9 より奥）を横切る件が 78 件中 50 件。相手は待機点にいる台 25・出る台 21・戻る台 15
  E：出る台が手前の待機点の台にふさがれる。D と同じ形で、短く解けたもの

2-3. 図とコマ
  置き場所：KIOXIA night/20261107_standby104/figs/（同じものを claude_code_reports/20261107_standby104_files/ にも置いた）
    fig_C1_examples.png　いちばん多い型 C1 の上から見た図2つ（左＝種2 ロボット5・290 秒、右＝撮った回の種7 ロボット3）。
      待機点・受け渡し口・台の位置（色＝何をしていたか）・向かう先の矢印・止まった台の前のセンサーの届く所（点線）・通った跡
    fig_D_seed7.png　種7 の行ったり来たり：上から見た図（ロボット2 の通った跡・向かう先の矢印）と、ロボット2 の x の動き（はじめの 600 秒）、
      見張りで止められた間隔の分布
    fig_where_by_type.png　30 秒以上の詰まりの始めの位置を型ごとに色分け（円の大きさ＝秒）
    frames_C1_rec_seed7_t9229.png　撮った回の録画（wide_l30）のコマ4枚（店の時刻 9,230・9,260・9,290・9,310 秒）。
      C1 の場面：ロボット3（赤丸）が待機点3 へ戻ろうとして、待機点2 のロボット2・待機点1 のロボット1 の前で止まっている。
      丸は 5 秒ごとの記録の位置を画素に直したもの（止まっている台は合う。動いている台は 1 秒ほどの差で少しずれる）
  種7 の行ったり来たり（D）は撮った回では起きていない（撮った回は全員が帰った）ので、録画のコマはない

2-4. 案B 入との比べ（参考・作りは変えていない）
  回したもの：⑧ large_p6_s6_r5_a70 × 種0〜9・案B 入（make_queue --rule-b on。中身は params の unity_rules のまま）・すぐ押す 入・人の先よけ 切。
    ほかの切り替えは sm101p6on と同じ（並びを比べ、違うのは rule_b だけ）。label sb104b・cs:87・同時4本・やり直しなし・上限 90 分
    08:07〜08:20。10 回とも completed・瞬間移動 0・1コマの跳び 0（watch_log.txt）。実時間 2.7〜5.1 分
  型ごと（10 回の和・30 秒以上）
  型	案B 切（すぐ押す）件	秒	案B 入 件	秒
  A	35	2,173	43	2,847
  B	35	2,004	25	1,390
  C1	103	6,735	122	8,497
  C2	25	2,463	17	1,624
  D	1	31,320	0	0
  E	8	499	10	777
  F	30	1,490	13	728
  G	41	2,349	43	2,897
  H	79	4,304	71	3,927
  Z	12	671	5	430
  合わせて	369	54,008	349	23,117（D を除くと 22,688 → 23,117）
  ・待機場所のそばのロボット同士の止まり（1 回あたり・10 種の中央値）：3,566 秒 → 3,532 秒
  ・店全体の止まりの合計（中央値）：8,068 → 7,975 秒。往復数 252.5 → 214.5。料理ができてから届くまで 1.69 → 2.29 分。入店待ち 11.32 → 17.53 分。
    全員が帰った回 9 → 10
  ・読み取り：受け渡し口を1台ずつにすると、受け渡し口へ向かう列（F）と受け渡し口の前のぶつかり（B）は減るが、待機点へ出入りする所（A・C1・G・E）は
    むしろ増え、待機場所のそばの止まりはほぼ同じ。案B は待機場所のそばの詰まりの直し方にはならないとみられる。
    種7 で D が出なかったのは1回だけの違いで、案B で D が無くなるとは言えない

2-5. 直すなら何を変えればよさそうか（候補。どれも作っていない）
  候補1 待機点の並べ方を変える（→ C1・C2・E・D・A）
    ・待機点どうしの間を、前のセンサーで隣の台を見ない幅にする（中心の間 0.8 m → 1.2 m 以上が目安＝台の幅 0.5＋前のセンサー 0.6 を超える）。
      ⑧ の並びの長さ（x 18.7〜23.5・4.8 m）では5台は入らないので、2列（前後にずらす）や、受け渡し口の左側にも分けて置く、などが要る
    ・待機点に「入る点」（待機点の真正面・下に 1 m ほど）を足し、そこから真上へ入る2段の入り方にする（斜めに寄って隣の台に近づくのを避ける）
    ・はみ出し（C2）は、着いたとみなす所（0.25 m）のあとの寄せ方を見直す
  候補2 出入りの道を分ける（→ A・B・F・G・H）
    ・出る道（並びの左の端から受け渡し口へ）と、戻る道（並びの前の 1 本下の帯から各待機点の真下へ）を分ける一方通行にする
    ・右の卓へ行く台・右から戻る台は、待機点の並び（y 10.9 より奥）を通らない（並びの帯を地図の上で走らない所にする、など）
  候補3 入る順の決まりを変える（→ D・E・F・C1・G）
    ・待機点を台ごとに決めず、受け渡し口に近い待機点から順に埋める列にする（出るのはいつも先頭＝待機点1 の台、戻る台は空いているいちばん右の待機点へ）。
      出る台が奥の待機点から手前の台の前を通る形（D・E・F）がなくなる
    ・あわせて、見張りで止まった回数が続いたら（例：同じ所で n 回）近くのスタッフ・30 秒の呼び出しの数に入れる。D は止まりが毎回短いため、
      今の決まりではスタッフが一度も来ない
  どの候補も数値（間の幅・入る点の位置・n 回など）と、店の形（p2m-site 側）を変えるかを決める必要がある


--------------------------------------------------------------------
3. 記録の置き場所
--------------------------------------------------------------------
  KIOXIA night/20261107_standby104/：
    q_sb104b.json・run104.sh・watch104.py（watch101b.py の写し・md5 同じ）・runner_sb104b.txt・watch_log.txt・nohup_run104.txt
    common104.py（店の形・地図の読み込みと図の下地）・ep104.py（詰まりの取り出しと型分け）・fig104.py（図）・frames104.py（録画のコマ）
    episodes_on_sm101p6on_r5.csv（すぐ押す・1件ずつ 2,888 件）・episodes_ruleb_sb104b_r5.csv（案B 入・3,384 件）・compare_out.txt・type_detail_out.txt・figs/
    （置いた字のファイルに 0 の入ったものは無い。写した前後で md5 が同じことを確かめた）
  night/20261107_sb104b/（実行係の記録）・回のフォルダ 20261107_sb104b_cs87_large_p6_r5_s{0..9}_passon_ruleb_sbret_ek_post_rescue_smove


--------------------------------------------------------------------
変えたファイル
--------------------------------------------------------------------
  KIOXIA：unity_ledger_v1_excluded_runs.csv（3行追記）・unity_ledger_v1.csv（案B 入 10 回を night_runner が追記）・archive/unity_ledger_v1_pre_104_20261107/・
    night/20261107_standby104/・night/20261107_sb104b/・回のフォルダ 10 個
  このファイル：claude_code_reports/20261107_standby104.txt・claude_code_reports/20261107_standby104_files/（図とコマ 4 枚）
  変えていない：Unity の作り（cs:87 のまま・check-in なし・Builds/headless も作り直していない）・tools/・店の形・params・サイト・
    rec101b の台帳の行と回のフォルダ・依頼101 の回のフォルダ


--------------------------------------------------------------------
決めてほしいこと
--------------------------------------------------------------------
  1. rec101b の台帳の直し方（止めた項目）。失敗の行と撮り直した回が同じ run の名前のため、決めたことどおりにはできない。案：
     a. 撮り直した回のフォルダ（と録画の rec_sm101_20261107/on_now が指す名前）を …_smove_try2 に名前を変え、その名前で completed の行を足す。
        失敗の行（…_smove）を除く一覧に入れる（台帳の決まりは曲げない。night_runner のやり直しの名前の付け方と同じ）
     b. 除く一覧を「run の名前＋status」で外せるようにして（tools/ledger.py・judge_night.py を直す）、failed の行だけ外し、同じ名前の completed の行を足す
        （「同じ run_folder の行は2度書かない」の決まりを、この1回だけ曲げる）
     c. このままにする（台帳には failed の行だけ。撮った回は基準データに使わない）
  2. 待機場所のそばの詰まりの直し方：2-5 の候補1〜3 のどれを（どの組み合わせで）作るか。数値（待機点の間の幅・入る点の位置・見張りで何回止まったら
     助けを呼ぶか）と、店の形（RobotStandby の並び。p2m-site 側）を変えてよいか

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