--- cs:140/Experiment/TripLogger.cs
+++ cs:141/Experiment/TripLogger.cs
@@ -57,6 +57,22 @@
             /// <summary>止まりの回数と秒数を、狭い通路の中と外に分けたもの（⑦の読み分け用）</summary>
             public int stopsInNarrow, stopsOutNarrow;
             public float stoppedInNarrowS, stoppedOutNarrowS;
+
+            // ---- 後ろに足した列（依頼 v8 の 2。今ある列の並びは変えない）----
+            /// <summary>その往復を始めた時刻（店の中, 秒。ほかの _s 列と同じ基準）</summary>
+            public float runStartS;
+
+            /// <summary>その往復で載せた皿の番号（dishes.csv の dish_id と同じ）</summary>
+            public int[] dishIds;
+
+            /// <summary>止まる所ごとに着いた時刻（着かなかった所は -1）</summary>
+            public float[] stopArrivedS;
+
+            /// <summary>
+            /// 打ち切りで置き直した先（依頼 v8b の A）。pass / standby1 / standby2 …。
+            /// 打ち切りでない往復は空
+            /// </summary>
+            public string resetTo;
         }
 
         /// <summary>groups.csv の1行（1組ぶん）</summary>
@@ -72,6 +88,9 @@
             public int tableSeats;
             public float arriveS, guideStartS, seatedS, eatEndS, payS, leftS;
 
+            /// <summary>食べ始めた時刻（秒）。食べ始めなかった組は -1（依頼 v8 の 2）</summary>
+            public float eatStartS;
+
             /// <summary>会計を始めた時刻（食べ終わって会計待ちに入った時刻, 秒）</summary>
             public float payStartS;
             public float waitedMin;
@@ -196,7 +215,11 @@
             "table_ids,dishes,dish_ready_s,dish_arrived_s,undelivered," +
             // v5 3章：往復ごとの測り（設計書2章の4つ）。⑦は狭い通路の中と外を分ける
             "speed_mps,stuck_count,stuck_wait_s,via_narrow," +
-            "stops_in_narrow,stops_out_narrow,stopped_in_narrow_s,stopped_out_narrow_s";
+            "stops_in_narrow,stops_out_narrow,stopped_in_narrow_s,stopped_out_narrow_s," +
+            // 依頼 v8 の 2：後ろに足した列
+            "run_start_s,dish_ids,stop_arrived_s," +
+            // 依頼 v8b の A：打ち切りで置き直した先
+            "reset_to";
 
         public void WriteTripsCsv(string path)
         {
@@ -239,7 +262,11 @@
               .Append(r.stopsInNarrow).Append(',')
               .Append(r.stopsOutNarrow).Append(',')
               .Append(F(r.stoppedInNarrowS)).Append(',')
-              .Append(F(r.stoppedOutNarrowS))
+              .Append(F(r.stoppedOutNarrowS)).Append(',')
+              .Append(F(r.runStartS)).Append(',')
+              .Append(JoinInt(r.dishIds)).Append(',')
+              .Append(Join(r.stopArrivedS)).Append(',')
+              .Append(r.resetTo ?? "")
               .Append('\n');
         }
 
@@ -281,7 +308,9 @@
         /// <summary>table_seats は座った卓の大きさ（2＝2人席・4＝4人席・0＝座れなかった）</summary>
         public const string GroupHeader =
             "condition_id,seed,group_id,size,table_id,table_seats,arrive_s,guide_start_s,seated_s," +
-            "eat_end_s,pay_start_s,pay_s,left_s,waited_min,warmup,state";
+            "eat_end_s,pay_start_s,pay_s,left_s,waited_min,warmup,state," +
+            // 依頼 v8 の 2：後ろに足した列
+            "eat_start_s";
 
         public void WriteGroupsCsv(string path)
         {
@@ -298,7 +327,8 @@
                   .Append(F(r.payStartS)).Append(',')
                   .Append(F(r.payS)).Append(',').Append(F(r.leftS)).Append(',')
                   .Append(F(r.waitedMin)).Append(',').Append(r.warmup ? 1 : 0).Append(',')
-                  .Append(r.state).Append('\n');
+                  .Append(r.state).Append(',')
+                  .Append(F(r.eatStartS)).Append('\n');
             }
             File.WriteAllText(path, sb.ToString(), new UTF8Encoding(false));
         }
@@ -892,6 +922,8 @@
             sb.Append("  \"written_at\": ").Append(Str(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))).Append(",\n");
             sb.Append("  \"unity_version\": ").Append(Str(Application.unityVersion)).Append(",\n");
             sb.Append("  \"trips_csv_columns\": ").Append(Str(Header)).Append(",\n");
+            sb.Append("  \"groups_csv_columns\": ").Append(Str(GroupHeader)).Append(",\n");
+            sb.Append("  \"dishes_csv_columns\": ").Append(Str(DishHeader)).Append(",\n");
 
             sb.Append("  \"settings\": {\n");
             sb.Append("    \"store_layout\": ").Append(Dump(layout)).Append(",\n");
