{
  "schema": "local-recipe-evidence/v2",
  "status": "PASS_WITH_EXPLICIT_LIMITS",
  "recordedAt": "2026-10-17T22:23:03+09:00",
  "scope": "Separate local sample, not original author or specified-model reproduction.",
  "runtime": {
    "node": {
      "node": "v24.13.1",
      "timezone": "Asia/Seoul"
    },
    "browser": "Ego Lite Chromium desktop viewport emulation",
    "servedOver": "localhost HTTP"
  },
  "unitChecks": [
    {
      "id": "transit-a-d-no-transfer",
      "status": "PASS"
    },
    {
      "id": "transit-b-d-blue",
      "status": "PASS"
    },
    {
      "id": "transit-unreachable",
      "status": "PASS"
    },
    {
      "id": "transit-same",
      "status": "PASS"
    },
    {
      "id": "transit-invalid-edge",
      "status": "PASS"
    },
    {
      "id": "transit-invalid-station",
      "status": "PASS"
    }
  ],
  "browserObservations": [
    {
      "id": "transit-A-D",
      "state": {
        "from": "A",
        "to": "D",
        "zoom": 1,
        "last": {
          "at": "D",
          "line": "R",
          "minutes": 7,
          "transfers": 0,
          "cost": 7,
          "path": [
            "A",
            "B",
            "C",
            "D"
          ],
          "segments": [
            {
              "from": "A",
              "to": "B",
              "line": "R",
              "minutes": 2
            },
            {
              "from": "B",
              "to": "C",
              "line": "R",
              "minutes": 3
            },
            {
              "from": "C",
              "to": "D",
              "line": "R",
              "minutes": 2
            }
          ]
        }
      }
    },
    {
      "id": "transit-unreachable",
      "state": {
        "from": "A",
        "to": "F",
        "zoom": 1,
        "last": null
      }
    },
    {
      "id": "transit-same",
      "state": {
        "from": "A",
        "to": "A",
        "zoom": 1,
        "last": {
          "at": "A",
          "line": "",
          "minutes": 0,
          "transfers": 0,
          "cost": 0,
          "path": [
            "A"
          ],
          "segments": []
        }
      }
    },
    {
      "id": "transit-zoom",
      "state": {
        "from": "A",
        "to": "D",
        "zoom": 1.2,
        "last": {
          "at": "D",
          "line": "R",
          "minutes": 7,
          "transfers": 0,
          "cost": 7,
          "path": [
            "A",
            "B",
            "C",
            "D"
          ],
          "segments": [
            {
              "from": "A",
              "to": "B",
              "line": "R",
              "minutes": 2
            },
            {
              "from": "B",
              "to": "C",
              "line": "R",
              "minutes": 3
            },
            {
              "from": "C",
              "to": "D",
              "line": "R",
              "minutes": 2
            }
          ]
        }
      }
    },
    {
      "id": "transit-swap",
      "state": {
        "from": "D",
        "to": "A",
        "zoom": 1,
        "last": null
      }
    },
    {
      "id": "transit-width-360",
      "state": {
        "scrollWidth": 360,
        "clientWidth": 360,
        "bodyCut": "visible"
      }
    },
    {
      "id": "transit-width-390",
      "state": {
        "scrollWidth": 390,
        "clientWidth": 390,
        "bodyCut": "visible"
      }
    },
    {
      "id": "transit-width-768",
      "state": {
        "scrollWidth": 768,
        "clientWidth": 768,
        "bodyCut": "visible"
      }
    },
    {
      "id": "transit-width-1440",
      "state": {
        "scrollWidth": 1440,
        "clientWidth": 1440,
        "bodyCut": "visible"
      }
    }
  ],
  "issues": [
    {
      "kind": "표시 범위 보완",
      "observed": "첫 구현에서는 긴 E 역명을 짧게 줄여 표시했습니다.",
      "change": "가상 입력의 이름이 남도록 SVG 두 줄로 나눴습니다.",
      "result": "실제 화면과 360/390/768/1440px 문서 폭을 확인했습니다."
    },
    {
      "kind": "의도적 경계 시험",
      "observed": "연결 없는 F와 같은 역을 직접 선택했습니다.",
      "change": "없는 경로와 0분 결과를 별개로 안내합니다.",
      "result": "실제 버튼 실행 결과 null·0분을 각각 확인했습니다."
    }
  ],
  "packageReproduction": {
    "id": "interactive-transit-map",
    "source": "freshly extracted sample-source.zip",
    "initialized": true,
    "details": {
      "from": "A",
      "to": "B",
      "zoom": 1,
      "last": null
    }
  },
  "scopeBoundaries": [
    "가상 역 6개와 지정된 경로 입력의 결과를 다룹니다. 실제 운행·요금·교통 API와 전체 노선망의 최적성은 범위 밖입니다.",
    "확대 버튼·출발 도착 교환·초기화를 관측했습니다. 드래그 이동·전체 키보드 탐색·모든 레이블 조합은 별도 접근성 시험 대상입니다.",
    "직접 작성한 별도 로컬 샘플의 동작 기록입니다. 원작 재현이나 지정 AI 모델 간 성능 비교와 구분합니다.",
    "화면 폭 검사는 데스크톱 Chromium 뷰포트 에뮬레이션 기준입니다. 실제 단말·Safari·Firefox·장기 운영은 별도 환경 시험 대상입니다."
  ]
}
