{
  "protocol": "gangnam-map-training-v1",
  "simulation": true,
  "fieldValidated": false,
  "mapSource": {
    "provider": "OpenStreetMap contributors",
    "license": "ODbL-1.0",
    "attribution": "© OpenStreetMap contributors",
    "url": "https://www.openstreetmap.org/copyright",
    "endpoint": "https://overpass-api.de/api/interpreter",
    "osmTimestamp": "2026-10-31T00:13:59Z",
    "rawSha256": "8d53378e709d2e31b6104230a3726882dcb88a90d8259e2bd577b8d2f5958c2a"
  },
  "geometry": {
    "roads": 978,
    "buildings": 5845
  },
  "trainingEpisodes": 30,
  "trainingSeeds": "10000+cursor*37",
  "validationSeeds": [
    21001,
    21007,
    21011
  ],
  "testSeeds": [
    61001,
    61007,
    61013
  ],
  "results": [
    {
      "routeId": "gangnam-yeoksam",
      "name": "강남역 인근 → 역삼역 인근",
      "length": 820.397365740328,
      "before": {
        "rows": [
          {
            "seed": 61001,
            "outcome": "collision",
            "return": 11.895301303173081,
            "steps": 46,
            "collisions": 1,
            "offroad": 0,
            "interventions": 1,
            "waits": 0,
            "distance": 89.12999999999951,
            "redViolations": 0
          },
          {
            "seed": 61007,
            "outcome": "arrived",
            "return": 265.51900410398184,
            "steps": 690,
            "collisions": 0,
            "offroad": 0,
            "interventions": 109,
            "waits": 0,
            "distance": 817.7480000000137,
            "redViolations": 0
          },
          {
            "seed": 61013,
            "outcome": "arrived",
            "return": 264.68515448491655,
            "steps": 688,
            "collisions": 0,
            "offroad": 0,
            "interventions": 115,
            "waits": 6,
            "distance": 816.3960000000105,
            "redViolations": 0
          }
        ],
        "seeds": [
          61001,
          61007,
          61013
        ],
        "domain": "dry",
        "shield": true,
        "success": 0.6666666666666666,
        "collisions": 0.3333333333333333,
        "offroad": 0,
        "return": 180.69981996402385,
        "interventions": 75,
        "steps": 474.6666666666667,
        "redViolations": 0
      },
      "after": {
        "rows": [
          {
            "seed": 61001,
            "outcome": "collision",
            "return": 11.895301303173081,
            "steps": 46,
            "collisions": 1,
            "offroad": 0,
            "interventions": 1,
            "waits": 0,
            "distance": 89.12999999999951,
            "redViolations": 0
          },
          {
            "seed": 61007,
            "outcome": "arrived",
            "return": 265.51900410398184,
            "steps": 690,
            "collisions": 0,
            "offroad": 0,
            "interventions": 109,
            "waits": 0,
            "distance": 817.7480000000137,
            "redViolations": 0
          },
          {
            "seed": 61013,
            "outcome": "arrived",
            "return": 264.68515448491655,
            "steps": 688,
            "collisions": 0,
            "offroad": 0,
            "interventions": 115,
            "waits": 6,
            "distance": 816.3960000000105,
            "redViolations": 0
          }
        ],
        "seeds": [
          61001,
          61007,
          61013
        ],
        "domain": "dry",
        "shield": true,
        "success": 0.6666666666666666,
        "collisions": 0.3333333333333333,
        "offroad": 0,
        "return": 180.69981996402385,
        "interventions": 75,
        "steps": 474.6666666666667,
        "redViolations": 0
      },
      "activeVersion": 0,
      "worldApproved": false,
      "agents": [
        {
          "id": "R1",
          "episodes": 10,
          "transitions": 6353,
          "tdUpdates": 16880,
          "loss": 0.6131764066619062
        },
        {
          "id": "R2",
          "episodes": 10,
          "transitions": 6463,
          "tdUpdates": 17176,
          "loss": 0.6168505369177221
        },
        {
          "id": "R3",
          "episodes": 10,
          "transitions": 6141,
          "tdUpdates": 16320,
          "loss": 0.13491192095135163
        }
      ],
      "decisions": [
        {
          "source": "R1",
          "decision": "Reject",
          "gain": -300.388797376776,
          "reason": "독립 도로 검증의 안전·도달 회귀"
        },
        {
          "source": "R2",
          "decision": "Reject",
          "gain": -300.388797376776,
          "reason": "독립 도로 검증의 안전·도달 회귀"
        },
        {
          "source": "R3",
          "decision": "Reject",
          "gain": -300.388797376776,
          "reason": "독립 도로 검증의 안전·도달 회귀"
        }
      ]
    },
    {
      "routeId": "yeoksam-seolleung",
      "name": "역삼역 인근 → 선릉역 인근",
      "length": 1142.6670692637858,
      "before": {
        "rows": [
          {
            "seed": 61001,
            "outcome": "collision",
            "return": 11.895497866045776,
            "steps": 46,
            "collisions": 1,
            "offroad": 0,
            "interventions": 1,
            "waits": 0,
            "distance": 89.13000000000054,
            "redViolations": 0
          },
          {
            "seed": 61007,
            "outcome": "arrived",
            "return": 360.8801828242654,
            "steps": 1013,
            "collisions": 0,
            "offroad": 0,
            "interventions": 169,
            "waits": 0,
            "distance": 1138.998000000038,
            "redViolations": 0
          },
          {
            "seed": 61013,
            "outcome": "arrived",
            "return": 361.70027234898447,
            "steps": 1007,
            "collisions": 0,
            "offroad": 0,
            "interventions": 167,
            "waits": 0,
            "distance": 1140.0780000000027,
            "redViolations": 0
          }
        ],
        "seeds": [
          61001,
          61007,
          61013
        ],
        "domain": "dry",
        "shield": true,
        "success": 0.6666666666666666,
        "collisions": 0.3333333333333333,
        "offroad": 0,
        "return": 244.82531767976522,
        "interventions": 112.33333333333333,
        "steps": 688.6666666666666,
        "redViolations": 0
      },
      "after": {
        "rows": [
          {
            "seed": 61001,
            "outcome": "collision",
            "return": 11.895497866045776,
            "steps": 46,
            "collisions": 1,
            "offroad": 0,
            "interventions": 1,
            "waits": 0,
            "distance": 89.13000000000054,
            "redViolations": 0
          },
          {
            "seed": 61007,
            "outcome": "arrived",
            "return": 360.8801828242654,
            "steps": 1013,
            "collisions": 0,
            "offroad": 0,
            "interventions": 169,
            "waits": 0,
            "distance": 1138.998000000038,
            "redViolations": 0
          },
          {
            "seed": 61013,
            "outcome": "arrived",
            "return": 361.70027234898447,
            "steps": 1007,
            "collisions": 0,
            "offroad": 0,
            "interventions": 167,
            "waits": 0,
            "distance": 1140.0780000000027,
            "redViolations": 0
          }
        ],
        "seeds": [
          61001,
          61007,
          61013
        ],
        "domain": "dry",
        "shield": true,
        "success": 0.6666666666666666,
        "collisions": 0.3333333333333333,
        "offroad": 0,
        "return": 244.82531767976522,
        "interventions": 112.33333333333333,
        "steps": 688.6666666666666,
        "redViolations": 0
      },
      "activeVersion": 0,
      "worldApproved": false,
      "agents": [
        {
          "id": "R1",
          "episodes": 10,
          "transitions": 4748,
          "tdUpdates": 12600,
          "loss": 0.5702918950993978
        },
        {
          "id": "R2",
          "episodes": 10,
          "transitions": 8241,
          "tdUpdates": 21920,
          "loss": 0.5971925469856949
        },
        {
          "id": "R3",
          "episodes": 10,
          "transitions": 10620,
          "tdUpdates": 28264,
          "loss": 0.09116633351238934
        }
      ],
      "decisions": [
        {
          "source": "R1",
          "decision": "Reject",
          "gain": -404.0622708564291,
          "reason": "독립 도로 검증의 안전·도달 회귀"
        },
        {
          "source": "R2",
          "decision": "Reject",
          "gain": -404.0622708564291,
          "reason": "독립 도로 검증의 안전·도달 회귀"
        },
        {
          "source": "R3",
          "decision": "Reject",
          "gain": -404.0622708564291,
          "reason": "독립 도로 검증의 안전·도달 회귀"
        }
      ]
    },
    {
      "routeId": "gangnam-seolleung",
      "name": "강남역 인근 → 선릉역 인근",
      "length": 1963.0644350041134,
      "before": {
        "rows": [
          {
            "seed": 61001,
            "outcome": "collision",
            "return": 11.895301303173,
            "steps": 46,
            "collisions": 1,
            "offroad": 0,
            "interventions": 1,
            "waits": 0,
            "distance": 89.12999999999951,
            "redViolations": 0
          },
          {
            "seed": 61007,
            "outcome": "timeout",
            "return": 515.0321353412851,
            "steps": 1609,
            "collisions": 0,
            "offroad": 0,
            "interventions": 282,
            "waits": 0,
            "distance": 1718.7560000000742,
            "redViolations": 0
          },
          {
            "seed": 61013,
            "outcome": "timeout",
            "return": 517.427286570747,
            "steps": 1609,
            "collisions": 0,
            "offroad": 0,
            "interventions": 281,
            "waits": 0,
            "distance": 1725.1700000000767,
            "redViolations": 0
          }
        ],
        "seeds": [
          61001,
          61007,
          61013
        ],
        "domain": "dry",
        "shield": true,
        "success": 0,
        "collisions": 0.3333333333333333,
        "offroad": 0,
        "return": 348.118241071735,
        "interventions": 188,
        "steps": 1088,
        "redViolations": 0
      },
      "after": {
        "rows": [
          {
            "seed": 61001,
            "outcome": "collision",
            "return": 11.895301303173,
            "steps": 46,
            "collisions": 1,
            "offroad": 0,
            "interventions": 1,
            "waits": 0,
            "distance": 89.12999999999951,
            "redViolations": 0
          },
          {
            "seed": 61007,
            "outcome": "timeout",
            "return": 515.0321353412851,
            "steps": 1609,
            "collisions": 0,
            "offroad": 0,
            "interventions": 282,
            "waits": 0,
            "distance": 1718.7560000000742,
            "redViolations": 0
          },
          {
            "seed": 61013,
            "outcome": "timeout",
            "return": 517.427286570747,
            "steps": 1609,
            "collisions": 0,
            "offroad": 0,
            "interventions": 281,
            "waits": 0,
            "distance": 1725.1700000000767,
            "redViolations": 0
          }
        ],
        "seeds": [
          61001,
          61007,
          61013
        ],
        "domain": "dry",
        "shield": true,
        "success": 0,
        "collisions": 0.3333333333333333,
        "offroad": 0,
        "return": 348.118241071735,
        "interventions": 188,
        "steps": 1088,
        "redViolations": 0
      },
      "activeVersion": 0,
      "worldApproved": false,
      "agents": [
        {
          "id": "R1",
          "episodes": 10,
          "transitions": 10000,
          "tdUpdates": 26608,
          "loss": 0.6182495510289107
        },
        {
          "id": "R2",
          "episodes": 10,
          "transitions": 13704,
          "tdUpdates": 36488,
          "loss": 0.5631885022923848
        },
        {
          "id": "R3",
          "episodes": 10,
          "transitions": 11470,
          "tdUpdates": 30528,
          "loss": 0.07006542015268319
        }
      ],
      "decisions": [
        {
          "source": "R1",
          "decision": "Memorize",
          "gain": -558.828783469707,
          "reason": "검증 효용 부족 · 경험 기억"
        },
        {
          "source": "R2",
          "decision": "Memorize",
          "gain": -558.828783469707,
          "reason": "검증 효용 부족 · 경험 기억"
        },
        {
          "source": "R3",
          "decision": "Memorize",
          "gain": -558.828783469707,
          "reason": "검증 효용 부족 · 경험 기억"
        }
      ]
    }
  ]
}