{
  "schema_version": 1,
  "observed_at": "2026-10-04T07:04:37.461472+00:00",
  "environment": {
    "os": "Linux",
    "python": "3.10.12",
    "server": "Python ThreadingHTTPServer",
    "binding": "127.0.0.1:자동 배정 포트"
  },
  "method": "임시 루프백 서버의 네 경로에 HEAD와 GET을 각각 요청하고 상태·본문 바이트 수·예상 릴리스 문자열을 비교했다. 잘못된 본문과 메서드별 분기는 실험을 위해 의도적으로 구현했다.",
  "limits": "합성 서버에서의 기능 비교이며 운영 장애·CDN·TLS·부하·성능 측정이 아니다. 실제 서비스가 HEAD와 GET을 다르게 구현했다는 증거가 아니다.",
  "observations": [
    {
      "path": "/ok",
      "head": {
        "status": 200,
        "body_bytes": 0,
        "content_length": "41",
        "expected_marker": false,
        "body": ""
      },
      "get": {
        "status": 200,
        "body_bytes": 41,
        "content_length": "41",
        "expected_marker": true,
        "body": "<html><h1>RELEASE-EXPECTED-v2</h1></html>"
      }
    },
    {
      "path": "/wrong-content",
      "head": {
        "status": 200,
        "body_bytes": 0,
        "content_length": "36",
        "expected_marker": false,
        "body": ""
      },
      "get": {
        "status": 200,
        "body_bytes": 36,
        "content_length": "36",
        "expected_marker": false,
        "body": "<html><h1>RELEASE-OLD-v1</h1></html>"
      }
    },
    {
      "path": "/method-mismatch",
      "head": {
        "status": 200,
        "body_bytes": 0,
        "content_length": "15",
        "expected_marker": false,
        "body": ""
      },
      "get": {
        "status": 503,
        "body_bytes": 24,
        "content_length": "24",
        "expected_marker": false,
        "body": "<html>unavailable</html>"
      }
    },
    {
      "path": "/missing",
      "head": {
        "status": 404,
        "body_bytes": 0,
        "content_length": "22",
        "expected_marker": false,
        "body": ""
      },
      "get": {
        "status": 404,
        "body_bytes": 22,
        "content_length": "22",
        "expected_marker": false,
        "body": "<html>not found</html>"
      }
    }
  ],
  "tables": {
    "requests": {
      "headers": [
        "경로 조건",
        "HEAD 상태",
        "HEAD 본문 바이트",
        "GET 상태",
        "GET 본문 바이트",
        "GET 예상 문자열"
      ],
      "rows": [
        [
          "정상 본문",
          200,
          0,
          200,
          41,
          "있음"
        ],
        [
          "다른 릴리스 본문",
          200,
          0,
          200,
          36,
          "없음"
        ],
        [
          "의도적으로 다른 메서드 처리",
          200,
          0,
          503,
          24,
          "없음"
        ],
        [
          "없는 경로",
          404,
          0,
          404,
          22,
          "없음"
        ]
      ]
    }
  }
}
