v5（段階2）0 章と、1 章の狭い通路・2 章の値の読み込みまで入れました。
3 章（回し方そのもの）はこれからです。Unity は押していません（Editor が開いたままのため）。

────────────────────────────────────────────────────────
0. 先にやること（両方おわり）
────────────────────────────────────────────────────────

(1) 10/21 までの変更を、今回の作業と分けて Check-in しました

  cs:113@br:/main  2026/10/22 19:25:30
  コメント「10/21 までの作業分（あきらめる道・待機場所・字幕など）」
  21 ファイル。すべて変更（C）で、中身は 1 文字も変えていません。

    C Assets/ServiceSim/Editor/ServiceSimMenu.cs
    C Assets/ServiceSim/Editor/ServiceSimRender.cs
    C Assets/ServiceSim/Editor/ServiceSimSetup.cs
    C Assets/ServiceSim/Experiment/ExperimentPlan.cs
    C Assets/ServiceSim/Experiment/TripLogger.cs
    C Assets/ServiceSim/People/GuestAgent.cs
    C Assets/ServiceSim/People/PeopleNav.cs
    C Assets/ServiceSim/People/PeopleSpawner.cs
    C Assets/ServiceSim/People/PeopleSpec.cs
    C Assets/ServiceSim/People/PeopleTargets.cs
    C Assets/ServiceSim/People/PersonBody.cs
    C Assets/ServiceSim/People/SeatedGuest.cs
    C Assets/ServiceSim/People/StaffAgent.cs
    C Assets/ServiceSim/Robot/FrontSensor.cs
    C Assets/ServiceSim/Robot/RobotSpec.cs
    C Assets/ServiceSim/Robot/ServingRobotController.cs
    C Assets/ServiceSim/Store/BandStoreLayout.cs
    C Assets/ServiceSim/Store/NavMeshBaker.cs
    C Assets/ServiceSim/Store/StoreBuilder.cs
    C Assets/ServiceSim/Store/StoreLayout.cs
    C Assets/ServiceSim/Store/StorePlan.cs

  ※ ServiceSimMenu.cs・NavMeshBaker.cs・StoreBuilder.cs・StorePlan.cs・RobotSpec.cs・
    ServingRobotController.cs は、この Check-in の **あと** に今回の v5 の直しを入れています。
    cs:113 に入っているのは 10/21 までの状態です。

(1b) .git は Check-in していません（ご指示のとおり）

  cs:112（段階1）と cs:113（10/21 分）に `.git` で始まる項目は **0 件** です（cm log で確認）。
  いま Pending に残っている .git は次の 7 件です。

    Changed  .git/index                      ← 過去に管理下に入ってしまっている（Plastic が持っている）
    Private  .git/objects/… 6 件             ← 管理外（入れていない）

  直すなら 2 段構えになります。**どちらもまだ実行していません。**

    ア) ignore.conf に 1 行足す（Private の 6 件が Pending から消える）
        ワークスペース直下の ignore.conf に `.git` を足すだけです。
        いまの ignore.conf は Library / Temp / .vs / .vscode / .idea …
        という書き方なので、同じ並びに入ります。

          .git

    イ) .git/index は管理下（Changed）なので、ignore.conf だけでは消えません
        リポジトリからだけ外す必要があります。ディスクの .git/index は残す形です。

          cm remove --nodisk .git/index
          cm checkin .git/index -c "git の内部ファイルを Plastic の管理から外す"

        --nodisk は「バージョン管理から外し、ディスクには残す」オプションです
        （cm remove controlled --help で確認）。ローカルの git は壊れません。
        Plastic が持っていた古いコピーが消えるだけです。

    ウ) 何もしない場合は、Pending に .git/index が 1 件ずっと残ります（害はありません）。

  ア・イを進めてよければ、言っていただければ入れます（相談してからにします）。

(2) 小さな直し 2 つ

  a. 細い通路の歩ける幅が 0 m と出る誤報（ServiceSimMenu.CheckAisleWidths）
     SamplePosition の探す半径を 0.02 m → navVoxelSize（0.05 m）以上にしました。
     焼けた面は床より少し上（この店では y=0.03 m）に出るので、0.02 m では届かず、
     どこを打っても「乗っていない」になっていました。
     横のずれの判定（刻み × 0.8）はそのままなので、測る細かさは変わりません。

     **同じ誤報がレジの内側の幅（WalkRun / CheckRegisterBack）にも出ていた**ので、
     そちらも同じ 1 行で直しました（「入口が 0.7 m 未満。registerBackDepthZ を広げる」
     も同じ原因の誤報でした）。依頼には CheckAisleWidths だけと書かれていましたが、
     原因も直し方も同じなので、あわせて直しています。要らなければ戻します。

  b. store_report.txt の名前に店の名前を入れました
     {日付}_{run_name}_{店の名前}_store_report.txt になります。③⑦を続けて回しても
     上書きされません。conditions.json と table_path_lengths_family.csv は
     名前がそのままなので、まだ上書きされます（必要なら次に直します）。

────────────────────────────────────────────────────────
1. 狭い通路をサイトにそろえる（入れました）
────────────────────────────────────────────────────────

サイトの決まり：「ふだんは幅 normal_width（1.0 m）以上の道を選び、
それで届かない卓だけ狭い道を使う」。

作り方（通れなくはしない。道探しのコストを上げるだけ）

  JsonStoreLayout  JSON の細い通路のうち、幅が meta.settings.normal_width 未満のものに
                   PlanAisle.hardToPass の印を付ける（③ 1.2 m は付かない／⑦ 0.8 m は 3 本とも付く）
  StoreBuilder     AisleInfo.hardToPass に渡す
  NavMeshBaker     narrowAisleArea（既定 4）の区画にする。形は足さず、箱の中の区画の
                   番号だけを変える（ModifierBox。レジの内側と同じ作り）
  RobotSpec        narrowAisleCost（既定 20）を足した。ふつうの床は 1
  ServingRobot     NavMeshAgent.SetAreaCost(narrowAisleArea, narrowAisleCost)

  ※ 区画 4 の名前は ProjectSettings/NavMeshAreas に入れていません
    （Assets/ServiceSim の外を触らないため。番号だけで動きます）
  ※ コスト 20 は仮です。「1.0 m 以上の道があればそちらを選ぶ」が成り立つ範囲で、
    小さいほど素直です。確かめの結果を見て decide したいです

確かめ方も足しました（JSON Store の確かめに列を 1 つ追加）
  table_dist.csv に **via_narrow**（0/1）を足し、受け渡し口→卓の経路が
  狭い通路の区画を通ったかを出します。経路の角と、角のあいだ 0.25 m ごとの点の
  区画を見て判定します。道のりも、同じコストを入れた道探しで測ります。
  → 依頼 4-5 の「⑦で T17・T22 が狭い通路を避けているか」は、この列で分かります。

────────────────────────────────────────────────────────
2. 試算の値を読む（入れました）
────────────────────────────────────────────────────────

写したもの：Assets/ServiceSim/Experiment/serving-robot-params.json
写した日時：2026-10-22 19:26:39 JST
写し元：https://pixelstomotors.com/sim/serving-robot-params.json
試算の版：meta.model v2.4 / meta.layout_generation **e624bdf4bdd4**
　→ ③⑦の店の形の meta.generation と同じです（合っています）

読む道具：Experiment/SimParams.cs ＋ SimParams.asset

  ・role=site_rule の値だけを返す。**unity_measures（robot_speed・pause_rate・
    pause_s・stuck_rate）を読もうとしたら、値を返さずに「読みません」と記録します**
    （まちがって使わないための歯止め）
  ・site_only（hop_m・warmup_min・sustain・util_sample_s・model）も返しません
  ・meta.layout_generation が店の形の版と違ったら Ready が false（回さない）
  ・unity_conditions の 6 件を Condition として持ちます
    fam_p1 × ロボット 0/1/2・fam_p5 × ロボット 0/1/2、どれもスタッフ 4 人・42 組毎時・
    serve（上げ膳だけ）・fragile_by=any。trays は robots=0 のとき 1、それ以外 3
  ・site_result（サイトの結果）も条件ごとに持ちます（4-2 の表に使います）

確かめのメニューを足しました（回しません。読めるかどうかだけ）
  ServiceSim/JSON Store/試算の値を読んで確かめる（v5）
  → ③⑦それぞれと版を突き合わせ、使う値・店ごとの値・metrics の名前と意味を
    screens/{日付}_sim_params_check.txt に書き出します

いまの .asset の値と JSON を、私の側で突き合わせた結果（違うのは 2 つだけ）

  ★ちがう arrivalsPerHourByCrowd : .asset [25, 35, 45] → JSON [30, 42, 54]
  ★ちがう trays                   : .asset 3（固定）→ 条件ごと（robots=0 は 1・それ以外 3）
  同じ    peak_min 120 / guide_s 45 / pay_s 90 / call_s 30 / call_rate 0.6 /
          first_dishes [5,8,12][8,12,18] / fragile 0.5 / fragile_cook [2,4,7] /
          cold_min 3 / robot_handoff_s 25 / staff_place_s 10 / eat_min [20,30,45] /
          clear_s 40 / wipe_s 40 / bus_trips 2

  → 手で写した値は、来客のペース以外はすべて合っていました。
    ServiceSpec・PeopleSpec を JSON から読む形にする作業（3 章）でも、
    実際に変わるのはこの 2 つだけの見込みです。

────────────────────────────────────────────────────────
3. まだ入れていないもの（3 章・4 章）
────────────────────────────────────────────────────────

依頼 3 章の表のうち、残りはここです。どれも「回し方」そのものに触ります。

  a. 条件        unity_conditions の 6 つを選べるようにする（いまは 通路幅×混み具合×台数 の
                 18 条件の作り）。スタッフの人数を条件にする。ロボット 0 台で回せるようにする
  b. 始め方      空の店から peak_min（120分）来客し、全員が帰るまで（max_extra_min で打ち切り）。
                 いまの「8割埋まった店・慣らし15分」をやめる
  c. 立ち往生    受け渡し口へ移す（warp）をやめ、スタッフが歩いて行って rescue_s（15秒）動かす。
                 ほかの仕事より先にする
  d. 逃がし弁    あきらめた・移した・卓を空けた の回数を数えて記録（消さない）
  e. 出す数字    meta.metrics の名前と定義にそろえる。定義が違うものは報告に書く
  f. 測る値      往復ごとに4つ（速さ・止まっていた長さ・動けなくなった割合・止まった割合）。
                 ⑦は狭い通路の中と外を分ける
  g. 値の差し替え ServiceSpec / PeopleSpec を JSON から読む形にする（上の 2 つが変わる）

  これらは ExperimentRunner（668 行）・ServiceOps（1078 行）・TripLogger（1044 行）・
  StaffAgent（403 行）・ServingRobotController（1135 行）に手を入れることになります。
  **Unity Editor が開いたままで、こちらではコンパイルも実行もできません。**
  読まずに大きく書いて渡すと、動かしてみるまで間違いが分からないので、
  ここで一度切って報告します。

────────────────────────────────────────────────────────
4. お願い
────────────────────────────────────────────────────────

(ア) いま入れた分を、Unity で読んでから押してください

  1. コンパイルが通るか（新しいのは SimParams.cs だけ。ほかは数行ずつの差し替えです）
  2. ServiceSim/JSON Store/試算の値を読んで確かめる（v5）
     → 版が合っているか・使う値・6 条件が読めているか
  3. ServiceSim/JSON Store/③⑦ を続けて確かめる
     → 幅の誤報が消えているか（「0 m ← 直す必要あり」が実際の幅になるか）
     → ⑦の table_dist.csv の via_narrow が 0 になっているか
       （狭い通路を避けて遠回りしているか。T17・T22 を特に見てください）
     → ③の via_narrow は 0 のまま（1.2 m なので区画を付けていません）

(ウ) そのあと、3 章 a〜g を続けます。**Unity を閉じていただければ**、
    こちらで batch mode にかけて、コンパイル→③ロボット2台を1回（4 章）まで
    回して報告できます。開けたままなら、同じように「書く→エイイチが押す」で進めます。

VCS Check-in は、今回入れた分（1 章・2 章・0-2 の直し）はまだしていません。
コンパイルと上の確かめが通ってから入れます（依頼 5 の「確かめが通ったら」のため）。

いま触ったファイル
  新規 Experiment/serving-robot-params.json（＋ .meta）
       Experiment/SimParams.cs（＋ .meta）/ Experiment/SimParams.asset（＋ .meta）
  変更 Editor/ServiceSimMenu.cs（幅の誤報 2 か所・store_report の名前）
       Editor/ServiceSimJsonStore.cs（試算の値のメニュー・via_narrow・コスト入りの道探し）
       Store/StorePlan.cs（PlanAisle.hardToPass）
       Store/StoreBuilder.cs（AisleInfo.hardToPass）
       Store/JsonStoreLayout.cs（normal_width で印を付ける・報告）
       Store/NavMeshBaker.cs（narrowAisleArea・AddNarrowAisleAreas）
       Robot/RobotSpec.cs（narrowAisleCost）
       Robot/ServingRobotController.cs（区画のコストを agent に入れる・測る用の filter）
