{
  "performed_at": "2026-11-03T09:23:35.704286+00:00",
  "python": "3.14.3",
  "segno": "1.6.1",
  "qr_count": 3,
  "generation_socket_connect_blocked": true,
  "qr_hashes_before": {
    "menu": "dc3700ea1edd2c751d867e0917abc0a3ba7920f5dc07cdebf6f1861512670715",
    "guide": "81bdda14407a2a7c0c1f45520aa3c5badf2721bfa90ac47ba2d75777f1b49f6c",
    "contact": "085b0ab967d4b7d42a273247cb075bf7cae2bbb86e5b90e9fcf615d08779c05a"
  },
  "qr_hashes_after": {
    "menu": "dc3700ea1edd2c751d867e0917abc0a3ba7920f5dc07cdebf6f1861512670715",
    "guide": "81bdda14407a2a7c0c1f45520aa3c5badf2721bfa90ac47ba2d75777f1b49f6c",
    "contact": "085b0ab967d4b7d42a273247cb075bf7cae2bbb86e5b90e9fcf615d08779c05a"
  },
  "vision_before": "menu.png → ENCODE: http://go.qrbench.test/menu\nguide.png → ENCODE: http://go.qrbench.test/guide\ncontact.png → ENCODE: http://go.qrbench.test/contact\n",
  "vision_after": "menu.png → ENCODE: http://go.qrbench.test/menu\nguide.png → ENCODE: http://go.qrbench.test/guide\ncontact.png → ENCODE: http://go.qrbench.test/contact\n",
  "steps": [
    {
      "stage": "source_running",
      "results": [
        {
          "url": "http://go.qrbench.test/menu",
          "status": 302,
          "location": "http://destination.test/menu-v1",
          "body": "",
          "destination": {
            "url": "http://destination.test/menu-v1",
            "status": 200,
            "location": null,
            "body": "/menu-v1"
          }
        },
        {
          "url": "http://go.qrbench.test/guide",
          "status": 302,
          "location": "http://destination.test/guide-v1",
          "body": "",
          "destination": {
            "url": "http://destination.test/guide-v1",
            "status": 200,
            "location": null,
            "body": "/guide-v1"
          }
        },
        {
          "url": "http://go.qrbench.test/contact",
          "status": 302,
          "location": "http://destination.test/contact-v1",
          "body": "",
          "destination": {
            "url": "http://destination.test/contact-v1",
            "status": 200,
            "location": null,
            "body": "/contact-v1"
          }
        }
      ]
    },
    {
      "stage": "source_stopped",
      "result": "connection_refused"
    },
    {
      "stage": "replacement_empty",
      "results": [
        {
          "url": "http://go.qrbench.test/menu",
          "status": 404,
          "location": null,
          "body": ""
        },
        {
          "url": "http://go.qrbench.test/guide",
          "status": 404,
          "location": null,
          "body": ""
        },
        {
          "url": "http://go.qrbench.test/contact",
          "status": 404,
          "location": null,
          "body": ""
        }
      ]
    },
    {
      "stage": "replacement_restored",
      "results": [
        {
          "url": "http://go.qrbench.test/menu",
          "status": 302,
          "location": "http://destination.test/menu-v1",
          "body": "",
          "destination": {
            "url": "http://destination.test/menu-v1",
            "status": 200,
            "location": null,
            "body": "/menu-v1"
          }
        },
        {
          "url": "http://go.qrbench.test/guide",
          "status": 302,
          "location": "http://destination.test/guide-v1",
          "body": "",
          "destination": {
            "url": "http://destination.test/guide-v1",
            "status": 200,
            "location": null,
            "body": "/guide-v1"
          }
        },
        {
          "url": "http://go.qrbench.test/contact",
          "status": 302,
          "location": "http://destination.test/contact-v1",
          "body": "",
          "destination": {
            "url": "http://destination.test/contact-v1",
            "status": 200,
            "location": null,
            "body": "/contact-v1"
          }
        }
      ]
    },
    {
      "stage": "destination_changed",
      "result": {
        "url": "http://go.qrbench.test/menu",
        "status": 302,
        "location": "http://destination.test/menu-v2",
        "body": "",
        "destination": {
          "url": "http://destination.test/menu-v2",
          "status": 200,
          "location": null,
          "body": "/menu-v2"
        }
      }
    },
    {
      "stage": "hostname_changed_original_qrs",
      "results": [
        {
          "url": "http://go.qrbench.test/menu",
          "status": 404,
          "location": null,
          "body": ""
        },
        {
          "url": "http://go.qrbench.test/guide",
          "status": 404,
          "location": null,
          "body": ""
        },
        {
          "url": "http://go.qrbench.test/contact",
          "status": 404,
          "location": null,
          "body": ""
        }
      ],
      "new_url_control": {
        "url": "http://new.qrbench.test/menu",
        "status": 302,
        "location": "http://destination.test/menu-v2",
        "body": "",
        "destination": {
          "url": "http://destination.test/menu-v2",
          "status": 200,
          "location": null,
          "body": "/menu-v2"
        }
      }
    }
  ],
  "limits": [
    "Loopback HTTP only; Host headers explicitly routed by client, no public DNS or TLS tested.",
    "Same laptop, two server instances and separate SQLite files, not two physical hosts.",
    "No Shlink installation, no vendor account, no phone/camera or printed scan test.",
    "Three controlled URLs; no speed, uptime, scalability or market-wide claim."
  ]
}
