{
  "testDate": "2026-11-05",
  "account": "Existing ChatGPT Pro account; Free allowance not tested",
  "interface": "ChatGPT web native GIF controls",
  "model": "Resolved image model not disclosed by the web UI",
  "input": "Programmatically drawn fictional product fixture, not a customer brand",
  "requests": 2,
  "selection": "First result retained for each request; no reruns",
  "review": "AI visual review of every decoded frame; not a human panel",
  "assembly": "No code used to assemble either output animation. Code created the source fixture, inspected downloaded files and made static contact sheets only.",
  "files": [
    {
      "file": "morrow-product-source.png",
      "bytes": 16117,
      "sha256": "43eefb749530ec0ab194c2a032ce79ada003214a0faae2963aed30c9b621d13e",
      "format": "PNG",
      "width": 1024,
      "height": 1024,
      "frames": 1,
      "uniqueFrames": 1,
      "frameDurationsMs": [0],
      "durationMs": 0,
      "loop": null
    },
    {
      "file": "first.gif",
      "bytes": 360282,
      "sha256": "68aa771cfb466bd321e9852e6b1cf147a8ea1bab1bdf480a76c3c19e37d0d8ac",
      "format": "GIF",
      "width": 357,
      "height": 357,
      "frames": 12,
      "uniqueFrames": 12,
      "frameDurationsMs": [
        170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170
      ],
      "durationMs": 2040,
      "loop": 0
    },
    {
      "file": "revised.gif",
      "bytes": 463857,
      "sha256": "e75961356ba530cc1e8b33da5816c44883dd711928af11dc73ea36fdf4fddf6c",
      "format": "GIF",
      "width": 307,
      "height": 414,
      "frames": 12,
      "uniqueFrames": 12,
      "frameDurationsMs": [
        170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170
      ],
      "durationMs": 2040,
      "loop": 0
    }
  ],
  "findings": {
    "text": "MORROW/COLD BREW and requested prices readable in all 12 frames of each output by AI visual review",
    "canvas": "357x357 became 307x414 after the price revision",
    "loop": "Both encode infinite looping and 2040ms duration. Native-size Chrome playback showed 6 restarts each, no obvious boundary flash or bottle-position jump; small boundary edge/texture differences remain. See playbackCheck for viewing conditions and limits.",
    "untested": "Free account access/allowance, reliability over repeated runs, named API model comparison, target social-platform upload/playback"
  },
  "playbackCheck": {
    "date": "2026-11-05",
    "viewer": "Chrome, unmodified downloaded GIFs at native 357x357 and 307x414, default GIF timing",
    "method": "AI visual review of sequential browser screenshots over about 12.5 seconds per file, plus decoded last-to-first frame comparison. Frame matching to the 12 source frames confirmed 6 observed 12-to-1 transitions in each sample. No playback speed modification.",
    "first": {
      "captureDurationMs": 12508,
      "screenshots": 453,
      "observedRestarts": 6,
      "restartIntervalsMs": [2042, 2043, 2038, 2028, 2049],
      "visualVerdict": "Continued repeating; highlight faded before restart, no obvious flash or sudden bottle-position jump at native size. Small edge/texture differences visible on boundary-frame comparison."
    },
    "revised": {
      "captureDurationMs": 12522,
      "screenshots": 475,
      "observedRestarts": 6,
      "restartIntervalsMs": [2026, 2050, 2025, 2058, 2016],
      "visualVerdict": "Continued repeating; highlight faded before restart, no obvious flash or sudden bottle-position jump at native size. Small edge/texture differences visible on boundary-frame comparison. Still fails original square canvas requirement."
    },
    "scope": "Viewing judgment for these files and conditions; not pixel-perfect continuity certification, human-panel review or platform-upload compatibility test."
  }
}
