{
  "scope": "Focused measured Icecast edge behavior; sequential requests can retain earlier artist/title state. Raw hex is authoritative for charset.",
  "rows": [
    {
      "id": "precedence",
      "classification": "observed-supported",
      "observation": "Nonempty song chosen over same-request artist/title.",
      "quikcast_contract": "song present always wins; no artist state retained.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-precedence",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-precedence.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-precedence-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-precedence-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 99438
        },
        {
          "release": "2.5.0",
          "case": "edge-precedence",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-precedence.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-precedence-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-precedence-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 96037
        }
      ]
    },
    {
      "id": "empty-precedence",
      "classification": "version-dependent",
      "observation": "2.4.4 cleared; 2.5.0 composed Artist - Title.",
      "quikcast_contract": "Explicit empty song clears.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-empty-precedence",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-empty-precedence.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-empty-precedence-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-empty-precedence-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 144056
        },
        {
          "release": "2.5.0",
          "case": "edge-empty-precedence",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-empty-precedence.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-empty-precedence-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-empty-precedence-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 141472
        }
      ]
    },
    {
      "id": "delimiter",
      "classification": "observed-supported",
      "observation": "Embedded delimiter copied into wire; 2.5.0 retained artist prefix.",
      "quikcast_contract": "Reject semicolons with 400.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-delimiter",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-delimiter.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-delimiter-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-delimiter-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 142872
        },
        {
          "release": "2.5.0",
          "case": "edge-delimiter",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-delimiter.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-delimiter-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-delimiter-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 140088
        }
      ]
    },
    {
      "id": "controls",
      "classification": "observed-supported",
      "observation": "NUL truncates observed song; later control bytes beyond NUL not independently measured.",
      "quikcast_contract": "Reject all Unicode controls with 400.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-controls",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-controls.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-controls-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-controls-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 144088
        },
        {
          "release": "2.5.0",
          "case": "edge-controls",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-controls.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-controls-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-controls-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 141488
        }
      ]
    },
    {
      "id": "utf8",
      "classification": "observed-supported",
      "observation": "Explicit UTF-8 charset resulted in E9 wire byte for accented character in both tested configurations.",
      "quikcast_contract": "Accept only UTF-8 and preserve valid UTF-8 bytes.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-utf8",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-utf8.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-utf8-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-utf8-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 141472
        },
        {
          "release": "2.5.0",
          "case": "edge-utf8",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-utf8.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-utf8-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-utf8-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 141488
        }
      ]
    },
    {
      "id": "duplicate",
      "classification": "version-dependent",
      "observation": "2.4.4 chose Second; 2.5.0 First.",
      "quikcast_contract": "Reject decoded duplicate keys with 400.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-duplicate",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-duplicate.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-duplicate-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-duplicate-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 142872
        },
        {
          "release": "2.5.0",
          "case": "edge-duplicate",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-duplicate.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-duplicate-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-duplicate-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 141488
        }
      ]
    },
    {
      "id": "invalid-percent",
      "classification": "unresolved",
      "observation": "HTTP 200 acknowledgment, no changed title within bounded capture.",
      "quikcast_contract": "Reject invalid percent escapes with 400.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-invalid-percent",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-invalid-percent.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-invalid-percent-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-invalid-percent-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 142872
        },
        {
          "release": "2.5.0",
          "case": "edge-invalid-percent",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-invalid-percent.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-invalid-percent-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-invalid-percent-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 142872
        }
      ]
    },
    {
      "id": "invalid-utf8",
      "classification": "observed-supported",
      "observation": "Byte FF emitted in title in both releases.",
      "quikcast_contract": "Reject invalid UTF-8 with 400.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-invalid-utf8",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-invalid-utf8.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-invalid-utf8-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-invalid-utf8-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 142872
        },
        {
          "release": "2.5.0",
          "case": "edge-invalid-utf8",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-invalid-utf8.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-invalid-utf8-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-invalid-utf8-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 141472
        }
      ]
    },
    {
      "id": "large-1024",
      "classification": "observed-supported",
      "observation": "1024-byte song emitted; 2.5.0 retained artist prefix.",
      "quikcast_contract": "1024 UTF-8 bytes maximum normalized title.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-large-1024",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-large-1024.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 113
        },
        {
          "release": "2.4.4",
          "case": "edge-large-1024-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-large-1024-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 142480
        },
        {
          "release": "2.5.0",
          "case": "edge-large-1024",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-large-1024.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 123
        },
        {
          "release": "2.5.0",
          "case": "edge-large-1024-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-large-1024-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 145096
        }
      ]
    },
    {
      "id": "large-4096",
      "classification": "unresolved",
      "observation": "No status bytes within 0.4s admin capture; no replacement during 3s listener read.",
      "quikcast_contract": "Reject titles >1024 bytes; existing 2048-byte request target bound also applies.",
      "evidence": [
        {
          "release": "2.4.4",
          "case": "edge-large-4096",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-large-4096.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "",
          "body_bytes": 0
        },
        {
          "release": "2.4.4",
          "case": "edge-large-4096-icy",
          "fixture": "../fixtures/icecast/2.4.4-metadata-edges/edge-large-4096-icy.response.bin",
          "summary": "../fixtures/icecast/2.4.4-metadata-edges/summary.json",
          "status": "HTTP/1.0 200 OK",
          "body_bytes": 143848
        },
        {
          "release": "2.5.0",
          "case": "edge-large-4096",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-large-4096.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "",
          "body_bytes": 0
        },
        {
          "release": "2.5.0",
          "case": "edge-large-4096-icy",
          "fixture": "../fixtures/icecast/2.5.0-metadata-edges/edge-large-4096-icy.response.bin",
          "summary": "../fixtures/icecast/2.5.0-metadata-edges/summary.json",
          "status": "HTTP/1.1 200 OK",
          "body_bytes": 141064
        }
      ]
    }
  ]
}
