{
  "protocol": "visual-pairwise-v2",
  "model": "gpt-6.1-sol",
  "summary": {
    "pairs": 18,
    "wins": 13,
    "ties": 4,
    "losses": 1,
    "swappedDisagreements": 4,
    "meanPreference": 5.11,
    "dimensions": {
      "genericSignals": 4.39,
      "hierarchy": 5.11,
      "type": 4.36,
      "spacing": 4.53,
      "color": 4.11,
      "copy": 4.86,
      "states": 4.82,
      "mobile": 4.94
    }
  },
  "groups": {
    "existing demo": {
      "pairs": 8,
      "wins": 7,
      "ties": 1,
      "losses": 0,
      "swappedDisagreements": 1,
      "meanPreference": 5.56,
      "dimensions": {
        "genericSignals": 4.56,
        "hierarchy": 5.63,
        "type": 4.69,
        "spacing": 4.81,
        "color": 4.38,
        "copy": 4.88,
        "states": 4.7,
        "mobile": 5.25
      }
    },
    "new screen": {
      "pairs": 7,
      "wins": 4,
      "ties": 2,
      "losses": 1,
      "swappedDisagreements": 2,
      "meanPreference": 4.57,
      "dimensions": {
        "genericSignals": 4.64,
        "hierarchy": 4.5,
        "type": 3.93,
        "spacing": 4,
        "color": 4.07,
        "copy": 5,
        "states": 5.13,
        "mobile": 4.14
      }
    },
    "design-system": {
      "pairs": 3,
      "wins": 2,
      "ties": 1,
      "losses": 0,
      "swappedDisagreements": 1,
      "meanPreference": 5.17,
      "dimensions": {
        "genericSignals": 3.33,
        "hierarchy": 5.17,
        "type": 4.5,
        "spacing": 5,
        "color": 3.5,
        "copy": 4.5,
        "states": 4.5,
        "mobile": 6
      }
    }
  },
  "commands": [
    {
      "command": "landing",
      "pairs": 2,
      "wins": 2,
      "ties": 0,
      "losses": 0,
      "swappedDisagreements": 0,
      "meanPreference": 6.25,
      "dimensions": {
        "genericSignals": 5.75,
        "hierarchy": 6.25,
        "type": 5.5,
        "spacing": 5.75,
        "color": 5,
        "copy": 6.25,
        "states": null,
        "mobile": 6.25
      }
    },
    {
      "command": "polish",
      "pairs": 2,
      "wins": 1,
      "ties": 1,
      "losses": 0,
      "swappedDisagreements": 1,
      "meanPreference": 4.75,
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 5,
        "type": 4,
        "spacing": 3.75,
        "color": 4,
        "copy": 4,
        "states": 4.75,
        "mobile": 4.25
      }
    },
    {
      "command": "harden",
      "pairs": 2,
      "wins": 2,
      "ties": 0,
      "losses": 0,
      "swappedDisagreements": 0,
      "meanPreference": 5.75,
      "dimensions": {
        "genericSignals": 5.5,
        "hierarchy": 5.75,
        "type": 4.25,
        "spacing": 5.5,
        "color": 4,
        "copy": 5.5,
        "states": 5.75,
        "mobile": 5.5
      }
    },
    {
      "command": "ship",
      "pairs": 2,
      "wins": 1,
      "ties": 1,
      "losses": 0,
      "swappedDisagreements": 1,
      "meanPreference": 5,
      "dimensions": {
        "genericSignals": 4.75,
        "hierarchy": 4.25,
        "type": 4,
        "spacing": 3.75,
        "color": 4.5,
        "copy": 4.75,
        "states": 4.5,
        "mobile": 4.25
      }
    },
    {
      "command": "audit",
      "pairs": 2,
      "wins": 2,
      "ties": 0,
      "losses": 0,
      "swappedDisagreements": 0,
      "meanPreference": 5.25,
      "dimensions": {
        "genericSignals": 5.25,
        "hierarchy": 5.75,
        "type": 4.75,
        "spacing": 4.75,
        "color": 4.5,
        "copy": 4.5,
        "states": 4.25,
        "mobile": 4.5
      }
    },
    {
      "command": "motion",
      "pairs": 2,
      "wins": 2,
      "ties": 0,
      "losses": 0,
      "swappedDisagreements": 0,
      "meanPreference": 5.5,
      "dimensions": {
        "genericSignals": 3.75,
        "hierarchy": 5.5,
        "type": 4.25,
        "spacing": 4.5,
        "color": 4.25,
        "copy": 5.25,
        "states": 5,
        "mobile": 5.75
      }
    },
    {
      "command": "fix",
      "pairs": 3,
      "wins": 1,
      "ties": 1,
      "losses": 1,
      "swappedDisagreements": 1,
      "meanPreference": 3.83,
      "dimensions": {
        "genericSignals": 4,
        "hierarchy": 3.83,
        "type": 3.83,
        "spacing": 3.5,
        "color": 3.67,
        "copy": 4.5,
        "states": null,
        "mobile": 3.33
      }
    },
    {
      "command": "design-system",
      "pairs": 3,
      "wins": 2,
      "ties": 1,
      "losses": 0,
      "swappedDisagreements": 1,
      "meanPreference": 5.17,
      "dimensions": {
        "genericSignals": 3.33,
        "hierarchy": 5.17,
        "type": 4.5,
        "spacing": 5,
        "color": 3.5,
        "copy": 4.5,
        "states": 4.5,
        "mobile": 6
      }
    }
  ],
  "confirmation": {
    "pairs": 3,
    "wins": 2,
    "ties": 1,
    "losses": 0,
    "swappedDisagreements": 1,
    "meanPreference": 5.17,
    "dimensions": {
      "genericSignals": 3.67,
      "hierarchy": 5.17,
      "type": 4.17,
      "spacing": 4.33,
      "color": 3.83,
      "copy": 5,
      "states": 3.75,
      "mobile": 5.67
    },
    "tasks": [
      {
        "id": "confirm-price",
        "treatment": "kit-landing",
        "command": "landing",
        "brief": "A candlemaker choosing a wax quantity needs a landing page that demonstrates the calculation for a batch of moulds.",
        "outcome": "win",
        "judgments": [
          {
            "fingerprint": "115479a503eb2106e47fc9442b67e58bfbd55ed5fad1d0452aa4dbe02b79f5e1",
            "order": [
              "plain",
              "kit-landing"
            ],
            "preference": 6,
            "dimensions": {
              "genericSignals": 5,
              "hierarchy": 6,
              "type": 5,
              "spacing": 6,
              "color": 4,
              "copy": 5,
              "states": null,
              "mobile": 7
            },
            "reason": "B keeps the mould input, 250 g result and calculation together on mobile, while A’s result falls below the visible screen. A provides clearer minus/plus controls and separate allowance facts, but B’s compact grouping makes the batch calculation easier to follow at both widths.",
            "images": {
              "A": {
                "desktop": {
                  "sha256": "688d4467526befe733c0da7ff84234244d5dcf7fb3dd29d7e1d9eed50504e4f6",
                  "bytes": 77161,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "73ca9d347078003cbc00ccf83ee54bc98973bfcc1d2938b9fccfb27467ec1bf4",
                  "bytes": 44739,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "c6f06e1912fe9f60613bbeffd3240d4f3d70be51b2a398d160bb634a6ff4bf77",
                  "bytes": 93255,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "6641038c604414e34cd307b58c413de73ff786f7ae786cb4d2cc929f3eb72b8b",
                  "bytes": 53004,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "imageReceipt": "post-run-snapshot"
          },
          {
            "fingerprint": "115479a503eb2106e47fc9442b67e58bfbd55ed5fad1d0452aa4dbe02b79f5e1",
            "order": [
              "kit-landing",
              "plain"
            ],
            "preference": 2,
            "dimensions": {
              "genericSignals": 3,
              "hierarchy": 2,
              "type": 3,
              "spacing": 3,
              "color": 4,
              "copy": 2,
              "states": null,
              "mobile": 2
            },
            "reason": "A keeps the 250 g result, the 6 × 40 g calculation and the 10 g allowance visible above the mobile action; B pushes the result below the visible mobile area. B offers clearer minus/plus controls, but A connects the input, calculation and outcome more directly.",
            "images": {
              "A": {
                "desktop": {
                  "sha256": "c6f06e1912fe9f60613bbeffd3240d4f3d70be51b2a398d160bb634a6ff4bf77",
                  "bytes": 93255,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "6641038c604414e34cd307b58c413de73ff786f7ae786cb4d2cc929f3eb72b8b",
                  "bytes": 53004,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "688d4467526befe733c0da7ff84234244d5dcf7fb3dd29d7e1d9eed50504e4f6",
                  "bytes": 77161,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "73ca9d347078003cbc00ccf83ee54bc98973bfcc1d2938b9fccfb27467ec1bf4",
                  "bytes": 44739,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "imageReceipt": "post-run-snapshot"
          }
        ],
        "scores": [
          6,
          6
        ],
        "sourceGroup": "first confirmation",
        "dimensions": {
          "genericSignals": 5,
          "hierarchy": 6,
          "type": 5,
          "spacing": 5.5,
          "color": 4,
          "copy": 5.5,
          "states": null,
          "mobile": 6.5
        }
      },
      {
        "id": "confirm-form",
        "treatment": "kit-harden",
        "command": "harden",
        "brief": "A greenhouse operator needs to recover the rejected low-stock threshold without losing the entered value.",
        "outcome": "tie",
        "judgments": [
          {
            "fingerprint": "83f0df572666193a9eadad75b3aba843bae5118ce141f97410a13e78b98c89e2",
            "order": [
              "plain",
              "kit-harden"
            ],
            "preference": 2,
            "dimensions": {
              "genericSignals": 2,
              "hierarchy": 2,
              "type": 4,
              "spacing": 3,
              "color": 4,
              "copy": 2,
              "states": 2,
              "mobile": 2
            },
            "reason": "A groups Retry save with an explicit Unsaved change status and preserves the entered 12 alongside the saved 8, making recovery clear at both widths. B puts the saved-value reassurance directly in the error, but its longer mobile alert and repeated retention note make the recovery area more cumbersome.",
            "images": {
              "A": {
                "desktop": {
                  "sha256": "fa39982202a91e51ac188eb11b688d46e8b144de3447de99126e016e5b8a3775",
                  "bytes": 53738,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "e6297d182735857c27477eef3fa52d49b60ec5421ccf5ff07885c78466f177c8",
                  "bytes": 43495,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "dd4c556128a7fd467b653a692c4346395d3c1c231e0870dbbdbdb17c939502e8",
                  "bytes": 57686,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "bbf1289c1720da00bf49c3fc08e5df19364ab0bb3dfe14775da964c25fa3de37",
                  "bytes": 49198,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "imageReceipt": "post-run-snapshot"
          },
          {
            "fingerprint": "83f0df572666193a9eadad75b3aba843bae5118ce141f97410a13e78b98c89e2",
            "order": [
              "kit-harden",
              "plain"
            ],
            "preference": 3,
            "dimensions": {
              "genericSignals": 4,
              "hierarchy": 3,
              "type": 4,
              "spacing": 5,
              "color": 4,
              "copy": 2,
              "states": 3,
              "mobile": 3
            },
            "reason": "A’s error message keeps the entered 12 trays, saved 8 trays and retry instruction together, making recovery clearer. B has cleaner spacing and a distinct action footer, but separates the saved-threshold reassurance from the error and retry control.",
            "images": {
              "A": {
                "desktop": {
                  "sha256": "dd4c556128a7fd467b653a692c4346395d3c1c231e0870dbbdbdb17c939502e8",
                  "bytes": 57686,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "bbf1289c1720da00bf49c3fc08e5df19364ab0bb3dfe14775da964c25fa3de37",
                  "bytes": 49198,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "fa39982202a91e51ac188eb11b688d46e8b144de3447de99126e016e5b8a3775",
                  "bytes": 53738,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "e6297d182735857c27477eef3fa52d49b60ec5421ccf5ff07885c78466f177c8",
                  "bytes": 43495,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "imageReceipt": "post-run-snapshot"
          }
        ],
        "scores": [
          2,
          5
        ],
        "sourceGroup": "first confirmation",
        "dimensions": {
          "genericSignals": 3,
          "hierarchy": 3.5,
          "type": 4,
          "spacing": 3,
          "color": 4,
          "copy": 4,
          "states": 3.5,
          "mobile": 3.5
        }
      },
      {
        "id": "confirm-sheet",
        "treatment": "kit-fix",
        "command": "fix",
        "brief": "Finish the recording studio schedule for a coordinator assigning an engineer to the next unstaffed session.",
        "outcome": "win",
        "judgments": [
          {
            "fingerprint": "017dfc3934ef56b64dbaf62603f28d9473342ffc0062e6eaf9a11588576db99d",
            "order": [
              "plain",
              "kit-fix"
            ],
            "preference": 6,
            "dimensions": {
              "genericSignals": 3,
              "hierarchy": 6,
              "type": 4,
              "spacing": 5,
              "color": 4,
              "copy": 5,
              "states": 4,
              "mobile": 7
            },
            "reason": "B places the engineer field and assignment button directly beneath Braid Quartet, keeping the next action visible on mobile while A pushes its staffing form below the visible area. A gives both sessions a more compact overview and clearly marks the next unstaffed session, but B connects the assignment controls more directly to the session they affect.",
            "images": {
              "A": {
                "desktop": {
                  "sha256": "d6ce1a1308a08f3cf9a652277faadec5379d687a9755eb7aad2177c91a02a129",
                  "bytes": 78756,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "bd8ba58104a20920ab6c5ab761c9c73c0b9f775b06dd23be41a9b3844580bdd1",
                  "bytes": 46159,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "c757c5cc4c0b8aa92abea45834db011dfb793cabf52b1de4c1bfaaa66ca065ed",
                  "bytes": 64701,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "334ad7c1d59e874d15ba031498e0d165399ff97c7c3732a61b5690c0ae7c01f0",
                  "bytes": 45617,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "imageReceipt": "post-run-snapshot"
          },
          {
            "fingerprint": "017dfc3934ef56b64dbaf62603f28d9473342ffc0062e6eaf9a11588576db99d",
            "order": [
              "kit-fix",
              "plain"
            ],
            "preference": 2,
            "dimensions": {
              "genericSignals": 5,
              "hierarchy": 2,
              "type": 5,
              "spacing": 4,
              "color": 5,
              "copy": 2,
              "states": 4,
              "mobile": 1
            },
            "reason": "A places the engineer field and assignment button directly within Braid Quartet’s session, keeping the task accessible on mobile while B pushes the controls below the visible screen. B has more distinctive typography and clearer session emphasis, but A’s task-specific heading and adjacent controls better support finishing the assignment.",
            "images": {
              "A": {
                "desktop": {
                  "sha256": "c757c5cc4c0b8aa92abea45834db011dfb793cabf52b1de4c1bfaaa66ca065ed",
                  "bytes": 64701,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "334ad7c1d59e874d15ba031498e0d165399ff97c7c3732a61b5690c0ae7c01f0",
                  "bytes": 45617,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "d6ce1a1308a08f3cf9a652277faadec5379d687a9755eb7aad2177c91a02a129",
                  "bytes": 78756,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "bd8ba58104a20920ab6c5ab761c9c73c0b9f775b06dd23be41a9b3844580bdd1",
                  "bytes": 46159,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "imageReceipt": "post-run-snapshot"
          }
        ],
        "scores": [
          6,
          6
        ],
        "sourceGroup": "first confirmation",
        "dimensions": {
          "genericSignals": 3,
          "hierarchy": 6,
          "type": 3.5,
          "spacing": 4.5,
          "color": 3.5,
          "copy": 5.5,
          "states": 4,
          "mobile": 7
        }
      }
    ]
  },
  "finalConfirmation": {
    "pairs": 3,
    "wins": 1,
    "ties": 1,
    "losses": 1,
    "swappedDisagreements": 1,
    "meanPreference": 3.5,
    "dimensions": {
      "genericSignals": 3.33,
      "hierarchy": 3.17,
      "type": 3.5,
      "spacing": 3.83,
      "color": 3.17,
      "copy": 3.33,
      "states": 3.83,
      "mobile": 4.67
    },
    "tasks": [
      {
        "id": "rail-callboard",
        "treatment": "kit-fix",
        "command": "fix",
        "brief": "Finish the wardrobe callboard for a theatre dresser assigning the unfinished garment before its cue. Keep the ready garment visible as a separate state.",
        "outcome": "win",
        "judgments": [
          {
            "fingerprint": "c08823c612cea655444cef6414c1a94ceead0b45d17f6588d41b8619bbb7ff31",
            "order": [
              "plain",
              "kit-fix"
            ],
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "images": {
              "A": {
                "desktop": {
                  "sha256": "0262f5b691c699ab12b578864f89234fe514d318d838cb10a8d48be42204c7a0",
                  "bytes": 77537,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "93dad14e6377104cec0bede5d4ba56e5c78e19deec82ff6d3a6ab55850ebac71",
                  "bytes": 49760,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "20b9a464f3920cd81eaf0437a7d3bdf04978352e0b112ddea5a2401a0510e254",
                  "bytes": 62007,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "dad866f773337dd4181b0e836ea666366d3c8f33f733276ea29a037afbdb0658",
                  "bytes": 48172,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "imageReceipt": "at-judgment",
            "preference": 5,
            "dimensions": {
              "genericSignals": 5,
              "hierarchy": 5,
              "type": 5,
              "spacing": 6,
              "color": 4,
              "copy": 4,
              "states": 4,
              "mobile": 6
            },
            "reason": "B makes cue times, garment names and the assignment action easy to scan, and keeps the ready Wool cape visible on mobile. A provides a concrete tailor-name field, but its taller assignment card pushes the ready garment below the mobile view."
          },
          {
            "fingerprint": "c08823c612cea655444cef6414c1a94ceead0b45d17f6588d41b8619bbb7ff31",
            "order": [
              "kit-fix",
              "plain"
            ],
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "images": {
              "A": {
                "desktop": {
                  "sha256": "20b9a464f3920cd81eaf0437a7d3bdf04978352e0b112ddea5a2401a0510e254",
                  "bytes": 62007,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "dad866f773337dd4181b0e836ea666366d3c8f33f733276ea29a037afbdb0658",
                  "bytes": 48172,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "0262f5b691c699ab12b578864f89234fe514d318d838cb10a8d48be42204c7a0",
                  "bytes": 77537,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "93dad14e6377104cec0bede5d4ba56e5c78e19deec82ff6d3a6ab55850ebac71",
                  "bytes": 49760,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "imageReceipt": "at-judgment",
            "preference": 3,
            "dimensions": {
              "genericSignals": 2,
              "hierarchy": 3,
              "type": 3,
              "spacing": 3,
              "color": 4,
              "copy": 3,
              "states": 3,
              "mobile": 2
            },
            "reason": "A keeps the unfinished Brass coat, assignment action and separate ready Wool cape visible on mobile, making the callboard easier to scan. B provides a concrete tailor-name field beside its assignment button, but its large introductory headline and taller form push the ready garment below the mobile viewport."
          }
        ],
        "scores": [
          5,
          5
        ],
        "sourceGroup": "final confirmation",
        "dimensions": {
          "genericSignals": 5.5,
          "hierarchy": 5,
          "type": 5,
          "spacing": 5.5,
          "color": 4,
          "copy": 4.5,
          "states": 4.5,
          "mobile": 6
        }
      },
      {
        "id": "tile-log",
        "treatment": "kit-design-system",
        "command": "design-system",
        "brief": "Derive a usable design system for a ceramicist distinguishing the held glaze test from the test ready for a batch. Preserve both firing records.",
        "outcome": "tie",
        "judgments": [
          {
            "fingerprint": "a01e845b7898cc2529fcd71b2ca242599aede928b538cd424573aa2e2f96991a",
            "order": [
              "plain",
              "kit-design-system"
            ],
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "images": {
              "A": {
                "desktop": {
                  "sha256": "d0a522386314a096aef86611a7bd7fe44a26a5221addd8dae922240dea058c35",
                  "bytes": 59775,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "71c70e0deaf3247b28100850317ce0dc5b0a44a3adc8d43d44dd06cd39ff4870",
                  "bytes": 39464,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "700b38b2398c58884e972f36469d2cf7a00938dd0300d981c2d703156a15033e",
                  "bytes": 49696,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "605c3527b8735635bbf47033e78c4a2810d706e5e72db076e0010000537924db",
                  "bytes": 34923,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "imageReceipt": "at-judgment",
            "preference": 5,
            "dimensions": {
              "genericSignals": 3,
              "hierarchy": 5,
              "type": 3,
              "spacing": 5,
              "color": 3,
              "copy": 3,
              "states": 4,
              "mobile": 6
            },
            "reason": "B’s compact mobile rows keep both firing records, results and statuses visible together, while A’s tall cards push the ready test below the fold. A has more distinctive typography and restrained status bands, but B places the held-test action directly beside its status on desktop and beneath its explanation on mobile."
          },
          {
            "fingerprint": "a01e845b7898cc2529fcd71b2ca242599aede928b538cd424573aa2e2f96991a",
            "order": [
              "kit-design-system",
              "plain"
            ],
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "images": {
              "A": {
                "desktop": {
                  "sha256": "700b38b2398c58884e972f36469d2cf7a00938dd0300d981c2d703156a15033e",
                  "bytes": 49696,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "605c3527b8735635bbf47033e78c4a2810d706e5e72db076e0010000537924db",
                  "bytes": 34923,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "d0a522386314a096aef86611a7bd7fe44a26a5221addd8dae922240dea058c35",
                  "bytes": 59775,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "71c70e0deaf3247b28100850317ce0dc5b0a44a3adc8d43d44dd06cd39ff4870",
                  "bytes": 39464,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "imageReceipt": "at-judgment",
            "preference": 6,
            "dimensions": {
              "genericSignals": 6,
              "hierarchy": 6,
              "type": 6,
              "spacing": 6,
              "color": 6,
              "copy": 5,
              "states": 5,
              "mobile": 2
            },
            "reason": "B gives each glaze a clear status band, aligned firing facts and a well-placed held-test action, creating a more deliberate journal interface. A is more compact on mobile and shows both complete records together, while B pushes the ready record below the visible area."
          }
        ],
        "scores": [
          5,
          2
        ],
        "sourceGroup": "final confirmation",
        "dimensions": {
          "genericSignals": 2.5,
          "hierarchy": 3.5,
          "type": 2.5,
          "spacing": 3.5,
          "color": 2.5,
          "copy": 3,
          "states": 3.5,
          "mobile": 6
        }
      },
      {
        "id": "tide-board",
        "treatment": "kit-fix",
        "command": "fix",
        "brief": "Finish the harbor departure board for a dispatcher checking which vessel can leave next. Preserve the restrictions, berths and times.",
        "outcome": "loss",
        "judgments": [
          {
            "fingerprint": "a7647ea397128d787e6e6bc53074b556e1063c5af21d9d709d8b33275f385353",
            "order": [
              "plain",
              "kit-fix"
            ],
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "images": {
              "A": {
                "desktop": {
                  "sha256": "34efd5c4ca1c9b2b1cb94ad8f92c7faf54b84a4d777c49771f08b53b5c3cd353",
                  "bytes": 64528,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "ac093788362715168d10456bd6a7e67d39e9d20dc1d5259887dd63d0600138c4",
                  "bytes": 51135,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "655f83295ed0f977ea04840dd0618d63e0551e7924139440c3c1fe74a7458e94",
                  "bytes": 53851,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "cc2f5bf9d4fbbba6116208758321bd6cb77e2d8c7ffe142a62b928a160d51f99",
                  "bytes": 43583,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "imageReceipt": "at-judgment",
            "preference": 2,
            "dimensions": {
              "genericSignals": 2,
              "hierarchy": 1,
              "type": 3,
              "spacing": 3,
              "color": 3,
              "copy": 2,
              "states": 4,
              "mobile": 2
            },
            "reason": "A foregrounds Petrel as the next cleared departure with its berth and 09:10 time on both widths, directly supporting the dispatcher's decision. B gives schedule rows larger type and stronger departure times, but leaves the next cleared vessel below Kittiwake; A preserves both vessels' restrictions, berths and times while making clearance priority clearer."
          },
          {
            "fingerprint": "a7647ea397128d787e6e6bc53074b556e1063c5af21d9d709d8b33275f385353",
            "order": [
              "kit-fix",
              "plain"
            ],
            "provenance": {
              "backend": "codex",
              "model": "gpt-6.1-sol"
            },
            "images": {
              "A": {
                "desktop": {
                  "sha256": "655f83295ed0f977ea04840dd0618d63e0551e7924139440c3c1fe74a7458e94",
                  "bytes": 53851,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "cc2f5bf9d4fbbba6116208758321bd6cb77e2d8c7ffe142a62b928a160d51f99",
                  "bytes": 43583,
                  "width": 390,
                  "height": 844
                }
              },
              "B": {
                "desktop": {
                  "sha256": "34efd5c4ca1c9b2b1cb94ad8f92c7faf54b84a4d777c49771f08b53b5c3cd353",
                  "bytes": 64528,
                  "width": 1440,
                  "height": 900
                },
                "mobile": {
                  "sha256": "ac093788362715168d10456bd6a7e67d39e9d20dc1d5259887dd63d0600138c4",
                  "bytes": 51135,
                  "width": 390,
                  "height": 844
                }
              }
            },
            "imageReceipt": "at-judgment",
            "preference": 6,
            "dimensions": {
              "genericSignals": 6,
              "hierarchy": 7,
              "type": 5,
              "spacing": 6,
              "color": 5,
              "copy": 5,
              "states": 5,
              "mobile": 6
            },
            "reason": "B prominently identifies Petrel at North quay, 09:10 as the next cleared departure at both widths, making the dispatcher's main decision immediate. B preserves Kittiwake's hold and restriction link, though A gives departure times stronger emphasis and states more explicitly that a scheduled time does not override a restriction."
          }
        ],
        "scores": [
          2,
          2
        ],
        "sourceGroup": "final confirmation",
        "dimensions": {
          "genericSignals": 2,
          "hierarchy": 1,
          "type": 3,
          "spacing": 2.5,
          "color": 3,
          "copy": 2.5,
          "states": 3.5,
          "mobile": 2
        }
      }
    ]
  },
  "tasks": [
    {
      "id": "tally-home",
      "treatment": "kit-landing",
      "command": "landing",
      "brief": "A studio owner wants to see whether this invoice tool can show what clients still owe. Make the opening screen and its next step convincing.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "43bc206aaf1f2f86acd89f11f37f6e75188b92c10d6b5cbe17359381e874dada",
          "order": [
            "plain",
            "kit-landing"
          ],
          "preference": 7,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 7,
            "type": 6,
            "spacing": 6,
            "color": 6,
            "copy": 7,
            "states": null,
            "mobile": 7
          },
          "reason": "B connects “See what’s owed” directly to the $6,550 outstanding balance and highlights $2,800 overdue, making the next step more specific than A’s “View dashboard.” B also shows the complete summary on mobile; A’s larger headline and framed preview provide more breathing room but push key invoice facts below the visible screen.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "ea8d1956c85065c857c23ef6ef867908defbf094cfba54199ddca1a678bd95b0",
                "bytes": 93691,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9cb12bb9eb8f54b43483bc3726a0aea647b7cc1625826886ef6802896b7e8656",
                "bytes": 56422,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "b74fad79326564c116457784e83da18556efbde05a002730cd83e98b0b4d6a3c",
                "bytes": 112583,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "5d7c4ebc8fcace55a67deca243379b2b22fda97e9b72426163cc77a32c373cfa",
                "bytes": 63296,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "43bc206aaf1f2f86acd89f11f37f6e75188b92c10d6b5cbe17359381e874dada",
          "order": [
            "kit-landing",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 2,
            "type": 2,
            "spacing": 3,
            "color": 3,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A connects “What’s still owed?” to “See what’s owed” and explicitly identifies $2,800 as overdue; B’s “View dashboard” is less specific. B gives the summary a distinct frame, but its taller mobile headline and framing push the invoice breakdown below the visible screen, while A shows all three balances.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "b74fad79326564c116457784e83da18556efbde05a002730cd83e98b0b4d6a3c",
                "bytes": 112583,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "5d7c4ebc8fcace55a67deca243379b2b22fda97e9b72426163cc77a32c373cfa",
                "bytes": 63296,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "ea8d1956c85065c857c23ef6ef867908defbf094cfba54199ddca1a678bd95b0",
                "bytes": 93691,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9cb12bb9eb8f54b43483bc3726a0aea647b7cc1625826886ef6802896b7e8656",
                "bytes": 56422,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        7,
        6
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 5.5,
        "hierarchy": 6.5,
        "type": 6,
        "spacing": 5.5,
        "color": 5.5,
        "copy": 6.5,
        "states": null,
        "mobile": 6.5
      }
    },
    {
      "id": "tally-dashboard",
      "treatment": "kit-polish",
      "command": "polish",
      "brief": "Make October billing legible at a glance for the studio owner following up unpaid invoices.",
      "outcome": "tie",
      "judgments": [
        {
          "fingerprint": "fc2803831d5342b4993d7e61d65f00edde52367d004dcc67ddee4e177dbc746a",
          "order": [
            "plain",
            "kit-polish"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 6,
            "type": 4,
            "spacing": 4,
            "color": 4,
            "copy": 2,
            "states": 4,
            "mobile": 5
          },
          "reason": "B puts Dovetail’s $2,800 overdue invoice first and keeps unpaid rows visible on mobile, making follow-up easier to prioritize. A provides a clearer “Review overdue” action and collection progress, but its mobile layout pushes the invoice list below the summary and alert.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "d9b8ae954e1d0b0a0c67ba01e6372562c99b3bdc69b8e757276120621575135e",
                "bytes": 85510,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "777ac44a655e528070c39c013f9bbb2718ccefa930b31a20eba8cf8ded42a4f7",
                "bytes": 60890,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "4e4809df94febe6a0e3bb04324af9a586b9d29111519dbef9b1d9aae0c123da6",
                "bytes": 83112,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "d30b4dcc9ea781c3445f0e6ecca89d5b8095fdb9bef05bcf252d064e2ce9f7bb",
                "bytes": 58479,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "fc2803831d5342b4993d7e61d65f00edde52367d004dcc67ddee4e177dbc746a",
          "order": [
            "kit-polish",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 4
          },
          "reason": "B groups October totals with collection progress and gives the overdue invoice a specific review action. A keeps overdue and open invoices first in the table, making unpaid follow-up easier to scan, while B uses mobile space on a separate overdue notice above paid-first rows.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "4e4809df94febe6a0e3bb04324af9a586b9d29111519dbef9b1d9aae0c123da6",
                "bytes": 83112,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "d30b4dcc9ea781c3445f0e6ecca89d5b8095fdb9bef05bcf252d064e2ce9f7bb",
                "bytes": 58479,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "d9b8ae954e1d0b0a0c67ba01e6372562c99b3bdc69b8e757276120621575135e",
                "bytes": 85510,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "777ac44a655e528070c39c013f9bbb2718ccefa930b31a20eba8cf8ded42a4f7",
                "bytes": 60890,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        5,
        3
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 2,
        "hierarchy": 4.5,
        "type": 3.5,
        "spacing": 3.5,
        "color": 3.5,
        "copy": 2,
        "states": 4,
        "mobile": 4.5
      }
    },
    {
      "id": "tally-settings",
      "treatment": "kit-harden",
      "command": "harden",
      "brief": "Make the billing contact settings ready for a studio owner to edit and recover from a failed save on a phone.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "1e6ea7b8de8b79e849cd682003168b52311642cfb95d358e8c5ae90f42b2e31f",
          "order": [
            "plain",
            "kit-harden"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 4,
            "copy": 6,
            "states": 6,
            "mobile": 6
          },
          "reason": "B places an explicit retry action inside the failed-save message, visible on mobile; A puts recovery in the desktop footer, outside the mobile view. B also brings the editable fields higher on mobile by removing the General tab and decorative header icon, though A makes the error more prominent by placing it before the fields.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "8f8042d6467e600f7dcfa4f2613ad8888cf81a9cbb755650d135045d266fa11f",
                "bytes": 67592,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "10637d57786b68ad445599ff12b59121abd2793a7fd867a8b4860eb0f375e2d9",
                "bytes": 51303,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "e11ecbe43c324c521a20f890ff108e22beb71cb53dbec754c3d15b0745e35c63",
                "bytes": 71440,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "5ef43b5e1b3a4e761bb5d0da7c854f92e5369cb9c424b314900024719b65595b",
                "bytes": 55664,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "1e6ea7b8de8b79e849cd682003168b52311642cfb95d358e8c5ae90f42b2e31f",
          "order": [
            "kit-harden",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 4,
            "spacing": 2,
            "color": 4,
            "copy": 2,
            "states": 2,
            "mobile": 2
          },
          "reason": "A places “Try saving again” inside the error beside the preserved billing details, making recovery visible on mobile; B places its retry action in the desktop footer, outside the visible mobile area. B makes the failure prominent above the fields, but its General tab and taller header push editing controls farther down the phone screen.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "e11ecbe43c324c521a20f890ff108e22beb71cb53dbec754c3d15b0745e35c63",
                "bytes": 71440,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "5ef43b5e1b3a4e761bb5d0da7c854f92e5369cb9c424b314900024719b65595b",
                "bytes": 55664,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "8f8042d6467e600f7dcfa4f2613ad8888cf81a9cbb755650d135045d266fa11f",
                "bytes": 67592,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "10637d57786b68ad445599ff12b59121abd2793a7fd867a8b4860eb0f375e2d9",
                "bytes": 51303,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        6
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 5.5,
        "hierarchy": 6,
        "type": 4.5,
        "spacing": 6,
        "color": 4,
        "copy": 6,
        "states": 6,
        "mobile": 6
      }
    },
    {
      "id": "folio-login",
      "treatment": "kit-ship",
      "command": "ship",
      "brief": "Prepare the client sign-in screen for release. Review the customer-visible path and address the most consequential presentation defects.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "747a92ce323fd219762ba258a788280b5d46884d641bd398a4b7e674da061304",
          "order": [
            "plain",
            "kit-ship"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 3,
            "states": null,
            "mobile": 5
          },
          "reason": "B’s desktop split layout and typographic specimen give the screen a distinct identity, while its mobile form retains clear labels and a prominent sign-in action. A provides more useful account-specific guidance and places the form higher on mobile, but its bordered card feels more generic.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c7eaf1cc44083dd24aa8222fcd9b61553e20d3cdda9e14e9123a44a6433223eb",
                "bytes": 31646,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "36b915fc35a391fbd78294d32f54c5efa4fc9f981b429f58024b8f28d2b355ab",
                "bytes": 25283,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "d22b432931acf25e8a29ceabd995d7e2cc621793a364dc6712d0e53d0a82ed77",
                "bytes": 39902,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "be6f867d6fe7f52da6810f59d4ab02ca10f113f301510036b8a76ab8aac3efc1",
                "bytes": 24375,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "747a92ce323fd219762ba258a788280b5d46884d641bd398a4b7e674da061304",
          "order": [
            "kit-ship",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 3,
            "type": 4,
            "spacing": 3,
            "color": 4,
            "copy": 3,
            "states": null,
            "mobile": 3
          },
          "reason": "A’s Atlas Foundry panel gives the desktop a specific studio identity, while B’s centered card feels more interchangeable. A also places email guidance directly beneath the field; B groups the mobile form more compactly but separates that guidance from the input with a large gap and divider.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "d22b432931acf25e8a29ceabd995d7e2cc621793a364dc6712d0e53d0a82ed77",
                "bytes": 39902,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "be6f867d6fe7f52da6810f59d4ab02ca10f113f301510036b8a76ab8aac3efc1",
                "bytes": 24375,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c7eaf1cc44083dd24aa8222fcd9b61553e20d3cdda9e14e9123a44a6433223eb",
                "bytes": 31646,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "36b915fc35a391fbd78294d32f54c5efa4fc9f981b429f58024b8f28d2b355ab",
                "bytes": 25283,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        6
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 6,
        "hierarchy": 5,
        "type": 4.5,
        "spacing": 5,
        "color": 4.5,
        "copy": 4,
        "states": null,
        "mobile": 5
      }
    },
    {
      "id": "folio-projects",
      "treatment": "kit-audit",
      "command": "audit",
      "brief": "Audit how a client finds the Atlas proof awaiting review. Give the implementer a precise repair brief.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "c9816843a29c3adde4e469c9fd216220b15b2135961072ee95dcf2bc3980f149",
          "order": [
            "plain",
            "kit-audit"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 3,
            "states": null,
            "mobile": 3
          },
          "reason": "B gives the pending Atlas proof one prominent placement and a clear Review proof button; A duplicates it under All projects, adding scanning work. However, B drops Atlas Foundry from the proof details, weakens Date on record to Date shown, and pushes the mobile action near the viewport bottom. Preserve B’s single placement, restore those facts, and tighten mobile spacing so the action appears sooner.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "579256c97b6647ad62c25e9c08df44b5606d0906e987a82a81a79dc1c10284d5",
                "bytes": 73385,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f12df8d1e4115ca0e4579d1309c95e73914e21aa1e2b7c94b9de0cd5e2a30ca2",
                "bytes": 46598,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "c9816843a29c3adde4e469c9fd216220b15b2135961072ee95dcf2bc3980f149",
          "order": [
            "kit-audit",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 2,
            "type": 3,
            "spacing": 4,
            "color": 4,
            "copy": 3,
            "states": 4,
            "mobile": 3
          },
          "reason": "A makes the pending task explicit with “1 proof awaiting your review” and gives Atlas a prominent Review proof button; preserve that priority, but replace “Date shown” with a precise date label. B groups pending reviews clearly, but repeats Atlas under All projects and gives its mobile action less emphasis; consolidate the duplicate and strengthen Review proof.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "579256c97b6647ad62c25e9c08df44b5606d0906e987a82a81a79dc1c10284d5",
                "bytes": 73385,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f12df8d1e4115ca0e4579d1309c95e73914e21aa1e2b7c94b9de0cd5e2a30ca2",
                "bytes": 46598,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        5,
        5
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 5,
        "hierarchy": 6,
        "type": 5,
        "spacing": 4.5,
        "color": 4.5,
        "copy": 4,
        "states": 4,
        "mobile": 4
      }
    },
    {
      "id": "folio-project",
      "treatment": "kit-motion",
      "command": "motion",
      "brief": "Clarify which proof awaits approval and how its state changes when a client approves it, including a quiet path for reduced motion.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "f8bbed28d5b023b354e85fc002b0b250bc9e3e3ae39a730645bd2b549a4367e0",
          "order": [
            "plain",
            "kit-motion"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 6,
            "states": 4,
            "mobile": 6
          },
          "reason": "B groups Identity direction, Version 02, the approval action and its consequence - marking both proof and project Approved - in one panel. B also keeps that action prominent on mobile, although A shows the proof earlier for inspection; reduced-motion behavior is not visible in either.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "a12e6af21f52fdbe30a921baba458e14733f83c87d6fa2b2786fc2dfd8b95273",
                "bytes": 64630,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "602d3d0830d730fbd90c0489fcc8e1933794edcc6ce72bf091395637b85fb59b",
                "bytes": 46236,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "f8bbed28d5b023b354e85fc002b0b250bc9e3e3ae39a730645bd2b549a4367e0",
          "order": [
            "kit-motion",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 3,
            "type": 4,
            "spacing": 4,
            "color": 4,
            "copy": 3,
            "states": 4,
            "mobile": 2
          },
          "reason": "A keeps the version, approval button and explicit Approved outcome together and visible on mobile, though its proof preview falls below the action. B presents the proof and version more clearly, but its mobile approval control falls below the visible screen; neither shows a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "a12e6af21f52fdbe30a921baba458e14733f83c87d6fa2b2786fc2dfd8b95273",
                "bytes": 64630,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "602d3d0830d730fbd90c0489fcc8e1933794edcc6ce72bf091395637b85fb59b",
                "bytes": 46236,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        5
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 4,
        "hierarchy": 5.5,
        "type": 4.5,
        "spacing": 4.5,
        "color": 4,
        "copy": 5.5,
        "states": 4,
        "mobile": 6
      }
    },
    {
      "id": "folio-settings",
      "treatment": "kit-polish",
      "command": "polish",
      "brief": "Refine the contact and notification settings so a client can tell which details will change.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "b4306efe89ebbf5d20d53874b31b8f870da15f3ad2abbd042cb543b37663dfd8",
          "order": [
            "plain",
            "kit-polish"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 6,
            "states": 6,
            "mobile": 5
          },
          "reason": "B groups contact details, notifications and Save settings in one panel, with an explicit On label that makes the notification setting easier to interpret. A gives the sections clearer visual separation on mobile, but B’s Contact details heading and save guidance clarify what the form changes and when.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "de57de2752a8a77b42b8db08c9028688cb917097050865233ecb17a8932a77fa",
                "bytes": 64443,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9a0473b968cd6d5795df7475a69c986632bf2d520b4a07024844e56d9d4a7c80",
                "bytes": 47841,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "0c1184699555a996f53887e0fc6f50e7c3196a8b2708d0f11853e9d35de10856",
                "bytes": 68699,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "c93f89825c09fe57a37b825bae1a352b21059f675a68f105a425425e754648a8",
                "bytes": 50253,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "b4306efe89ebbf5d20d53874b31b8f870da15f3ad2abbd042cb543b37663dfd8",
          "order": [
            "kit-polish",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 3,
            "type": 4,
            "spacing": 5,
            "color": 3,
            "copy": 2,
            "states": 3,
            "mobile": 5
          },
          "reason": "A explicitly says changes apply when saved and labels notifications “On,” making the current state and save action clearer. B groups fields cleanly and fits the notification control more comfortably on mobile, but its generic “Your preferences” heading and less clearly disabled save button weaken task clarity.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "0c1184699555a996f53887e0fc6f50e7c3196a8b2708d0f11853e9d35de10856",
                "bytes": 68699,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "c93f89825c09fe57a37b825bae1a352b21059f675a68f105a425425e754648a8",
                "bytes": 50253,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "de57de2752a8a77b42b8db08c9028688cb917097050865233ecb17a8932a77fa",
                "bytes": 64443,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9a0473b968cd6d5795df7475a69c986632bf2d520b4a07024844e56d9d4a7c80",
                "bytes": 47841,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        5
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 5,
        "hierarchy": 5.5,
        "type": 4.5,
        "spacing": 4,
        "color": 4.5,
        "copy": 6,
        "states": 5.5,
        "mobile": 4
      }
    },
    {
      "id": "pour-home",
      "treatment": "kit-fix",
      "command": "fix",
      "brief": "Finish a working brew calculator for someone weighing coffee at the counter. Preserve the actual brew recipe.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "8d2f0579f2c30e9917ea1212f7944a9349aebff954a722fe980b36c985720e51",
          "order": [
            "plain",
            "kit-fix"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "598ed5f5e89ec35c7067e6d4316019571b8d560e94fa2928223b53f82fccd4bb",
                "bytes": 90334,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8eea83a03847b7425abb372333bba2463dc62fcb3d387a1a44bde3f58bbd631f",
                "bytes": 50684,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "f3887ade295d58cd716b446e05d57fbaf8dc14b226caab43a1b201402e63978d",
                "bytes": 89752,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8c2315c2dc338d5f3c0d8cfd1badfd3cb1e3d2572bfce4ee823ac811cf53f5d0",
                "bytes": 50916,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 6,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 6,
            "type": 6,
            "spacing": 6,
            "color": 5,
            "copy": 5,
            "states": null,
            "mobile": 6
          },
          "reason": "B brings the dose control, prominent 240 g total and pour targets higher on mobile, making the counter task easier to scan. A provides a visible Save recipe action on desktop, but its larger mobile introduction pushes more of the recipe below the screen."
        },
        {
          "fingerprint": "8d2f0579f2c30e9917ea1212f7944a9349aebff954a722fe980b36c985720e51",
          "order": [
            "kit-fix",
            "plain"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "f3887ade295d58cd716b446e05d57fbaf8dc14b226caab43a1b201402e63978d",
                "bytes": 89752,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8c2315c2dc338d5f3c0d8cfd1badfd3cb1e3d2572bfce4ee823ac811cf53f5d0",
                "bytes": 50916,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "598ed5f5e89ec35c7067e6d4316019571b8d560e94fa2928223b53f82fccd4bb",
                "bytes": 90334,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8eea83a03847b7425abb372333bba2463dc62fcb3d387a1a44bde3f58bbd631f",
                "bytes": 50684,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 2,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 2,
            "type": 4,
            "spacing": 3,
            "color": 4,
            "copy": 3,
            "states": null,
            "mobile": 2
          },
          "reason": "A puts the dose control and cumulative pour targets higher on mobile, making the recipe easier to consult at the counter. B gives the ratio and water total clearer separation, but its larger introduction and separate dose action push the working recipe farther down."
        }
      ],
      "scores": [
        6,
        6
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 6,
        "type": 5,
        "spacing": 5.5,
        "color": 4.5,
        "copy": 5,
        "states": null,
        "mobile": 6
      }
    },
    {
      "id": "pricing",
      "treatment": "kit-landing",
      "command": "landing",
      "brief": "Help the owner of a newsletter choose the correct print subscription for their next issue. Keep the real prices and cutoffs.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "08d50a0fa878f1fa16ff7d2034b8c923c44bf87427aff7bda9ec499dc8281214",
          "order": [
            "plain",
            "kit-landing"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B groups the mailing cutoff above each price and selection button, making the choice easier to scan while preserving $18 for up to 100 copies and $42 for up to 500. B also brings the Spine cutoff into view on mobile; A gives the Friday deadline stronger emphasis, but its taller Fold card delays comparison.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "7486029a0688111a71990a83ae0d9e75c4a1e634dfce15a7ebee4ad30e1cca36",
                "bytes": 65574,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8d661804aba831a92919550da816aaea71914b76d3559036e203b56d4005e959",
                "bytes": 46235,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "30985beac754662f8eedc41814de5064a358c73155f378c5f93c8a206e0f07e2",
                "bytes": 82384,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "44759f424a1f8c0e20b1808d0061d1955cafc2197aa969269bb634baf2e68224",
                "bytes": 47629,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "08d50a0fa878f1fa16ff7d2034b8c923c44bf87427aff7bda9ec499dc8281214",
          "order": [
            "kit-landing",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 3,
            "spacing": 2,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A puts the mailing cutoff directly above each price and action, and explicitly explains the 101–500 range and limit beyond 500. B gives the deadline more prominence, but its taller mobile cards push the second plan farther down and repeat capacity information.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "30985beac754662f8eedc41814de5064a358c73155f378c5f93c8a206e0f07e2",
                "bytes": 82384,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "44759f424a1f8c0e20b1808d0061d1955cafc2197aa969269bb634baf2e68224",
                "bytes": 47629,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "7486029a0688111a71990a83ae0d9e75c4a1e634dfce15a7ebee4ad30e1cca36",
                "bytes": 65574,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8d661804aba831a92919550da816aaea71914b76d3559036e203b56d4005e959",
                "bytes": 46235,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        6
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 6,
        "hierarchy": 6,
        "type": 5,
        "spacing": 6,
        "color": 4.5,
        "copy": 6,
        "states": null,
        "mobile": 6
      }
    },
    {
      "id": "onboarding",
      "treatment": "kit-fix",
      "command": "fix",
      "brief": "Finish first-run setup for a library volunteer labeling returned crates. Make the first decision easy to act on.",
      "outcome": "tie",
      "judgments": [
        {
          "fingerprint": "13b43f3b43ae213b84af9d2093a9e9182d62e84e8d24ab6cf857f7af5f5773a3",
          "order": [
            "plain",
            "kit-fix"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "40894f0ed926880341b331ead014e86602b5013243a9e14effac9f9fe34bef49",
                "bytes": 63801,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f722ea50963d6fb4adf3ecde307b69fc18a7707669e636f4ccdcb5b35c5c18da",
                "bytes": 51167,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "f0f27bf4795b60b1d53e18a8a9a197df8d3fcf181a601e9f2c8e96365bc44647",
                "bytes": 60210,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "98dd5583cd687d3d87d5ac2debdb3d75325b4b20c86538ae6ad6e16458da0696",
                "bytes": 47140,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 5,
            "type": 5,
            "spacing": 4,
            "color": 4,
            "copy": 5,
            "states": null,
            "mobile": 3
          },
          "reason": "B makes the room-to-crate mapping tangible with a prominent W-12 label preview and a direct task heading. A keeps that crate information above Continue setup on mobile, while B places its detailed preview below the action."
        },
        {
          "fingerprint": "13b43f3b43ae213b84af9d2093a9e9182d62e84e8d24ab6cf857f7af5f5773a3",
          "order": [
            "kit-fix",
            "plain"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "f0f27bf4795b60b1d53e18a8a9a197df8d3fcf181a601e9f2c8e96365bc44647",
                "bytes": 60210,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "98dd5583cd687d3d87d5ac2debdb3d75325b4b20c86538ae6ad6e16458da0696",
                "bytes": 47140,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "40894f0ed926880341b331ead014e86602b5013243a9e14effac9f9fe34bef49",
                "bytes": 63801,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f722ea50963d6fb4adf3ecde307b69fc18a7707669e636f4ccdcb5b35c5c18da",
                "bytes": 51167,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 5,
            "copy": 3,
            "states": null,
            "mobile": 6
          },
          "reason": "B groups the room selector, crate W-12 and Continue setup action together at both widths; A puts its detailed crate preview below the action on mobile, where it extends beyond the visible screen. A has a more direct task heading and a useful label-like crate preview, while B gives more space to a promotional headline."
        }
      ],
      "scores": [
        5,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 3.5,
        "type": 4,
        "spacing": 3,
        "color": 3.5,
        "copy": 5,
        "states": null,
        "mobile": 2.5
      }
    },
    {
      "id": "empty-inbox",
      "treatment": "kit-audit",
      "command": "audit",
      "brief": "Audit the empty inspection inbox. Explain what happened, what to do next, and which screen changes would help.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "2d4cc45da83b2739a43ebf02cd73369c99330c99a9ba20ecdf2c3d22ddbb7aa3",
          "order": [
            "plain",
            "kit-audit"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 5,
            "states": 5,
            "mobile": 5
          },
          "reason": "B groups the empty state with the kiln and shift details, gives Schedule inspection clear priority, and separates Completed into a supporting footer. A makes the shift context easier to scan above the card and offers a wider mobile button, but its adjacent scheduling and completed actions compete more strongly.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "0345325b437c70bdd24fe5395875715631f416cfa671e4040615fa33db2442c3",
                "bytes": 51159,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "66aff71e130526143ef401ff576f50d71d99ddbbd9238b49258f055536505b8f",
                "bytes": 42258,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "b56311c3b6721bcfa394e952fb602a20e6b18e502d73d613228759ded759b3d8",
                "bytes": 52515,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9db0082473b64264951388a2883bb95a453990eb95253b04f9ac48f3b1d763f0",
                "bytes": 41951,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "2d4cc45da83b2739a43ebf02cd73369c99330c99a9ba20ecdf2c3d22ddbb7aa3",
          "order": [
            "kit-audit",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 3,
            "type": 4,
            "spacing": 3,
            "color": 4,
            "copy": 3,
            "states": 4,
            "mobile": 3
          },
          "reason": "A groups the empty state, East kiln shift and Schedule inspection action together, with concise copy explaining the next step. B makes the shift context easier to scan above the card and gives the mobile action more width, but its repeated empty-state explanation and equally prominent completed-inspections link dilute the primary action.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "b56311c3b6721bcfa394e952fb602a20e6b18e502d73d613228759ded759b3d8",
                "bytes": 52515,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9db0082473b64264951388a2883bb95a453990eb95253b04f9ac48f3b1d763f0",
                "bytes": 41951,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "0345325b437c70bdd24fe5395875715631f416cfa671e4040615fa33db2442c3",
                "bytes": 51159,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "66aff71e130526143ef401ff576f50d71d99ddbbd9238b49258f055536505b8f",
                "bytes": 42258,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        5
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 5.5,
        "hierarchy": 5.5,
        "type": 4.5,
        "spacing": 5,
        "color": 4.5,
        "copy": 5,
        "states": 4.5,
        "mobile": 5
      }
    },
    {
      "id": "settings",
      "treatment": "kit-harden",
      "command": "harden",
      "brief": "Prepare the webhook preferences form for an operator who must recover after a failed save without losing their endpoint.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "f1ba7511595c1b699af630e518af283981bef35dfdb15cae2080781e53b78cbc",
          "order": [
            "plain",
            "kit-harden"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 5,
            "type": 4,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": 5,
            "mobile": 4
          },
          "reason": "B places the save error directly above the endpoint and pairs “Your input is retained” with the retry action, making recovery clearer. A shows the full endpoint on mobile, while B’s larger monospace field clips its ending and makes verification harder.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "fd7e69de3ba037cc094b78bc68b497dd0c762709c64f65b244877ae1208534d5",
                "bytes": 66081,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "7af975de7ff565458d1932565a05f28b84aede99adbd74eec7afde33cd4a5de7",
                "bytes": 52602,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "f1ba7511595c1b699af630e518af283981bef35dfdb15cae2080781e53b78cbc",
          "order": [
            "kit-harden",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 4,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": 2,
            "mobile": 2
          },
          "reason": "A puts the failed-save message directly above the retained endpoint and pairs “Your input is retained” with “Try saving again,” making recovery clear. B shows the full endpoint on mobile, but its extra “Dispatch settings” header pushes the error and retry action farther down.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "fd7e69de3ba037cc094b78bc68b497dd0c762709c64f65b244877ae1208534d5",
                "bytes": 66081,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "7af975de7ff565458d1932565a05f28b84aede99adbd74eec7afde33cd4a5de7",
                "bytes": 52602,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        5,
        6
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 5.5,
        "hierarchy": 5.5,
        "type": 4,
        "spacing": 5,
        "color": 4,
        "copy": 5,
        "states": 5.5,
        "mobile": 5
      }
    },
    {
      "id": "auth",
      "treatment": "kit-ship",
      "command": "ship",
      "brief": "Review this access-request screen for release and address visual issues that obscure who can issue an invitation.",
      "outcome": "tie",
      "judgments": [
        {
          "fingerprint": "77bbeec3142fc49081bf63fb86cc9fb8023b5a9ed50900ffa3963dd5f1095b8d",
          "order": [
            "plain",
            "kit-ship"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 3,
            "spacing": 2,
            "color": 4,
            "copy": 5,
            "states": 3,
            "mobile": 2
          },
          "reason": "A places the expired invitation and the project producer’s authority together at the top, making responsibility clear at both widths; B separates that fact from the status with the email field. B’s “Prepare invitation request” more accurately describes the action, but its repeated explanations and “Welcome back” weaken focus and lengthen the mobile screen.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c265feba36b11d401912e84c001519e1f3f9a7bd750adbb411fcf6a5b0eb381e",
                "bytes": 41605,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0c3df27c9379d3024acc578d59d23cdf63382fbca0206a4739bb94b1b9ff95e4",
                "bytes": 35145,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "b20766671ab7042f7347385e10088bc29f868d9e981b572e5491b43f58970e2d",
                "bytes": 49984,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "027fdaaae1ad0303482909a70dfa32e0f30531eae508e2ceb2e6e477740cd3f9",
                "bytes": 42844,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "77bbeec3142fc49081bf63fb86cc9fb8023b5a9ed50900ffa3963dd5f1095b8d",
          "order": [
            "kit-ship",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 3,
            "type": 4,
            "spacing": 5,
            "color": 3,
            "copy": 2,
            "states": 2,
            "mobile": 3
          },
          "reason": "A highlights that the project producer can reissue the invitation and labels the action “Prepare invitation request,” clearly matching the fact that nothing is sent automatically. B places the producer explanation earlier and offers a more compact layout, but “Request a new invitation” conflicts with its preparation-only helper text.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "b20766671ab7042f7347385e10088bc29f868d9e981b572e5491b43f58970e2d",
                "bytes": 49984,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "027fdaaae1ad0303482909a70dfa32e0f30531eae508e2ceb2e6e477740cd3f9",
                "bytes": 42844,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c265feba36b11d401912e84c001519e1f3f9a7bd750adbb411fcf6a5b0eb381e",
                "bytes": 41605,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0c3df27c9379d3024acc578d59d23cdf63382fbca0206a4739bb94b1b9ff95e4",
                "bytes": 35145,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        6
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 3.5,
        "type": 3.5,
        "spacing": 2.5,
        "color": 4.5,
        "copy": 5.5,
        "states": 4.5,
        "mobile": 3.5
      }
    },
    {
      "id": "data-table",
      "treatment": "kit-fix",
      "command": "fix",
      "brief": "Finish a dispatch manifest for a dock worker locating the next outbound crate. Preserve every shipment and its destination.",
      "outcome": "loss",
      "judgments": [
        {
          "fingerprint": "411e57f8c772b8d31d014d925c2fde7458d931230f12b82f71d865ab82ff736c",
          "order": [
            "plain",
            "kit-fix"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "669d5ebac96b0f8acfc034207e423f978bf9f2aacc8cb24e51758c22c1212792",
                "bytes": 62894,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f545222f7f42c9b8d83229cfa426be81a30b873db6105993e9f9c1343c1602fe",
                "bytes": 45525,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "f34b3ee3bf7ae1d79d9a1fd0fb60fde16ee0e231a8e0e93a3083f215377c23d6",
                "bytes": 57429,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "6ae44d48978994cdb8a97b2215858f18029d94e67fa95178f5a24399ffd118f8",
                "bytes": 40724,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 2,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 2,
            "type": 3,
            "spacing": 2,
            "color": 3,
            "copy": 3,
            "states": null,
            "mobile": 2
          },
          "reason": "A makes the next crate, Dock B and departure time prominent while keeping all three shipments visible on mobile. B integrates the next departure clearly into its manifest with a distinctive lime highlight, but its tall mobile entries push the third shipment below the visible area and make scanning destinations slower."
        },
        {
          "fingerprint": "411e57f8c772b8d31d014d925c2fde7458d931230f12b82f71d865ab82ff736c",
          "order": [
            "kit-fix",
            "plain"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "f34b3ee3bf7ae1d79d9a1fd0fb60fde16ee0e231a8e0e93a3083f215377c23d6",
                "bytes": 57429,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "6ae44d48978994cdb8a97b2215858f18029d94e67fa95178f5a24399ffd118f8",
                "bytes": 40724,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "669d5ebac96b0f8acfc034207e423f978bf9f2aacc8cb24e51758c22c1212792",
                "bytes": 62894,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f545222f7f42c9b8d83229cfa426be81a30b873db6105993e9f9c1343c1602fe",
                "bytes": 45525,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 6,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 6,
            "type": 6,
            "spacing": 6,
            "color": 5,
            "copy": 4,
            "states": null,
            "mobile": 7
          },
          "reason": "B makes the next crate, Dock B and 09:40 immediately readable in a dedicated departure panel, while retaining all three shipments in a compact mobile table. A’s highlighted manifest row avoids duplicating shipment details and feels operationally specific, but its tall mobile entries push the remaining shipments below the visible screen."
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 5,
        "hierarchy": 2,
        "type": 2.5,
        "spacing": 2,
        "color": 3,
        "copy": 3.5,
        "states": null,
        "mobile": 1.5
      }
    },
    {
      "id": "mobile-feed",
      "treatment": "kit-motion",
      "command": "motion",
      "brief": "Improve reading and save feedback in a mobile typographic specimen feed. Keep the reading position stable.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "4d26b90c7509142b5061c91870c88409cb299538bda2f654a88b9e6cf8d62da8",
          "order": [
            "plain",
            "kit-motion"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 5,
            "states": 6,
            "mobile": 6
          },
          "reason": "B places the specimen name, description, Save specimen control and explicit Not saved status together before the preview, making reading and save feedback easier to scan on mobile. A gives the letterforms more visual prominence and keeps the save label on one line, but its taller cards push the action and subsequent specimens farther down.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c76009a6d7e2a7300ccfefbabe7cef3f7cbfcdfb18642ca5f8fe0bc65e1f42ae",
                "bytes": 58868,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "99c44e42154c68c0f2b52aa38f56aa61710be638f199e8a26c5b86519e32b51e",
                "bytes": 45715,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "4d26b90c7509142b5061c91870c88409cb299538bda2f654a88b9e6cf8d62da8",
          "order": [
            "kit-motion",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 3,
            "type": 5,
            "spacing": 4,
            "color": 4,
            "copy": 3,
            "states": 2,
            "mobile": 3
          },
          "reason": "A places Save specimen beside visible Not saved feedback and exposes the second specimen sooner on mobile. B groups each specimen into a polished preview-and-details card, but its taller mobile layout delays browsing and shows no explicit save status; reading-position stability cannot be assessed from stills.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c76009a6d7e2a7300ccfefbabe7cef3f7cbfcdfb18642ca5f8fe0bc65e1f42ae",
                "bytes": 58868,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "99c44e42154c68c0f2b52aa38f56aa61710be638f199e8a26c5b86519e32b51e",
                "bytes": 45715,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        5
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 5.5,
        "type": 4,
        "spacing": 4.5,
        "color": 4.5,
        "copy": 5,
        "states": 6,
        "mobile": 5.5
      }
    },
    {
      "id": "system-billing",
      "treatment": "kit-design-system",
      "command": "design-system",
      "brief": "Derive a design system for monthly studio billing. Use its components, amounts and labels as the starting material.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "14ef295e39efdd265c117131e1ec687973094359fa9c1fb73baecc71a199755b",
          "order": [
            "plain",
            "kit-design-system"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "7fb28246eeb74e2ebec255f39349ff96d105d04bf6d811e49857875b32486cfd",
                "bytes": 72117,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "00f3725086e77fa02e0fb2d1824758a5bf51b25d3bf233d166fe34e33ff4a34d",
                "bytes": 47745,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "29b497f26a04a337115573394aeb40929ed18e99b88f27e235800c41d30f9311",
                "bytes": 74737,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0afdd5b0cfcffad7c0915d9b4279e13ed67863c4071a2738de6439757d656f98",
                "bytes": 54962,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 5,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 5,
            "type": 5,
            "spacing": 4,
            "color": 4,
            "copy": 5,
            "states": 4,
            "mobile": 5
          },
          "reason": "B groups the billing totals into one summary with a clear primary amount, though A’s separate cards give paid and awaiting payment more equal prominence. B also preserves issue dates within mobile invoice details, while A’s more compact rows omit them."
        },
        {
          "fingerprint": "14ef295e39efdd265c117131e1ec687973094359fa9c1fb73baecc71a199755b",
          "order": [
            "kit-design-system",
            "plain"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "29b497f26a04a337115573394aeb40929ed18e99b88f27e235800c41d30f9311",
                "bytes": 74737,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0afdd5b0cfcffad7c0915d9b4279e13ed67863c4071a2738de6439757d656f98",
                "bytes": 54962,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "7fb28246eeb74e2ebec255f39349ff96d105d04bf6d811e49857875b32486cfd",
                "bytes": 72117,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "00f3725086e77fa02e0fb2d1824758a5bf51b25d3bf233d166fe34e33ff4a34d",
                "bytes": 47745,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 3,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 3,
            "type": 3,
            "spacing": 3,
            "color": 5,
            "copy": 2,
            "states": 4,
            "mobile": 2
          },
          "reason": "A keeps issued dates visible within mobile invoice rows and groups billing totals compactly, preserving useful facts and scan space. B gives payment statuses clearer colored badges and a distinctive total card, but its stacked mobile summaries push activity farther down and omit issued dates."
        }
      ],
      "scores": [
        5,
        5
      ],
      "sourceGroup": "design-system",
      "dimensions": {
        "genericSignals": 3,
        "hierarchy": 5,
        "type": 5,
        "spacing": 4.5,
        "color": 3.5,
        "copy": 5.5,
        "states": 4,
        "mobile": 5.5
      }
    },
    {
      "id": "system-pricing",
      "treatment": "kit-design-system",
      "command": "design-system",
      "brief": "Derive a design system for a print subscription pricing page. Reuse its plans and quantity limits.",
      "outcome": "tie",
      "judgments": [
        {
          "fingerprint": "a8feac2453d831447fb331ae7485020830647de37c2a8bb7dc8dcd42c1239f08",
          "order": [
            "plain",
            "kit-design-system"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "5ada53ccabb2ba614f86f02dd83b294d9a3f48b87aca41bd6a06f3f4e882d6e8",
                "bytes": 61260,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "645a99db08594fa3cd6edc524c50e7fa454aa49b485447ea7cf359b6e3b59e0b",
                "bytes": 39478,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "7d45083a9553c0d7b9c3b8abd1c3c0b8b893e212acf497399a5bd61e2fcc3a40",
                "bytes": 45639,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "ceb3bb4b39ca630526467f29ee24044c68802cd0548231984a32436a748fef95",
                "bytes": 38421,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 6,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 4,
            "copy": 3,
            "states": null,
            "mobile": 6
          },
          "reason": "B’s compact mobile layout keeps both plans, quantity limits and selection buttons visible; A’s oversized cards push Spine’s price and action below the frame. A’s quantity-based introduction and restrained yellow accent feel more specific, while B’s consistent purple buttons give both plans equally clear actions."
        },
        {
          "fingerprint": "a8feac2453d831447fb331ae7485020830647de37c2a8bb7dc8dcd42c1239f08",
          "order": [
            "kit-design-system",
            "plain"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "7d45083a9553c0d7b9c3b8abd1c3c0b8b893e212acf497399a5bd61e2fcc3a40",
                "bytes": 45639,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "ceb3bb4b39ca630526467f29ee24044c68802cd0548231984a32436a748fef95",
                "bytes": 38421,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "5ada53ccabb2ba614f86f02dd83b294d9a3f48b87aca41bd6a06f3f4e882d6e8",
                "bytes": 61260,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "645a99db08594fa3cd6edc524c50e7fa454aa49b485447ea7cf359b6e3b59e0b",
                "bytes": 39478,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 5,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 4,
            "type": 5,
            "spacing": 4,
            "color": 5,
            "copy": 5,
            "states": null,
            "mobile": 2
          },
          "reason": "B’s bold masthead, serif pricing and bordered plan panels give the print subscription page a more specific editorial identity while retaining the prices and quantity limits. A’s compact mobile layout exposes both plans and their choose buttons, whereas B’s larger panels push the second plan’s price and action below the visible area."
        }
      ],
      "scores": [
        6,
        3
      ],
      "sourceGroup": "design-system",
      "dimensions": {
        "genericSignals": 2.5,
        "hierarchy": 5,
        "type": 4,
        "spacing": 5,
        "color": 3.5,
        "copy": 3,
        "states": null,
        "mobile": 6
      }
    },
    {
      "id": "system-projects",
      "treatment": "kit-design-system",
      "command": "design-system",
      "brief": "Derive a design system for a studio client proof index. Preserve projects, work status and the primary decision.",
      "outcome": "win",
      "judgments": [
        {
          "fingerprint": "98752d6e1c0942d2b0826d0bdd1a6b9514c7e6887a87f3bb12c904b187a52258",
          "order": [
            "plain",
            "kit-design-system"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "b777efe65f823b82f6b4af4b3b9a7b562bbc88239e38419bea63f235ac6a0238",
                "bytes": 75854,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e806bf2954c3e468a5881bb722b5faecaea017e9d965c1cd2aa4393dbf4e23ec",
                "bytes": 34353,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "726e875c4283d4dfc776be0f13bf90feb234c59090f51a857276c7e0be080d6c",
                "bytes": 69554,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "d9371c6481d231910b23c8c44e5115fdca7be26913d33fcf62e7f164b59b752f",
                "bytes": 42352,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 4,
            "copy": 5,
            "states": null,
            "mobile": 7
          },
          "reason": "B keeps project titles, statuses, dates and review actions visible together, and its compact mobile rows preserve that context. A gives the primary review decision stronger emphasis with its dedicated banner, but its oversized mobile layout pushes the project index and supporting facts below the visible screen."
        },
        {
          "fingerprint": "98752d6e1c0942d2b0826d0bdd1a6b9514c7e6887a87f3bb12c904b187a52258",
          "order": [
            "kit-design-system",
            "plain"
          ],
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "images": {
            "A": {
              "desktop": {
                "sha256": "726e875c4283d4dfc776be0f13bf90feb234c59090f51a857276c7e0be080d6c",
                "bytes": 69554,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "d9371c6481d231910b23c8c44e5115fdca7be26913d33fcf62e7f164b59b752f",
                "bytes": 42352,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "b777efe65f823b82f6b4af4b3b9a7b562bbc88239e38419bea63f235ac6a0238",
                "bytes": 75854,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e806bf2954c3e468a5881bb722b5faecaea017e9d965c1cd2aa4393dbf4e23ec",
                "bytes": 34353,
                "width": 390,
                "height": 844
              }
            }
          },
          "imageReceipt": "at-judgment",
          "preference": 2,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 3,
            "type": 4,
            "spacing": 3,
            "color": 5,
            "copy": 3,
            "states": 3,
            "mobile": 2
          },
          "reason": "A keeps project names, statuses, dates and review actions visible together on desktop and mobile, supporting proof tracking and the next decision. B gives the review action stronger prominence and uses a distinctive palette, but its large mobile header and review panel push the project list and supporting facts below the visible area."
        }
      ],
      "scores": [
        6,
        6
      ],
      "sourceGroup": "design-system",
      "dimensions": {
        "genericSignals": 4.5,
        "hierarchy": 5.5,
        "type": 4.5,
        "spacing": 5.5,
        "color": 3.5,
        "copy": 5,
        "states": 5,
        "mobile": 6.5
      }
    }
  ],
  "skills": [
    {
      "id": "folio-project",
      "treatment": "vendor-animate",
      "command": "motion",
      "name": "animate",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Clarify which proof awaits approval and how its state changes when a client approves it, including a quiet path for reduced motion.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "91ac7bbe476ce0c1eec18d0dc5b61f0253882b8372171f28da2940f97a21cabc",
          "order": [
            "plain",
            "vendor-animate"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 2,
            "type": 3,
            "spacing": 4,
            "color": 4,
            "copy": 2,
            "states": 3,
            "mobile": 3
          },
          "reason": "A explicitly connects “Approve direction” to Identity direction, version 02 and the Review-to-Approved change, making the pending decision clearer. B gives the proof more space and a cleaner mobile presentation, but its “Over to you” approval panel is less direct; neither shows an approved result or a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "8ab24cc82caebde88c4b11d5854c0e5c3c27786ab24fb6a0734ffb80f7016178",
                "bytes": 74861,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "203d164c19b56ea1bdd8a113bf3bb8358e0376ae503035966fa36dfff226995e",
                "bytes": 40846,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "91ac7bbe476ce0c1eec18d0dc5b61f0253882b8372171f28da2940f97a21cabc",
          "order": [
            "vendor-animate",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 6,
            "spacing": 6,
            "color": 4,
            "copy": 6,
            "states": 5,
            "mobile": 5
          },
          "reason": "B ties approval explicitly to Identity direction, version 02 and states that approval changes Review to Approved. B also groups project details and approval clearly on desktop, though its taller mobile proof card pushes approval farther down than A. Neither shows an approved result or a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "8ab24cc82caebde88c4b11d5854c0e5c3c27786ab24fb6a0734ffb80f7016178",
                "bytes": 74861,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "203d164c19b56ea1bdd8a113bf3bb8358e0376ae503035966fa36dfff226995e",
                "bytes": 40846,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 4,
        "hierarchy": 2,
        "type": 2.5,
        "spacing": 3,
        "color": 4,
        "copy": 2,
        "states": 3,
        "mobile": 3
      }
    },
    {
      "id": "mobile-feed",
      "treatment": "vendor-animate-expo",
      "command": "motion",
      "name": "animate-expo",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Improve reading and save feedback in a mobile typographic specimen feed. Keep the reading position stable.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "a4719f4c622b01ee22a52716783c7b74782a37fc5acf938abf869ec07702ca6e",
          "order": [
            "plain",
            "vendor-animate-expo"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A keeps the specimen name, descriptive detail and Save specimen control visible together on mobile. B offers a richer alphabet preview, but it pushes the specimen details and save action below the visible area; neither shows save feedback or provides evidence of reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "2c23efd2bf68ac823a500a0e33640ffdf48f0d96ff4dd05357eecdf69195e7e0",
                "bytes": 91761,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "26bfff12fbcbf55b618a9f272f2950cdc68fa4344f12e68592f5d50ee2e4cb03",
                "bytes": 50988,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "a4719f4c622b01ee22a52716783c7b74782a37fc5acf938abf869ec07702ca6e",
          "order": [
            "vendor-animate-expo",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 4,
            "copy": 5,
            "states": null,
            "mobile": 6
          },
          "reason": "B places a clearly labeled Save specimen control alongside the specimen description and keeps it visible on mobile. A exposes fuller alphabet samples for reading, but its oversized specimen panel pushes details and actions below the visible mobile area; neither shows save feedback or reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "2c23efd2bf68ac823a500a0e33640ffdf48f0d96ff4dd05357eecdf69195e7e0",
                "bytes": 91761,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "26bfff12fbcbf55b618a9f272f2950cdc68fa4344f12e68592f5d50ee2e4cb03",
                "bytes": 50988,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 2,
        "type": 3,
        "spacing": 2.5,
        "color": 4,
        "copy": 2.5,
        "states": null,
        "mobile": 2
      }
    },
    {
      "id": "mobile-feed",
      "treatment": "vendor-animation-performance",
      "command": "motion",
      "name": "animation-performance",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Improve reading and save feedback in a mobile typographic specimen feed. Keep the reading position stable.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "0e5b31c0ec5f3ef480c56cb3e10f9a8373f25246c3439eb7bd8125bb109f29e9",
          "order": [
            "plain",
            "vendor-animation-performance"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 3,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 3,
            "states": null,
            "mobile": 3
          },
          "reason": "A keeps the mobile header compact and reaches the first specimen sooner; B’s wrapped brand and taller introduction push reading content lower. A separates the serif classification from the specimen name, while B adds a useful character preview; neither shows save feedback or evidence of reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "a45f517578c94754a72d4103f18b2920b0b379b45d3ab33182a0326824c0a789",
                "bytes": 80154,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "a11d70856d87d0b11289aceb5ed9a34e5c6b20108283cf04d0b6b5db185a9c36",
                "bytes": 47767,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "0e5b31c0ec5f3ef480c56cb3e10f9a8373f25246c3439eb7bd8125bb109f29e9",
          "order": [
            "vendor-animation-performance",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": null,
            "mobile": 5
          },
          "reason": "B gives Ledger Serif a clearer title, readable description and prominent full-width save action on mobile. A fits more specimens on desktop and preserves the character-and-number sample missing from B; neither shows save feedback or establishes reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "a45f517578c94754a72d4103f18b2920b0b379b45d3ab33182a0326824c0a789",
                "bytes": 80154,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "a11d70856d87d0b11289aceb5ed9a34e5c6b20108283cf04d0b6b5db185a9c36",
                "bytes": 47767,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        3,
        3
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 3,
        "type": 3,
        "spacing": 3,
        "color": 4,
        "copy": 3.5,
        "states": null,
        "mobile": 3
      }
    },
    {
      "id": "folio-project",
      "treatment": "vendor-animation-vocabulary",
      "command": "motion",
      "name": "animation-vocabulary",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Clarify which proof awaits approval and how its state changes when a client approves it, including a quiet path for reduced motion.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "0914e84a4f7b3b1941a5ec90a48f346fdd956d9019c1da43127c910e6f0edaeb",
          "order": [
            "plain",
            "vendor-animation-vocabulary"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 2,
            "type": 4,
            "spacing": 2,
            "color": 4,
            "copy": 2,
            "states": 3,
            "mobile": 1
          },
          "reason": "A explicitly identifies version 02 in the approval copy and explains the change from Review to Approved beside the action; B groups proof and approval more tightly on desktop. A preserves readable proof labels and project details on mobile, while B visibly clips version, status and client text. Neither shows an approved outcome or a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "489f9407b2c3ca33b708aee7a14f55b700c09770925e676f80803baec90696b9",
                "bytes": 80811,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "de40450d407daefdfc1caa3ba06d97223e1ed36ec94a7a43370ef27aee10c932",
                "bytes": 38317,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "0914e84a4f7b3b1941a5ec90a48f346fdd956d9019c1da43127c910e6f0edaeb",
          "order": [
            "vendor-animation-vocabulary",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 4,
            "copy": 6,
            "states": 5,
            "mobile": 7
          },
          "reason": "B ties approval to Identity direction, version 02 and explicitly explains the Review-to-Approved change beside the action. B also preserves readable proof labels on mobile where A clips content, though B pushes approval below the visible mobile area; neither shows a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "489f9407b2c3ca33b708aee7a14f55b700c09770925e676f80803baec90696b9",
                "bytes": 80811,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "de40450d407daefdfc1caa3ba06d97223e1ed36ec94a7a43370ef27aee10c932",
                "bytes": 38317,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 4,
        "hierarchy": 2,
        "type": 3.5,
        "spacing": 2,
        "color": 4,
        "copy": 2,
        "states": 3,
        "mobile": 1
      }
    },
    {
      "id": "mobile-feed",
      "treatment": "vendor-apple-design",
      "command": "motion",
      "name": "apple-design",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Improve reading and save feedback in a mobile typographic specimen feed. Keep the reading position stable.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "15dcac2e22691b452f053ae7fdf2c7cb44e6e77e641ce06f69a69941645eb772",
          "order": [
            "plain",
            "vendor-apple-design"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 3,
            "type": 4,
            "spacing": 4,
            "color": 4,
            "copy": 4,
            "states": null,
            "mobile": 3
          },
          "reason": "A keeps the full Save specimen control visible on mobile immediately after the description; B places it lower, partially outside the frame. B adds a useful alphabet sample for evaluating letterforms, but its taller specimen panel delays the supporting facts and action. Neither shows save feedback or evidence of reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "667bc362448be08098ca1413b9160d8a8203bafab39a183e739f60d11c88670a",
                "bytes": 71528,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "26a54285a9ed16c7b799f8db10e9a1d99bd47cb217f15b7d74c3ace61af033ca",
                "bytes": 44442,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "15dcac2e22691b452f053ae7fdf2c7cb44e6e77e641ce06f69a69941645eb772",
          "order": [
            "vendor-apple-design",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": null,
            "mobile": 5
          },
          "reason": "B gives the mobile save action a fully visible, full-width button directly beneath the specimen description. A provides a useful alphabet preview that B omits, but B’s clearer separation of specimen and details makes reading easier; save feedback and reading-position stability cannot be judged from these stills.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "667bc362448be08098ca1413b9160d8a8203bafab39a183e739f60d11c88670a",
                "bytes": 71528,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "26a54285a9ed16c7b799f8db10e9a1d99bd47cb217f15b7d74c3ace61af033ca",
                "bytes": 44442,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        3,
        3
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3,
        "hierarchy": 3,
        "type": 3.5,
        "spacing": 3.5,
        "color": 4,
        "copy": 4,
        "states": null,
        "mobile": 3
      }
    },
    {
      "id": "tally-settings",
      "treatment": "vendor-apple-design-hig",
      "command": "harden",
      "name": "apple-design-hig",
      "author": "Dick Wu",
      "repo": "dickwu/apple-design-skill",
      "revision": "ff4ebddf0488598723a82bfdce1afb04de0b1c44",
      "brief": "Make the billing contact settings ready for a studio owner to edit and recover from a failed save on a phone.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "402763fb7ec2c9d51898be3d958853498d849aed6b594dda56554c209201753e",
          "order": [
            "plain",
            "vendor-apple-design-hig"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 2,
            "type": 4,
            "spacing": 5,
            "color": 4,
            "copy": 2,
            "states": 2,
            "mobile": 2
          },
          "reason": "A places the failed-save alert above the editable fields on mobile and visibly offers a retry action on desktop; B places the alert below the form, beyond the visible mobile area. B has roomier field grouping, but A’s billing-contact email guidance and connection-recovery copy better support the task.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "8f8042d6467e600f7dcfa4f2613ad8888cf81a9cbb755650d135045d266fa11f",
                "bytes": 67592,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "10637d57786b68ad445599ff12b59121abd2793a7fd867a8b4860eb0f375e2d9",
                "bytes": 51303,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "88c0db9292aeb61e248544ca00cd4f59764dc56eb90550d1e9df7d8b264952a6",
                "bytes": 70416,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "66ac897f08a90031d224d024b543f9aef37fa644bb3735cf42a17c5fced849b6",
                "bytes": 50529,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "402763fb7ec2c9d51898be3d958853498d849aed6b594dda56554c209201753e",
          "order": [
            "vendor-apple-design-hig",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 4,
            "spacing": 5,
            "color": 4,
            "copy": 6,
            "states": 6,
            "mobile": 6
          },
          "reason": "B names the form “Billing contact” and places the failed-save alert before the fields, making the task and recovery context visible on mobile; A labels the form “General” and pushes the error below it. A fits more editable content on the phone, but B provides a visible desktop retry action and explicitly reassures that edits remain.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "88c0db9292aeb61e248544ca00cd4f59764dc56eb90550d1e9df7d8b264952a6",
                "bytes": 70416,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "66ac897f08a90031d224d024b543f9aef37fa644bb3735cf42a17c5fced849b6",
                "bytes": 50529,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "8f8042d6467e600f7dcfa4f2613ad8888cf81a9cbb755650d135045d266fa11f",
                "bytes": 67592,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "10637d57786b68ad445599ff12b59121abd2793a7fd867a8b4860eb0f375e2d9",
                "bytes": 51303,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 2.5,
        "hierarchy": 2,
        "type": 4,
        "spacing": 4,
        "color": 4,
        "copy": 2,
        "states": 2,
        "mobile": 2
      }
    },
    {
      "id": "settings",
      "treatment": "vendor-ask-sonner",
      "command": "harden",
      "name": "ask-sonner",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Prepare the webhook preferences form for an operator who must recover after a failed save without losing their endpoint.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "2e813bce44e6f9eb1c7b3fc75961577210167fcd248a7c573f04c13013347bb4",
          "order": [
            "plain",
            "vendor-ask-sonner"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 3,
            "states": 2,
            "mobile": 2
          },
          "reason": "A keeps the retained endpoint, failed-save explanation and full-width Retry save button visible on mobile; B’s recovery button falls below the visible area. B has more distinctive navigation and refined section grouping, but A gives the recovery task a clearer, more compact path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c52e88082673bad4bfc33b9ce22769331ca5179de37f9893608f8b6f0209d7a2",
                "bytes": 73243,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "c84de5877c22437fd9747ddc0043a1cce5f60795435027c82ab7bc549ac1104d",
                "bytes": 59226,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "2e813bce44e6f9eb1c7b3fc75961577210167fcd248a7c573f04c13013347bb4",
          "order": [
            "vendor-ask-sonner",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": 5,
            "mobile": 7
          },
          "reason": "B keeps the preserved endpoint, failed-save explanation and full Retry save button visible on mobile; A’s recovery button falls below the shown viewport. A has a more distinctive workspace navigation and delivery icon, but B gives the recovery task a clearer, more compact layout.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c52e88082673bad4bfc33b9ce22769331ca5179de37f9893608f8b6f0209d7a2",
                "bytes": 73243,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "c84de5877c22437fd9747ddc0043a1cce5f60795435027c82ab7bc549ac1104d",
                "bytes": 59226,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 5,
        "hierarchy": 2,
        "type": 3,
        "spacing": 3,
        "color": 4,
        "copy": 3.5,
        "states": 2.5,
        "mobile": 1.5
      }
    },
    {
      "id": "auth",
      "treatment": "vendor-better-accessibility",
      "command": "ship",
      "name": "better-accessibility",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Review this access-request screen for release and address visual issues that obscure who can issue an invitation.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "14ae36229c2f6f26258c7c44ba00e857516f49785654d78677abc7d982faa757",
          "order": [
            "plain",
            "vendor-better-accessibility"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": 2,
            "mobile": 2
          },
          "reason": "A places who can issue an invitation directly beneath the expired-invitation heading, keeping that fact prominent at both widths; B puts it below the email field. A also explains that the request is prepared for sharing and is not sent, clarifying the button’s role, while B’s tinted notice makes the recovery guidance more visually distinct.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c265feba36b11d401912e84c001519e1f3f9a7bd750adbb411fcf6a5b0eb381e",
                "bytes": 41605,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0c3df27c9379d3024acc578d59d23cdf63382fbca0206a4739bb94b1b9ff95e4",
                "bytes": 35145,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "eb150814f3c1acc2138dc25cb4a728cadd03f497869fcb6f7ebead72fcaabba5",
                "bytes": 38144,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "4e328a8a025460639c6503d5e20f7b36f7ccb2ceb67b269b8f84858ccbe9a1cf",
                "bytes": 31298,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "14ae36229c2f6f26258c7c44ba00e857516f49785654d78677abc7d982faa757",
          "order": [
            "vendor-better-accessibility",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 5,
            "states": 5,
            "mobile": 6
          },
          "reason": "B places the project producer’s authority directly beneath the expired-invitation heading, making who can issue a replacement clearer at both widths. A preserves the useful expiry detail “yesterday” in its callout, but B removes the distracting “Welcome back” and clarifies that the request is prepared rather than sent.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "eb150814f3c1acc2138dc25cb4a728cadd03f497869fcb6f7ebead72fcaabba5",
                "bytes": 38144,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "4e328a8a025460639c6503d5e20f7b36f7ccb2ceb67b269b8f84858ccbe9a1cf",
                "bytes": 31298,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c265feba36b11d401912e84c001519e1f3f9a7bd750adbb411fcf6a5b0eb381e",
                "bytes": 41605,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0c3df27c9379d3024acc578d59d23cdf63382fbca0206a4739bb94b1b9ff95e4",
                "bytes": 35145,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 2.5,
        "hierarchy": 2,
        "type": 3,
        "spacing": 3,
        "color": 4,
        "copy": 2.5,
        "states": 2.5,
        "mobile": 2
      }
    },
    {
      "id": "pricing",
      "treatment": "vendor-better-colors",
      "command": "landing",
      "name": "better-colors",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Help the owner of a newsletter choose the correct print subscription for their next issue. Keep the real prices and cutoffs.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "a167aa935951b166f64c7abe01e56e3af5d371c1ed8d39966735f582da5bc9a1",
          "order": [
            "plain",
            "vendor-better-colors"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 3,
            "copy": 2,
            "states": 5,
            "mobile": 2
          },
          "reason": "A pairs the $18/100-copy and $42/500-copy plans with explicit selection guidance and prominent Choose actions, making the cutoff decision clear. B adds a useful count-entry control, but its extra panel pushes the first plan’s action below the mobile viewport; A also gives a concrete ordering deadline.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "7486029a0688111a71990a83ae0d9e75c4a1e634dfce15a7ebee4ad30e1cca36",
                "bytes": 65574,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8d661804aba831a92919550da816aaea71914b76d3559036e203b56d4005e959",
                "bytes": 46235,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "6a4f7000cb6bd4958598193396caf9a9b48524570d572b186489606a52f8ad84",
                "bytes": 76935,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "7dc66fde249c108b10170ac01aad554d320582ec24effe98cb9440382f53f4c5",
                "bytes": 48828,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "a167aa935951b166f64c7abe01e56e3af5d371c1ed8d39966735f582da5bc9a1",
          "order": [
            "vendor-better-colors",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 5,
            "type": 6,
            "spacing": 5,
            "color": 6,
            "copy": 4,
            "states": null,
            "mobile": 5
          },
          "reason": "B makes the $18/100-copy and $42/500-copy choices easy to scan, with prominent selection buttons and explicit guidance for 101–500 copies. A offers a useful copy-count input that B lacks, but B’s clearer typography and tighter mobile cards make choosing a plan feel more direct.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "6a4f7000cb6bd4958598193396caf9a9b48524570d572b186489606a52f8ad84",
                "bytes": 76935,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "7dc66fde249c108b10170ac01aad554d320582ec24effe98cb9440382f53f4c5",
                "bytes": 48828,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "7486029a0688111a71990a83ae0d9e75c4a1e634dfce15a7ebee4ad30e1cca36",
                "bytes": 65574,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8d661804aba831a92919550da816aaea71914b76d3559036e203b56d4005e959",
                "bytes": 46235,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        3
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 2,
        "hierarchy": 2.5,
        "type": 2.5,
        "spacing": 3,
        "color": 2.5,
        "copy": 3,
        "states": 5,
        "mobile": 2.5
      }
    },
    {
      "id": "folio-projects",
      "treatment": "vendor-better-interface",
      "command": "audit",
      "name": "better-interface",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Audit how a client finds the Atlas proof awaiting review. Give the implementer a precise repair brief.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "c838c90beb310af86b25286502f475af60cd6741ba8225b3b31893de3d0009e1",
          "order": [
            "plain",
            "vendor-better-interface"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 5,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": 3,
            "mobile": 2
          },
          "reason": "A puts Atlas in a dedicated awaiting-review section with its proof number, date and Review proof action; B leads with all projects, so add a prioritized review entry and keep its action visible on mobile. B has clearer, larger typography, but its tall mobile card pushes Review proof to the bottom edge and adds 'Date type not specified'; shorten the artwork and remove that filler while preserving the date.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "25cb75ccd70cb9282f1403fc00ed01e8f97af6daa6552ff194b55f72624d8f85",
                "bytes": 87271,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "293b9dac5da18b0c0b7f520b465fe1c04030db48028fb575522494b2816e0f1f",
                "bytes": 43318,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "c838c90beb310af86b25286502f475af60cd6741ba8225b3b31893de3d0009e1",
          "order": [
            "vendor-better-interface",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 7,
            "type": 5,
            "spacing": 6,
            "color": 5,
            "copy": 3,
            "states": null,
            "mobile": 6
          },
          "reason": "B places Atlas identity, Proof 02 and Review proof in a dedicated awaiting-review section above the project list on both widths; A makes the client locate the pending card, with its action near the bottom on mobile. B repeats Atlas and replaces A’s explicit project-date qualification with the vaguer Date on record; retain B’s priority section, restore precise date meaning and include Proof 02 in the review action.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "25cb75ccd70cb9282f1403fc00ed01e8f97af6daa6552ff194b55f72624d8f85",
                "bytes": 87271,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "293b9dac5da18b0c0b7f520b465fe1c04030db48028fb575522494b2816e0f1f",
                "bytes": 43318,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 2.5,
        "hierarchy": 1.5,
        "type": 4,
        "spacing": 2.5,
        "color": 3.5,
        "copy": 3.5,
        "states": 3,
        "mobile": 2
      }
    },
    {
      "id": "data-table",
      "treatment": "vendor-better-layout",
      "command": "fix",
      "name": "better-layout",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Finish a dispatch manifest for a dock worker locating the next outbound crate. Preserve every shipment and its destination.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "60785b05f9f55a0758fb2f8782e6e0f77e9781e6466ea40c50456ac50d8a8892",
          "order": [
            "plain",
            "vendor-better-layout"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 3,
            "spacing": 2,
            "color": 4,
            "copy": 3,
            "states": null,
            "mobile": 2
          },
          "reason": "A keeps all three shipments, dock destinations and departure times visible on mobile in a readable compact table, while B’s stacked shipment cards push later shipments below the frame. B emphasizes the departure dock with a large B badge, but A groups the next crate, Dock B and 09:40 clearly without repeating the dock information.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "669d5ebac96b0f8acfc034207e423f978bf9f2aacc8cb24e51758c22c1212792",
                "bytes": 62894,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f545222f7f42c9b8d83229cfa426be81a30b873db6105993e9f9c1343c1602fe",
                "bytes": 45525,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "8046e0519efecda369e0d44f2213aabde8f0863ed05978f1ef336133cf5d324c",
                "bytes": 63147,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "011440ff1b405bc6961976005e973c84e9c4c1359051ab2b708786edf9304d2b",
                "bytes": 45503,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "60785b05f9f55a0758fb2f8782e6e0f77e9781e6466ea40c50456ac50d8a8892",
          "order": [
            "vendor-better-layout",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 6,
            "spacing": 6,
            "color": 5,
            "copy": 4,
            "states": null,
            "mobile": 6
          },
          "reason": "B groups the next crate, destination and departure time into one clear panel; A repeats Dock B in a separate oversized badge. B also keeps all three shipments and destinations visible on mobile, while A’s taller shipment cards push later entries below the frame, though A gives individual shipment labels more room.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "8046e0519efecda369e0d44f2213aabde8f0863ed05978f1ef336133cf5d324c",
                "bytes": 63147,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "011440ff1b405bc6961976005e973c84e9c4c1359051ab2b708786edf9304d2b",
                "bytes": 45503,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "669d5ebac96b0f8acfc034207e423f978bf9f2aacc8cb24e51758c22c1212792",
                "bytes": 62894,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f545222f7f42c9b8d83229cfa426be81a30b873db6105993e9f9c1343c1602fe",
                "bytes": 45525,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 2,
        "hierarchy": 2,
        "type": 2.5,
        "spacing": 2,
        "color": 3.5,
        "copy": 3.5,
        "states": null,
        "mobile": 2
      }
    },
    {
      "id": "tally-dashboard",
      "treatment": "vendor-better-typography",
      "command": "polish",
      "name": "better-typography",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Make October billing legible at a glance for the studio owner following up unpaid invoices.",
      "outcome": "tie",
      "verdict": "optional",
      "judgments": [
        {
          "fingerprint": "e798affb6eef53a69969423c26d5d670d69ad3043dcc1f5ce159d6e052dd2994",
          "order": [
            "plain",
            "vendor-better-typography"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 5,
            "states": 5,
            "mobile": 6
          },
          "reason": "B puts the overdue invoice first and preserves its amount, issue date and status on mobile, making follow-up easier to prioritize. A offers a useful “Review overdue” action and collection progress, but its invoice list starts with a paid invoice.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "d9b8ae954e1d0b0a0c67ba01e6372562c99b3bdc69b8e757276120621575135e",
                "bytes": 85510,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "777ac44a655e528070c39c013f9bbb2718ccefa930b31a20eba8cf8ded42a4f7",
                "bytes": 60890,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "dbe296a68bbc05dbbf6bdf544fe40549a67d73fe1e7764ceedd59bba36e6c09d",
                "bytes": 84002,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f8f30ad81b8a40547f102699403fb4dc69011a97d175daec1e60b1a41e919a5c",
                "bytes": 51374,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "e798affb6eef53a69969423c26d5d670d69ad3043dcc1f5ce159d6e052dd2994",
          "order": [
            "vendor-better-typography",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 5,
            "states": null,
            "mobile": 5
          },
          "reason": "B makes follow-up explicit with an overdue alert showing $2,800, the invoice reference and a Review overdue action, including on mobile. A better prioritizes the invoice list by placing overdue and open invoices first; B spends its first visible row on a paid invoice.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "dbe296a68bbc05dbbf6bdf544fe40549a67d73fe1e7764ceedd59bba36e6c09d",
                "bytes": 84002,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f8f30ad81b8a40547f102699403fb4dc69011a97d175daec1e60b1a41e919a5c",
                "bytes": 51374,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "d9b8ae954e1d0b0a0c67ba01e6372562c99b3bdc69b8e757276120621575135e",
                "bytes": 85510,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "777ac44a655e528070c39c013f9bbb2718ccefa930b31a20eba8cf8ded42a4f7",
                "bytes": 60890,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        3
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 4.5,
        "type": 4,
        "spacing": 4,
        "color": 4.5,
        "copy": 4,
        "states": 5,
        "mobile": 4.5
      }
    },
    {
      "id": "folio-settings",
      "treatment": "vendor-better-ui",
      "command": "polish",
      "name": "better-ui",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Refine the contact and notification settings so a client can tell which details will change.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "10302bd96d7065766b1e25446f5ce6ec821403484de8eff7617d79fe943c60bc",
          "order": [
            "plain",
            "vendor-better-ui"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 3,
            "type": 4,
            "spacing": 3,
            "color": 5,
            "copy": 3,
            "states": 5,
            "mobile": 2
          },
          "reason": "A explicitly explains where the full name appears and where notification emails go, making the effects of edits clearer. A also keeps the notification toggle and destination visible on mobile; B offers stronger input borders and an explicit On label, but its taller layout pushes notification details below the visible area.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "de57de2752a8a77b42b8db08c9028688cb917097050865233ecb17a8932a77fa",
                "bytes": 64443,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9a0473b968cd6d5795df7475a69c986632bf2d520b4a07024844e56d9d4a7c80",
                "bytes": 47841,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "9eafb5bb7cf289bbfe475fbb457991cb53f78e62a6ac395924eb9465dc0e98b9",
                "bytes": 74451,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "88d49c88aa1c3ed09993abc5bba85f053c741ac7384867bd9f6c2fd604d25be4",
                "bytes": 52430,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "10302bd96d7065766b1e25446f5ce6ec821403484de8eff7617d79fe943c60bc",
          "order": [
            "vendor-better-ui",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 5,
            "states": 3,
            "mobile": 6
          },
          "reason": "B explains what the full name affects and where notifications go, with separate sections that keep the notification control visible on mobile. A gives the saved state clearer emphasis through its muted Save settings button and explicit On label, but its taller mobile layout pushes notification details below the visible area.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "9eafb5bb7cf289bbfe475fbb457991cb53f78e62a6ac395924eb9465dc0e98b9",
                "bytes": 74451,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "88d49c88aa1c3ed09993abc5bba85f053c741ac7384867bd9f6c2fd604d25be4",
                "bytes": 52430,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "de57de2752a8a77b42b8db08c9028688cb917097050865233ecb17a8932a77fa",
                "bytes": 64443,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9a0473b968cd6d5795df7475a69c986632bf2d520b4a07024844e56d9d4a7c80",
                "bytes": 47841,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        3,
        3
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 4,
        "hierarchy": 3,
        "type": 3.5,
        "spacing": 3,
        "color": 4.5,
        "copy": 3,
        "states": 5,
        "mobile": 2
      }
    },
    {
      "id": "empty-inbox",
      "treatment": "vendor-better-writing",
      "command": "audit",
      "name": "better-writing",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Audit the empty inspection inbox. Explain what happened, what to do next, and which screen changes would help.",
      "outcome": "win",
      "verdict": "keep",
      "judgments": [
        {
          "fingerprint": "929dcf10f4f94d55f7aa8c8dd878aafc0b5c3eee32ec875315ed1c1e07b3b540",
          "order": [
            "plain",
            "vendor-better-writing"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 5,
            "type": 4,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": 4,
            "mobile": 5
          },
          "reason": "B groups the kiln and shift with the page context and separates Schedule Inspection from the quieter Completed link, making the next action clearer at both widths. A explicitly says no inspections are listed for this shift, while B’s shorter empty-state copy loses that useful scope despite reducing repetition.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "0345325b437c70bdd24fe5395875715631f416cfa671e4040615fa33db2442c3",
                "bytes": 51159,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "66aff71e130526143ef401ff576f50d71d99ddbbd9238b49258f055536505b8f",
                "bytes": 42258,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "40d65d0db819b84a4fa54f50bf332b4d76a2851988549ea86f66b6f6f1650002",
                "bytes": 52628,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2276747f184cfe7312d5dbcb43925b1b19515b57fbbb0ce6e89d22d0997437c0",
                "bytes": 40958,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "929dcf10f4f94d55f7aa8c8dd878aafc0b5c3eee32ec875315ed1c1e07b3b540",
          "order": [
            "vendor-better-writing",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 3,
            "type": 4,
            "spacing": 3,
            "color": 3,
            "copy": 3,
            "states": 4,
            "mobile": 3
          },
          "reason": "A groups the empty-state explanation, Schedule inspection button and Completed link into a concise next step, with comfortable spacing on mobile. B places the kiln and shift directly above the inbox and makes Completed more prominent, but repeats the empty-state explanation and gives both destinations competing emphasis.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "40d65d0db819b84a4fa54f50bf332b4d76a2851988549ea86f66b6f6f1650002",
                "bytes": 52628,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2276747f184cfe7312d5dbcb43925b1b19515b57fbbb0ce6e89d22d0997437c0",
                "bytes": 40958,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "0345325b437c70bdd24fe5395875715631f416cfa671e4040615fa33db2442c3",
                "bytes": 51159,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "66aff71e130526143ef401ff576f50d71d99ddbbd9238b49258f055536505b8f",
                "bytes": 42258,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        5,
        5
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 5.5,
        "hierarchy": 5,
        "type": 4,
        "spacing": 5,
        "color": 4.5,
        "copy": 4.5,
        "states": 4,
        "mobile": 5
      }
    },
    {
      "id": "settings",
      "treatment": "vendor-break",
      "command": "harden",
      "name": "break",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Prepare the webhook preferences form for an operator who must recover after a failed save without losing their endpoint.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "1587af2d04346557a09dbd25a6d2bf9cf2e04b06b9b9aed7d085a8a27da38da8",
          "order": [
            "plain",
            "vendor-break"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": 2,
            "mobile": 3
          },
          "reason": "A places the failed-save alert before the fields and explicitly confirms that the endpoint and notification choice remain, making recovery clear. B gives the endpoint more horizontal room on mobile, but its extra “Failed save / Current endpoint · full width” row distracts from the form and retry action.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "0c3004416b5dfa87bbc199ead1a94bd679096a6eb6f4adeae441699304038002",
                "bytes": 72231,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "4dd559c69818481e93e5a0c8e28a16e316451ee87bb38772665a95146348beaa",
                "bytes": 59564,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "1587af2d04346557a09dbd25a6d2bf9cf2e04b06b9b9aed7d085a8a27da38da8",
          "order": [
            "vendor-break",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 5,
            "states": 6,
            "mobile": 6
          },
          "reason": "B places the failed-save alert before the preserved endpoint, making the recovery context clear before editing. A keeps the alert closer to Retry save, but its visible “Failed save / Current endpoint · full width” annotation distracts from the operator’s task at both widths.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "0c3004416b5dfa87bbc199ead1a94bd679096a6eb6f4adeae441699304038002",
                "bytes": 72231,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "4dd559c69818481e93e5a0c8e28a16e316451ee87bb38772665a95146348beaa",
                "bytes": 59564,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 2.5,
        "hierarchy": 2,
        "type": 3,
        "spacing": 3,
        "color": 4,
        "copy": 2.5,
        "states": 2,
        "mobile": 2.5
      }
    },
    {
      "id": "tally-settings",
      "treatment": "vendor-break-ui",
      "command": "harden",
      "name": "break-ui",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Make the billing contact settings ready for a studio owner to edit and recover from a failed save on a phone.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "fb666189be80c5da96d7573dd40324e229a8122822787e60dbe97ae7efc79e4e",
          "order": [
            "plain",
            "vendor-break-ui"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 2,
            "type": 4,
            "spacing": 2,
            "color": 4,
            "copy": 5,
            "states": 2,
            "mobile": 2
          },
          "reason": "A shows a clear “Try saving again” action and unsaved status on desktop, while B’s visible recovery guidance lacks a visible retry action. A also fits more of the form on mobile without B’s floating demo controls overlapping content, although B’s “Billing contact” navigation and studio-name limit provide more specific guidance.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "8f8042d6467e600f7dcfa4f2613ad8888cf81a9cbb755650d135045d266fa11f",
                "bytes": 67592,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "10637d57786b68ad445599ff12b59121abd2793a7fd867a8b4860eb0f375e2d9",
                "bytes": 51303,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "bb8eac51a92401fda2ccb1be0aa736de970b1d37ec63fa1d5efdbd9743c5e86b",
                "bytes": 70422,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "dd00ef2602568cc5c33589a332db1d6cd5e9c25ebdf1d5d502579246f6c546e0",
                "bytes": 54551,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "fb666189be80c5da96d7573dd40324e229a8122822787e60dbe97ae7efc79e4e",
          "order": [
            "vendor-break-ui",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 5,
            "type": 4,
            "spacing": 5,
            "color": 4,
            "copy": 3,
            "states": 5,
            "mobile": 5
          },
          "reason": "B keeps more of the mobile form visible without A’s floating demo controls overlapping the content, and B shows an explicit retry action on desktop. A has the more specific “Billing contact” navigation label and preserves the 90-character studio-name limit that B omits.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "bb8eac51a92401fda2ccb1be0aa736de970b1d37ec63fa1d5efdbd9743c5e86b",
                "bytes": 70422,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "dd00ef2602568cc5c33589a332db1d6cd5e9c25ebdf1d5d502579246f6c546e0",
                "bytes": 54551,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "8f8042d6467e600f7dcfa4f2613ad8888cf81a9cbb755650d135045d266fa11f",
                "bytes": 67592,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "10637d57786b68ad445599ff12b59121abd2793a7fd867a8b4860eb0f375e2d9",
                "bytes": 51303,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        3
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 4,
        "hierarchy": 2.5,
        "type": 4,
        "spacing": 2.5,
        "color": 4,
        "copy": 5,
        "states": 2.5,
        "mobile": 2.5
      }
    },
    {
      "id": "folio-projects",
      "treatment": "vendor-build-design",
      "command": "audit",
      "name": "build-design",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Audit how a client finds the Atlas proof awaiting review. Give the implementer a precise repair brief.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "35a522dd0f04a35f94fc9a77f0a51d1f4751392237275e5b0cf17c0b64d3fc1c",
          "order": [
            "plain",
            "vendor-build-design"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 1,
            "hierarchy": 1,
            "type": 2,
            "spacing": 3,
            "color": 2,
            "copy": 1,
            "states": null,
            "mobile": 2
          },
          "reason": "A gives Atlas a dedicated awaiting-review section with its client, proof number, date and Review proof action; B keeps that action visible but removes the client name and separate review queue - restore both. B’s shorter cards reduce duplication, but its large gradient greeting delays the actionable content on mobile; replace it with A’s compact task heading and prioritize the pending proof.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "83c9fd5dec646fa6fb4b198282cacb2d19dbac6b5a9ff7ef9fefb32488879b97",
                "bytes": 131800,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "30e55cb5e4b22328c29e44697d01c607de6bfaa3d951d3c0fb7638e344772719",
                "bytes": 73337,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "35a522dd0f04a35f94fc9a77f0a51d1f4751392237275e5b0cf17c0b64d3fc1c",
          "order": [
            "vendor-build-design",
            "plain"
          ],
          "preference": 7,
          "dimensions": {
            "genericSignals": 7,
            "hierarchy": 7,
            "type": 6,
            "spacing": 6,
            "color": 6,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B puts Atlas identity in an explicit awaiting-review section with Proof 02, the recorded date and Review proof together; A places the action inside the general project list beneath a large gradient greeting. B also preserves this priority on mobile, although repeating Atlas under All projects pushes other work down. Repair B by distinguishing the repeated Atlas entry and keeping Review proof prominent in the priority card at both widths.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "83c9fd5dec646fa6fb4b198282cacb2d19dbac6b5a9ff7ef9fefb32488879b97",
                "bytes": 131800,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "30e55cb5e4b22328c29e44697d01c607de6bfaa3d951d3c0fb7638e344772719",
                "bytes": 73337,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        1
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 1,
        "hierarchy": 1,
        "type": 2,
        "spacing": 2.5,
        "color": 2,
        "copy": 1.5,
        "states": null,
        "mobile": 2
      }
    },
    {
      "id": "tally-home",
      "treatment": "vendor-design-taste-frontend",
      "command": "landing",
      "name": "design-taste-frontend",
      "author": "Leonxlnx",
      "repo": "Leonxlnx/taste-skill",
      "revision": "12af471f627f866411b4bd785b19646d3672784c",
      "brief": "A studio owner wants to see whether this invoice tool can show what clients still owe. Make the opening screen and its next step convincing.",
      "outcome": "win",
      "verdict": "keep",
      "judgments": [
        {
          "fingerprint": "4ec2faa252483b55bdd3aa938e9ed79e6acc2f3be36d4a3f57a91aba180647d3",
          "order": [
            "plain",
            "vendor-design-taste-frontend"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B pairs “Know what’s still owed” with $6,550 and its open/overdue split, making the task clearer than A’s more expressive headline. B also brings the invoice summary higher on mobile; A’s framed overview has more character, but delays the supporting facts.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "ea8d1956c85065c857c23ef6ef867908defbf094cfba54199ddca1a678bd95b0",
                "bytes": 93691,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9cb12bb9eb8f54b43483bc3726a0aea647b7cc1625826886ef6802896b7e8656",
                "bytes": 56422,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "1a276fd91fb03f790811a09b2829383c178f9a388ce09c025d15154ff9c33f43",
                "bytes": 86879,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "1224880eddb0a5053469c80768aa33c64252663cabd333d85ce721cbe3b1b4c0",
                "bytes": 52781,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "4ec2faa252483b55bdd3aa938e9ed79e6acc2f3be36d4a3f57a91aba180647d3",
          "order": [
            "vendor-design-taste-frontend",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 3,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A pairs “Know what’s still owed” with explicit open and overdue amounts beside the total, making the task and dashboard action immediately clear. B has more expressive typography and a polished summary frame, but its taller mobile introduction pushes the invoice facts farther down and its summary omits the visible open/overdue amount breakdown.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "1a276fd91fb03f790811a09b2829383c178f9a388ce09c025d15154ff9c33f43",
                "bytes": 86879,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "1224880eddb0a5053469c80768aa33c64252663cabd333d85ce721cbe3b1b4c0",
                "bytes": 52781,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "ea8d1956c85065c857c23ef6ef867908defbf094cfba54199ddca1a678bd95b0",
                "bytes": 93691,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9cb12bb9eb8f54b43483bc3726a0aea647b7cc1625826886ef6802896b7e8656",
                "bytes": 56422,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        6
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 5,
        "hierarchy": 6,
        "type": 5,
        "spacing": 5,
        "color": 5,
        "copy": 6,
        "states": null,
        "mobile": 6
      }
    },
    {
      "id": "folio-project",
      "treatment": "vendor-emil-design-eng",
      "command": "motion",
      "name": "emil-design-eng",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Clarify which proof awaits approval and how its state changes when a client approves it, including a quiet path for reduced motion.",
      "outcome": "win",
      "verdict": "keep",
      "judgments": [
        {
          "fingerprint": "bfe807dd11d6e2b9aeead495eab55c05cb12ff76a3964d48f54ce85669d87cfc",
          "order": [
            "plain",
            "vendor-emil-design-eng"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 6,
            "states": 5,
            "mobile": 3
          },
          "reason": "B’s approval panel names Identity direction, version 02, and explicitly connects approval to the Review → Approved change. A’s more compact mobile proof preserves more supporting context onscreen; neither A nor B demonstrates a reduced-motion path or completed approval state.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "4622b02778fb30c12caf5d7573586de4c251e8bf71dca226952ae783b7d04c1e",
                "bytes": 88581,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "6351ea27a7f8fa449996998646b9550967c26c2610d72fc31b2ac99f5333dc17",
                "bytes": 41850,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "bfe807dd11d6e2b9aeead495eab55c05cb12ff76a3964d48f54ce85669d87cfc",
          "order": [
            "vendor-emil-design-eng",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 3,
            "type": 4,
            "spacing": 4,
            "color": 4,
            "copy": 2,
            "states": 4,
            "mobile": 5
          },
          "reason": "A’s approval panel explicitly ties approval to Identity direction, version 02, and the Review-to-Approved transition; B communicates the same transition but leaves the proof title out of its desktop card. B makes the awaiting-client-approval badge more prominent on mobile, while neither shows the approved outcome or a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "4622b02778fb30c12caf5d7573586de4c251e8bf71dca226952ae783b7d04c1e",
                "bytes": 88581,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "6351ea27a7f8fa449996998646b9550967c26c2610d72fc31b2ac99f5333dc17",
                "bytes": 41850,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        5
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 5,
        "hierarchy": 5.5,
        "type": 4.5,
        "spacing": 4.5,
        "color": 4,
        "copy": 6,
        "states": 4.5,
        "mobile": 3
      }
    },
    {
      "id": "folio-projects",
      "treatment": "vendor-explain-interface",
      "command": "audit",
      "name": "explain-interface",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Audit how a client finds the Atlas proof awaiting review. Give the implementer a precise repair brief.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "302618d1ab992d6a002d29b16f20d73aa8bca25c40bb3c8b12c909c234c3f960",
          "order": [
            "plain",
            "vendor-explain-interface"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 2,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A exposes Atlas identity, Proof 02, the recorded date and an explicit “Review proof” action together at both widths; B’s review banner preserves the proof reference but offers only an unlabeled arrow. B’s compact banner brings All projects and search higher on mobile; retain that compact layout, but add a visible “Review proof” label and the recorded date so the priority task is self-contained.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "e22436fff25b7e581d492cb293d66917e08925f845a47ade0397936a1ebedabd",
                "bytes": 80537,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "bdba68a629632d3d6dc98f6119461d8545895f3b5ffa8de9fc76264c97e27062",
                "bytes": 45147,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "302618d1ab992d6a002d29b16f20d73aa8bca25c40bb3c8b12c909c234c3f960",
          "order": [
            "vendor-explain-interface",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B makes the awaiting Atlas proof identifiable through its title, Proof 02, review status and explicit Review proof action; A compresses the same task into a banner with only an arrow. B’s expanded review card pushes All projects farther down mobile, while A keeps browsing closer. Preserve B’s explicit action and proof facts, but tighten the mobile preview height so project browsing remains easier to reach.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "e22436fff25b7e581d492cb293d66917e08925f845a47ade0397936a1ebedabd",
                "bytes": 80537,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "bdba68a629632d3d6dc98f6119461d8545895f3b5ffa8de9fc76264c97e27062",
                "bytes": 45147,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 2,
        "type": 4,
        "spacing": 4,
        "color": 3.5,
        "copy": 2,
        "states": null,
        "mobile": 2
      }
    },
    {
      "id": "mobile-feed",
      "treatment": "vendor-find-animation-opportunities",
      "command": "motion",
      "name": "find-animation-opportunities",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Improve reading and save feedback in a mobile typographic specimen feed. Keep the reading position stable.",
      "outcome": "win",
      "verdict": "keep",
      "judgments": [
        {
          "fingerprint": "58ac83c08ba6b2655892098ebaf68ee8206982237bfc0b6705c795644c507c83",
          "order": [
            "plain",
            "vendor-find-animation-opportunities"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 4,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": null,
            "mobile": 5
          },
          "reason": "B’s mobile specimen flows from letterform to name, description and save control, with the next specimen visible below, supporting feed reading. A’s boxed specimen and full-width save button make the action more prominent, but consume more vertical space; neither shows save feedback or evidence of reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "3bb7ebff66df507f8f2e6908871ab6af958d68ddf4f99e04eec3b80dd7d370ec",
                "bytes": 69361,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "511cbe9bb156ec6712fc1a2735e9ca71d83ce37aaaaaa5676bf8ad8a35e47f0c",
                "bytes": 44308,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "58ac83c08ba6b2655892098ebaf68ee8206982237bfc0b6705c795644c507c83",
          "order": [
            "vendor-find-animation-opportunities",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 3,
            "type": 4,
            "spacing": 3,
            "color": 4,
            "copy": 3,
            "states": null,
            "mobile": 3
          },
          "reason": "A keeps the specimen name, description and save action compact enough that the next specimen begins within the mobile view. B groups each specimen more explicitly and gives the save button a wider target, but its separate glyph panel consumes more reading space; neither shows save feedback or evidence of reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "3bb7ebff66df507f8f2e6908871ab6af958d68ddf4f99e04eec3b80dd7d370ec",
                "bytes": 69361,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "511cbe9bb156ec6712fc1a2735e9ca71d83ce37aaaaaa5676bf8ad8a35e47f0c",
                "bytes": 44308,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        5,
        5
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 4.5,
        "hierarchy": 4.5,
        "type": 4.5,
        "spacing": 5,
        "color": 4,
        "copy": 4.5,
        "states": null,
        "mobile": 5
      }
    },
    {
      "id": "pour-home",
      "treatment": "vendor-hairline-adopt",
      "command": "fix",
      "name": "hairline-adopt",
      "author": "Lucas Markes",
      "repo": "lucasmarkes/hairline",
      "revision": "37d2e78dcb333ab30c3338e28ed4a690364ea014",
      "brief": "Finish a working brew calculator for someone weighing coffee at the counter. Preserve the actual brew recipe.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "2876d28ea72b1846893a13f2144979540d0785582aa320f37ecca190200987fa",
          "order": [
            "plain",
            "vendor-hairline-adopt"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 2,
            "spacing": 2,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A brings the dose selector and recipe quantities into view sooner on mobile, while B’s larger headline pushes the calculator lower. B gives the desktop recipe card more breathing room, but A’s cumulative-water chart label and instruction to keep the scale running better support weighing successive pours.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "598ed5f5e89ec35c7067e6d4316019571b8d560e94fa2928223b53f82fccd4bb",
                "bytes": 90334,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8eea83a03847b7425abb372333bba2463dc62fcb3d387a1a44bde3f58bbd631f",
                "bytes": 50684,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "8c195ebcc10bc54a50bd379ea174944adbdd00aee2f4746c9e1d2f3590fc6318",
                "bytes": 88606,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "d9a6cc7da5e120bfd36b636f9302068b006c1a9140109a287a0d54a4bba727e3",
                "bytes": 55178,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "2876d28ea72b1846893a13f2144979540d0785582aa320f37ecca190200987fa",
          "order": [
            "vendor-hairline-adopt",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 6,
            "spacing": 6,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B places the dose control and recipe higher on mobile, while A’s awkward headline wrapping delays the calculator. B also clarifies cumulative water amounts and keeping the scale running while preserving the visible recipe; A’s larger desktop recipe card offers slightly easier scanning.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "8c195ebcc10bc54a50bd379ea174944adbdd00aee2f4746c9e1d2f3590fc6318",
                "bytes": 88606,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "d9a6cc7da5e120bfd36b636f9302068b006c1a9140109a287a0d54a4bba727e3",
                "bytes": 55178,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "598ed5f5e89ec35c7067e6d4316019571b8d560e94fa2928223b53f82fccd4bb",
                "bytes": 90334,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8eea83a03847b7425abb372333bba2463dc62fcb3d387a1a44bde3f58bbd631f",
                "bytes": 50684,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 2,
        "hierarchy": 2,
        "type": 2,
        "spacing": 2,
        "color": 3.5,
        "copy": 2,
        "states": null,
        "mobile": 2
      }
    },
    {
      "id": "pour-home",
      "treatment": "vendor-hairline-create",
      "command": "fix",
      "name": "hairline-create",
      "author": "Lucas Markes",
      "repo": "lucasmarkes/hairline",
      "revision": "37d2e78dcb333ab30c3338e28ed4a690364ea014",
      "brief": "Finish a working brew calculator for someone weighing coffee at the counter. Preserve the actual brew recipe.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "06b2a77f0ae6c97b51292a33b7bc8e5a97cb5779e21608c76235e313c43b00d2",
          "order": [
            "plain",
            "vendor-hairline-create"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 3,
            "type": 4,
            "spacing": 5,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 3
          },
          "reason": "A explicitly labels cumulative water and tells users to keep the scale running, making the preserved 45 g, 144 g and 240 g recipe clearer at the counter. B has calmer card spacing and stronger grouping of ratio and water, but A brings the dose control and more of the pour graph into view on mobile.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "598ed5f5e89ec35c7067e6d4316019571b8d560e94fa2928223b53f82fccd4bb",
                "bytes": 90334,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8eea83a03847b7425abb372333bba2463dc62fcb3d387a1a44bde3f58bbd631f",
                "bytes": 50684,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "bb6732540b8ea968068021dd535be9b74ae0c2e40b6a6d54679f31df819f805e",
                "bytes": 86264,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "784f087b71a5a9930dc9932900f1ce5b7187776b5760d69aaac21490fc13424c",
                "bytes": 49743,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "06b2a77f0ae6c97b51292a33b7bc8e5a97cb5779e21608c76235e313c43b00d2",
          "order": [
            "vendor-hairline-create",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 5
          },
          "reason": "B makes the counter task clearer with cumulative scale readings, an explicit instruction to keep the scale running, and a dose-focused primary action while preserving the recipe. A has a more compact mobile card and larger chart labels, but B more clearly distinguishes the ratio, total water and pour schedule.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "bb6732540b8ea968068021dd535be9b74ae0c2e40b6a6d54679f31df819f805e",
                "bytes": 86264,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "784f087b71a5a9930dc9932900f1ce5b7187776b5760d69aaac21490fc13424c",
                "bytes": 49743,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "598ed5f5e89ec35c7067e6d4316019571b8d560e94fa2928223b53f82fccd4bb",
                "bytes": 90334,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8eea83a03847b7425abb372333bba2463dc62fcb3d387a1a44bde3f58bbd631f",
                "bytes": 50684,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        3,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 2.5,
        "hierarchy": 2.5,
        "type": 3.5,
        "spacing": 4,
        "color": 3.5,
        "copy": 2,
        "states": null,
        "mobile": 3
      }
    },
    {
      "id": "tally-home",
      "treatment": "vendor-hallmark",
      "command": "landing",
      "name": "hallmark",
      "author": "Nutlope",
      "repo": "Nutlope/hallmark",
      "revision": "de4999e0cd7a7a41df0b4e6903fa02fe9f1492a8",
      "brief": "A studio owner wants to see whether this invoice tool can show what clients still owe. Make the opening screen and its next step convincing.",
      "outcome": "win",
      "verdict": "keep",
      "judgments": [
        {
          "fingerprint": "22a7d6e230d362f3f9637c641fa9897afe5dcf7ac4f881b0abe584f5fa4b5901",
          "order": [
            "plain",
            "vendor-hallmark"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B directly connects “Know what’s still owed” to $6,550 and an explicit $2,800 overdue amount, making the task and dashboard action clearer. A has more distinctive typography and studio framing, but its taller mobile introduction pushes the invoice facts farther down.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "ea8d1956c85065c857c23ef6ef867908defbf094cfba54199ddca1a678bd95b0",
                "bytes": 93691,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9cb12bb9eb8f54b43483bc3726a0aea647b7cc1625826886ef6802896b7e8656",
                "bytes": 56422,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "88649c1fcf8c7a5a3c84af7a753b84c1ef71c32428f76c7a6ca6a60ffb26211b",
                "bytes": 80052,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "3785b93f181c79118b8f2e4d21939ca86d5d9c21e022ca5815e9474b3a68ea33",
                "bytes": 48012,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "22a7d6e230d362f3f9637c641fa9897afe5dcf7ac4f881b0abe584f5fa4b5901",
          "order": [
            "vendor-hallmark",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 3,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A directly connects “Know what’s still owed” to the dashboard action and the $6,550 balance, explicitly identifying $2,800 overdue. B has distinctive typography and a cohesive summary panel, but its taller mobile introduction pushes the balance and invoice breakdown farther below the opening view.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "88649c1fcf8c7a5a3c84af7a753b84c1ef71c32428f76c7a6ca6a60ffb26211b",
                "bytes": 80052,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "3785b93f181c79118b8f2e4d21939ca86d5d9c21e022ca5815e9474b3a68ea33",
                "bytes": 48012,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "ea8d1956c85065c857c23ef6ef867908defbf094cfba54199ddca1a678bd95b0",
                "bytes": 93691,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "9cb12bb9eb8f54b43483bc3726a0aea647b7cc1625826886ef6802896b7e8656",
                "bytes": 56422,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        6
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 6,
        "type": 5,
        "spacing": 5,
        "color": 5,
        "copy": 6,
        "states": null,
        "mobile": 6
      }
    },
    {
      "id": "folio-projects",
      "treatment": "vendor-impeccable",
      "command": "audit",
      "name": "impeccable",
      "author": "Paul Bakaus",
      "repo": "pbakaus/impeccable",
      "revision": "695cea5c6d1cbd420fc331375c7ef126a774e5f7",
      "brief": "Audit how a client finds the Atlas proof awaiting review. Give the implementer a precise repair brief.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "f17037ce4b8b863622360c71ed255dd19fdda59bfa26991df54aeb8fefbe1a57",
          "order": [
            "plain",
            "vendor-impeccable"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A identifies Atlas Foundry · Proof 02 and keeps Review proof visible sooner on mobile; B omits the proof number and says the action opens the project - restore Proof 02 and clarify the action’s destination. B gives Review proof stronger button treatment and avoids A’s repeated Atlas card; give A a solid primary button and exclude the awaiting-review item from the lower project list.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "f58c40075a65926968cef28e53ada3329f17e6fe8a52857776a2e755900e1fd1",
                "bytes": 68573,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "44d30ff52c026379f46bf9bf415bf44577069d5f129528cc578988d7ae6780f4",
                "bytes": 47995,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "f17037ce4b8b863622360c71ed255dd19fdda59bfa26991df54aeb8fefbe1a57",
          "order": [
            "vendor-impeccable",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B places Atlas identity, Proof 02, review status and Review proof together in a compact priority card; A omits an explicit proof number and adds redundant helper copy, although its filled action is more prominent. B gets the mobile review action onscreen sooner, but repeats Atlas under All projects; retain that compact grouping and strengthen the action’s visual emphasis.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "f58c40075a65926968cef28e53ada3329f17e6fe8a52857776a2e755900e1fd1",
                "bytes": 68573,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "44d30ff52c026379f46bf9bf415bf44577069d5f129528cc578988d7ae6780f4",
                "bytes": 47995,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 3,
        "hierarchy": 2,
        "type": 3,
        "spacing": 2.5,
        "color": 3.5,
        "copy": 2,
        "states": null,
        "mobile": 2
      }
    },
    {
      "id": "folio-project",
      "treatment": "vendor-improve-animations",
      "command": "motion",
      "name": "improve-animations",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Clarify which proof awaits approval and how its state changes when a client approves it, including a quiet path for reduced motion.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "68e1243354b8132b2daf53d90eeb14adeeb3c4b2673f9a2c631d81badfa72202",
          "order": [
            "plain",
            "vendor-improve-animations"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A explicitly ties “Approve direction” to version 02 and explains the Review-to-Approved change; B’s project-status wording makes the approval scope less precise. B gives the proof more visual prominence, but A’s compact mobile card brings supporting details closer; neither shows a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "d533bcd949dd4c82873efd2fdf21d7cb69628f3efba9166f91438748319a4e5a",
                "bytes": 72042,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "a25f116cb97859d2614e0ad5a1058f7668ac489cb3631e816a96949c6e95d6dc",
                "bytes": 39346,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "68e1243354b8132b2daf53d90eeb14adeeb3c4b2673f9a2c631d81badfa72202",
          "order": [
            "vendor-improve-animations",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 4,
            "copy": 6,
            "states": 5,
            "mobile": 6
          },
          "reason": "B groups the approval action with explicit Review-to-Approved copy and scopes approval to version 02. B also keeps the proof title and version together on mobile, although A gives the artwork more space; neither shows an approved result or a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "d533bcd949dd4c82873efd2fdf21d7cb69628f3efba9166f91438748319a4e5a",
                "bytes": 72042,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "a25f116cb97859d2614e0ad5a1058f7668ac489cb3631e816a96949c6e95d6dc",
                "bytes": 39346,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 4,
        "hierarchy": 2,
        "type": 3,
        "spacing": 2.5,
        "color": 4,
        "copy": 2,
        "states": 3,
        "mobile": 2
      }
    },
    {
      "id": "folio-projects",
      "treatment": "vendor-interface-review",
      "command": "audit",
      "name": "interface-review",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Audit how a client finds the Atlas proof awaiting review. Give the implementer a precise repair brief.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "52454e507c6c629ca719a8a80efc0868186301b929336bee9143187a7f713521",
          "order": [
            "plain",
            "vendor-interface-review"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 2,
            "type": 5,
            "spacing": 4,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A gives Atlas a dedicated “Awaiting your review” section with Proof 02 and a visible “Review proof” action on mobile; B buries that action below a large preview, so move it beside the proof identity and status. B avoids A’s duplicated Atlas card and gives the project grid more room; preserve A’s priority treatment while showing Atlas only once and keeping search available.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "15b76d406b0378f4dba75bd84821365f36e6a622e2c523cf94005e579e54d216",
                "bytes": 80089,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "78c4216548fa642cbf41184f694dd6045b4090c72cad6697e497ffe8fccc9daa",
                "bytes": 39987,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "52454e507c6c629ca719a8a80efc0868186301b929336bee9143187a7f713521",
          "order": [
            "vendor-interface-review",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 7,
            "type": 6,
            "spacing": 6,
            "color": 5,
            "copy": 4,
            "states": null,
            "mobile": 6
          },
          "reason": "B puts Atlas identity, Proof 02 and Review proof together in a dedicated awaiting-review section on both widths; A leaves the action beneath the project card’s supporting details. B repeats Atlas under All projects, pushing the remaining projects farther down mobile: keep the prominent review action, reduce that duplication, and replace the vague Date on record label with a precise date meaning.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "15b76d406b0378f4dba75bd84821365f36e6a622e2c523cf94005e579e54d216",
                "bytes": 80089,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "78c4216548fa642cbf41184f694dd6045b4090c72cad6697e497ffe8fccc9daa",
                "bytes": 39987,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "bac3cc25ecc5f73b0fa74fdf6c2bf6ec7e20b742ac678c4f8cc079f95d71a7ea",
                "bytes": 93689,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "e38de27dd94dbeb0ebe6736f0ffecc23b74da574a821e3a752c305906799c9f4",
                "bytes": 47550,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 1.5,
        "type": 3.5,
        "spacing": 3,
        "color": 3.5,
        "copy": 3,
        "states": null,
        "mobile": 2
      }
    },
    {
      "id": "mobile-feed",
      "treatment": "vendor-mobile-native",
      "command": "motion",
      "name": "mobile-native",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Improve reading and save feedback in a mobile typographic specimen feed. Keep the reading position stable.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "5a9fe484817fb28306993b627b0140ba4f6b3e868d6e655775c54c9a79dc6a8e",
          "order": [
            "plain",
            "vendor-mobile-native"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 3,
            "type": 4,
            "spacing": 3,
            "color": 4,
            "copy": 3,
            "states": null,
            "mobile": 3
          },
          "reason": "A groups the specimen, description and full-width save action within one mobile card, making their relationship clearer. B gives the letterform more space and names it directly in the image label, but its detached description and smaller save control weaken the grouping; neither shows save feedback or evidence of reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "78b5aadb2f00268fd1b4b34cf1c46ca293aba2475400c096d5c64a8a2dc1fc86",
                "bytes": 69512,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "5eb516ae9638b9fce6fd8d480b18e49edd7a297c6eac77aa7a910749a2c280f8",
                "bytes": 44776,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "5a9fe484817fb28306993b627b0140ba4f6b3e868d6e655775c54c9a79dc6a8e",
          "order": [
            "vendor-mobile-native",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 4,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": null,
            "mobile": 5
          },
          "reason": "B groups each specimen, description and Save specimen action within one bordered unit, with a wider mobile save control. A shows both specimens side by side on desktop, making comparison faster; neither shows save feedback or provides evidence of reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "78b5aadb2f00268fd1b4b34cf1c46ca293aba2475400c096d5c64a8a2dc1fc86",
                "bytes": 69512,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "5eb516ae9638b9fce6fd8d480b18e49edd7a297c6eac77aa7a910749a2c280f8",
                "bytes": 44776,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        3,
        3
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 2.5,
        "type": 4,
        "spacing": 3,
        "color": 4,
        "copy": 3.5,
        "states": null,
        "mobile": 3
      }
    },
    {
      "id": "settings",
      "treatment": "vendor-pick-ui-library",
      "command": "harden",
      "name": "pick-ui-library",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Prepare the webhook preferences form for an operator who must recover after a failed save without losing their endpoint.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "30e4fc7e97b1ce15354956e0a12112e3e0c56583509687d28dfba0c0c4a8afa2",
          "order": [
            "plain",
            "vendor-pick-ui-library"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": 2,
            "mobile": 2
          },
          "reason": "A keeps the retained endpoint visible and labels the recovery action “Retry save”; B retains the endpoint too, but uses the less specific “Save settings.” B offers clearer workspace navigation, but it pushes the form lower on mobile, where A’s full-width recovery button remains fully visible.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "7bf547d341d498c5c1235632a428dcc282f47da5334c41ca9e82fedfcf026db1",
                "bytes": 77015,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f290605a7c1996286af4c6e40550ffec8347627c594be78a747dc7c3c0e1dd57",
                "bytes": 60222,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "30e4fc7e97b1ce15354956e0a12112e3e0c56583509687d28dfba0c0c4a8afa2",
          "order": [
            "vendor-pick-ui-library",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 6,
            "states": 6,
            "mobile": 6
          },
          "reason": "B makes recovery explicit with “Retry save” and preserves the endpoint visibly beside the failed-save message. B also keeps a full-width recovery action visible on mobile; A offers stronger workspace context, but its generic “Save settings” action communicates recovery less clearly.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "7bf547d341d498c5c1235632a428dcc282f47da5334c41ca9e82fedfcf026db1",
                "bytes": 77015,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f290605a7c1996286af4c6e40550ffec8347627c594be78a747dc7c3c0e1dd57",
                "bytes": 60222,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 4.5,
        "hierarchy": 2,
        "type": 3,
        "spacing": 3,
        "color": 4,
        "copy": 2,
        "states": 2,
        "mobile": 2
      }
    },
    {
      "id": "onboarding",
      "treatment": "vendor-prototype",
      "command": "fix",
      "name": "prototype",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Finish first-run setup for a library volunteer labeling returned crates. Make the first decision easy to act on.",
      "outcome": "win",
      "verdict": "keep",
      "judgments": [
        {
          "fingerprint": "727ce720cbbf3c83d3c92e8132a1108e76a4ea332a586f3af1339cb782b4ee1c",
          "order": [
            "plain",
            "vendor-prototype"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 6,
            "spacing": 5,
            "color": 4,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B puts the reading-room selector directly above a prominent W-12 destination and Continue setup action, making the first decision easier to scan at both widths. A gives a clearer overview of both setup steps, while B’s Quiet/Guided/Editorial control adds an unexplained distraction beneath the form.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "40894f0ed926880341b331ead014e86602b5013243a9e14effac9f9fe34bef49",
                "bytes": 63801,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f722ea50963d6fb4adf3ecde307b69fc18a7707669e636f4ccdcb5b35c5c18da",
                "bytes": 51167,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "f8f7343081c8cecef0f649ea33c5dc5953fa2ff3adb171f48ff61ea5458f2bad",
                "bytes": 59177,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0bb2ac5f7e1b3257cabbebf89a70b71388dd6cdb01aa4d90c7551bde5646c471",
                "bytes": 49490,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "727ce720cbbf3c83d3c92e8132a1108e76a4ea332a586f3af1339cb782b4ee1c",
          "order": [
            "vendor-prototype",
            "plain"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 2,
            "spacing": 4,
            "color": 4,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A places the reading-room choice directly beneath the task heading and makes crate W-12 prominent, helping connect the selection to sorting returns. B provides a clearer two-step overview, but its introductory headline pushes the working form farther down on mobile and gives the crate destination less emphasis.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "f8f7343081c8cecef0f649ea33c5dc5953fa2ff3adb171f48ff61ea5458f2bad",
                "bytes": 59177,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0bb2ac5f7e1b3257cabbebf89a70b71388dd6cdb01aa4d90c7551bde5646c471",
                "bytes": 49490,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "40894f0ed926880341b331ead014e86602b5013243a9e14effac9f9fe34bef49",
                "bytes": 63801,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f722ea50963d6fb4adf3ecde307b69fc18a7707669e636f4ccdcb5b35c5c18da",
                "bytes": 51167,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        6,
        6
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 5.5,
        "hierarchy": 6,
        "type": 6,
        "spacing": 4.5,
        "color": 4,
        "copy": 6,
        "states": null,
        "mobile": 6
      }
    },
    {
      "id": "mobile-feed",
      "treatment": "vendor-remove-animations",
      "command": "motion",
      "name": "remove-animations",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Improve reading and save feedback in a mobile typographic specimen feed. Keep the reading position stable.",
      "outcome": "tie",
      "verdict": "optional",
      "judgments": [
        {
          "fingerprint": "0b948d1e3406070bcf132d9d1fd65f61f9374ccd070d614a4841742e90f3731a",
          "order": [
            "plain",
            "vendor-remove-animations"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": null,
            "mobile": 5
          },
          "reason": "B groups the mobile specimen identifier, title and description clearly, with a divider separating the save action. A offers a wider save target, while B uses a more compact control; neither shows save feedback or evidence that reading position stays stable.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "305858a5abe63f8782f1770e92499ddba64191b340ccc390763af20e3b0dd8dd",
                "bytes": 72037,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "ceb38372a1e6939dfacc141e30ce5f53a6a962dfebb99457f38fee9b93ecd8af",
                "bytes": 45115,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "0b948d1e3406070bcf132d9d1fd65f61f9374ccd070d614a4841742e90f3731a",
          "order": [
            "vendor-remove-animations",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": null,
            "mobile": 5
          },
          "reason": "B gives the mobile Save specimen action a full-width button directly below the description, making it easier to find and target. B also pairs each desktop specimen with its details in one row, though A shows more specimens at once; neither shows save feedback or proves reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "305858a5abe63f8782f1770e92499ddba64191b340ccc390763af20e3b0dd8dd",
                "bytes": 72037,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "ceb38372a1e6939dfacc141e30ce5f53a6a962dfebb99457f38fee9b93ecd8af",
                "bytes": 45115,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        5,
        3
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 4,
        "type": 4,
        "spacing": 4,
        "color": 4,
        "copy": 4,
        "states": null,
        "mobile": 4
      }
    },
    {
      "id": "folio-project",
      "treatment": "vendor-review-animations",
      "command": "motion",
      "name": "review-animations",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Clarify which proof awaits approval and how its state changes when a client approves it, including a quiet path for reduced motion.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "1d3faa297cfc923a4ade6c765cdb5a146cb3b3c3858238c9b9d59d3d197489b5",
          "order": [
            "plain",
            "vendor-review-animations"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 2,
            "type": 3,
            "spacing": 4,
            "color": 4,
            "copy": 2,
            "states": 3,
            "mobile": 3
          },
          "reason": "A explicitly connects approval to Identity direction, version 02 and the Review-to-Approved change beside its action. B gives the proof more space and a cleaner mobile presentation, but shortens the approval status and separates the version from the proof heading. Neither shows a reduced-motion path or an approved result.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "a401ebdc37115f4021c7c4c6dadbe658d3848f15aab679a7f6018615cd8089a7",
                "bytes": 76385,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0fcfef29de46882a1d81671682eab46dce1fc7a0a01524c1c06ddee6530863fb",
                "bytes": 39559,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "1d3faa297cfc923a4ade6c765cdb5a146cb3b3c3858238c9b9d59d3d197489b5",
          "order": [
            "vendor-review-animations",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 6,
            "color": 4,
            "copy": 6,
            "states": 5,
            "mobile": 5
          },
          "reason": "B labels the proof as version 02 and explicitly connects approval to the change from Review to Approved, making the pending decision clearer. B also preserves a readable mobile title and status, though its taller proof card pushes the approval action farther down; neither A nor B visibly establishes a reduced-motion path.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "a401ebdc37115f4021c7c4c6dadbe658d3848f15aab679a7f6018615cd8089a7",
                "bytes": 76385,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "0fcfef29de46882a1d81671682eab46dce1fc7a0a01524c1c06ddee6530863fb",
                "bytes": 39559,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "c9ae616057f7ade2c6ad29f65cbbfc5e7428c71b5d5056a1c3fc94c2da4ae83f",
                "bytes": 75826,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "17e4ed240a74e579790c1069a946ae31dd063ee764a20bffa73ec09ee9508004",
                "bytes": 41097,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 4,
        "hierarchy": 2,
        "type": 3,
        "spacing": 3,
        "color": 4,
        "copy": 2,
        "states": 3,
        "mobile": 3
      }
    },
    {
      "id": "settings",
      "treatment": "vendor-state-machine",
      "command": "harden",
      "name": "state-machine",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Prepare the webhook preferences form for an operator who must recover after a failed save without losing their endpoint.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "b1662150aee4e3febf9d6b08d26e1636c41ac0540ce41113467f620f4d2aee19",
          "order": [
            "plain",
            "vendor-state-machine"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 4,
            "copy": 2,
            "states": 2,
            "mobile": 2
          },
          "reason": "A keeps the retained endpoint, failed-save explanation and Retry save action in a clear recovery flow, while B adds a detached Save failed control that competes with the form. B explicitly advises keeping the page open, but A preserves the notification explanation on mobile and gives the retry action clearer separation.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "92d165f79d81b73258753054457dc8730c0c2cdfc7576e2c930771458d8ebbf3",
                "bytes": 68802,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "d6ab1a6e6f12d0ef3ac5d883bc885490e0a30dc0c406512a6194add0ebbc7701",
                "bytes": 54806,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "b1662150aee4e3febf9d6b08d26e1636c41ac0540ce41113467f620f4d2aee19",
          "order": [
            "vendor-state-machine",
            "plain"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 5,
            "type": 5,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": 4,
            "mobile": 5
          },
          "reason": "B gives the notification checkbox a useful explanation and keeps the error, retained endpoint and Retry save action clearly grouped at both widths. A provides more specific recovery guidance with its keep-page-open note, but its additional Save failed indicator competes with the inline error, especially on mobile.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "92d165f79d81b73258753054457dc8730c0c2cdfc7576e2c930771458d8ebbf3",
                "bytes": 68802,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "d6ab1a6e6f12d0ef3ac5d883bc885490e0a30dc0c406512a6194add0ebbc7701",
                "bytes": 54806,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "2f6109dd13cf35572272b92c035d83e266251ef8b046cad5118bc8ef1ba7d8c7",
                "bytes": 68126,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "55604f42933ccbd893004c3941843029954cd440a708303c92c35c538b825711",
                "bytes": 57833,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        3
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 2.5,
        "type": 3,
        "spacing": 3,
        "color": 4,
        "copy": 3,
        "states": 3,
        "mobile": 2.5
      }
    },
    {
      "id": "pour-home",
      "treatment": "vendor-teardown",
      "command": "fix",
      "name": "teardown",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Finish a working brew calculator for someone weighing coffee at the counter. Preserve the actual brew recipe.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "30238b4fb336fba9afe66d3a93703ea967e44bdbde5127df211e4f5239f40cf9",
          "order": [
            "plain",
            "vendor-teardown"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 3,
            "hierarchy": 2,
            "type": 3,
            "spacing": 3,
            "color": 3,
            "copy": 2,
            "states": null,
            "mobile": 2
          },
          "reason": "A brings the dose control and pour profile higher on mobile and explains that water amounts are cumulative, useful when weighing each pour. B has a calmer visual hierarchy and larger recipe figures, but its taller headline delays the calculator and it omits A’s explicit instruction to keep the scale running.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "598ed5f5e89ec35c7067e6d4316019571b8d560e94fa2928223b53f82fccd4bb",
                "bytes": 90334,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8eea83a03847b7425abb372333bba2463dc62fcb3d387a1a44bde3f58bbd631f",
                "bytes": 50684,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "34ea159afc0e8697d192ae9e645da5c1488f5c9932c0fa3ef054340684e1cc86",
                "bytes": 86205,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2665d1b14f808e94b47fb69048003e1251514bec9159df196d4bdcb46a7e11e2",
                "bytes": 44558,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "30238b4fb336fba9afe66d3a93703ea967e44bdbde5127df211e4f5239f40cf9",
          "order": [
            "vendor-teardown",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 6,
            "type": 5,
            "spacing": 5,
            "color": 5,
            "copy": 6,
            "states": null,
            "mobile": 6
          },
          "reason": "B gives the dose selector a clear scale-related prompt and labels pour targets as scale readings while preserving the visible ratio, amounts and timings. B also brings the calculator higher on mobile with a shorter headline, though A’s quieter green chart feels more cohesive with its palette.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "34ea159afc0e8697d192ae9e645da5c1488f5c9932c0fa3ef054340684e1cc86",
                "bytes": 86205,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2665d1b14f808e94b47fb69048003e1251514bec9159df196d4bdcb46a7e11e2",
                "bytes": 44558,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "598ed5f5e89ec35c7067e6d4316019571b8d560e94fa2928223b53f82fccd4bb",
                "bytes": 90334,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8eea83a03847b7425abb372333bba2463dc62fcb3d387a1a44bde3f58bbd631f",
                "bytes": 50684,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "existing demo",
      "dimensions": {
        "genericSignals": 3,
        "hierarchy": 2,
        "type": 3,
        "spacing": 3,
        "color": 3,
        "copy": 2,
        "states": null,
        "mobile": 2
      }
    },
    {
      "id": "pricing",
      "treatment": "vendor-variant",
      "command": "landing",
      "name": "variant",
      "author": "Jakub Krehel",
      "repo": "jakubkrehel/skills",
      "revision": "60bf140e43c98b248e6594487384ec967e89d98a",
      "brief": "Help the owner of a newsletter choose the correct print subscription for their next issue. Keep the real prices and cutoffs.",
      "outcome": "loss",
      "verdict": "skip",
      "judgments": [
        {
          "fingerprint": "9ae68b8626d08c5238efcb587c558ac133441ca662fe7a4774488ccba56e2027",
          "order": [
            "plain",
            "vendor-variant"
          ],
          "preference": 2,
          "dimensions": {
            "genericSignals": 2,
            "hierarchy": 2,
            "type": 2,
            "spacing": 2,
            "color": 3,
            "copy": 2,
            "states": 5,
            "mobile": 2
          },
          "reason": "A groups the $18/$42 prices, 100/500-copy cutoffs and choice buttons into clear plan cards with precise eligibility copy. B adds a useful copy-count input and visible prompt, but its unrelated structure selector distracts from choosing a subscription and pushes the plans farther down on mobile.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "7486029a0688111a71990a83ae0d9e75c4a1e634dfce15a7ebee4ad30e1cca36",
                "bytes": 65574,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8d661804aba831a92919550da816aaea71914b76d3559036e203b56d4005e959",
                "bytes": 46235,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "64af5a46679269a84bea063f146fdd13a052b1fe852573e9f009bd5c1c1050f0",
                "bytes": 72580,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "acbc91dfb6f3830f399a36cb4d735b10101b9ba937dda8a37dc0cf59727e0c04",
                "bytes": 47405,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "9ae68b8626d08c5238efcb587c558ac133441ca662fe7a4774488ccba56e2027",
          "order": [
            "vendor-variant",
            "plain"
          ],
          "preference": 6,
          "dimensions": {
            "genericSignals": 6,
            "hierarchy": 6,
            "type": 6,
            "spacing": 6,
            "color": 5,
            "copy": 6,
            "states": 2,
            "mobile": 6
          },
          "reason": "B clearly pairs Fold’s $18 price and 100-copy cutoff with Spine’s $42 price and 101–500 range, making the choice direct. B also preserves a clearer mobile hierarchy; A offers useful copy-count guidance, but its structure selector distracts from choosing a subscription.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "64af5a46679269a84bea063f146fdd13a052b1fe852573e9f009bd5c1c1050f0",
                "bytes": 72580,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "acbc91dfb6f3830f399a36cb4d735b10101b9ba937dda8a37dc0cf59727e0c04",
                "bytes": 47405,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "7486029a0688111a71990a83ae0d9e75c4a1e634dfce15a7ebee4ad30e1cca36",
                "bytes": 65574,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "8d661804aba831a92919550da816aaea71914b76d3559036e203b56d4005e959",
                "bytes": 46235,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        2,
        2
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 2,
        "hierarchy": 2,
        "type": 2,
        "spacing": 2,
        "color": 3,
        "copy": 2,
        "states": 5.5,
        "mobile": 2
      }
    },
    {
      "id": "mobile-feed",
      "treatment": "vendor-write-swift",
      "command": "motion",
      "name": "write-swift",
      "author": "Emil Kowalski",
      "repo": "emilkowalski/skills",
      "revision": "f1090bec277140d02ed202440185ad9d02ac1490",
      "brief": "Improve reading and save feedback in a mobile typographic specimen feed. Keep the reading position stable.",
      "outcome": "win",
      "verdict": "keep",
      "judgments": [
        {
          "fingerprint": "347348175e2b92e854beab780cb1cc64e4a811210fb798e3cac9567b3883fec7",
          "order": [
            "plain",
            "vendor-write-swift"
          ],
          "preference": 5,
          "dimensions": {
            "genericSignals": 4,
            "hierarchy": 5,
            "type": 4,
            "spacing": 5,
            "color": 4,
            "copy": 4,
            "states": null,
            "mobile": 5
          },
          "reason": "B places specimen names above the letterforms and keeps the mobile save action fully visible, making browsing and saving easier to scan. A offers a larger mobile save target and more compact introduction, but neither A nor B shows save feedback or evidence that reading position stays stable.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "4d72afa029c6939ad3f9151293c9adfeb83d99a05dd33946a24e57b41c51e346",
                "bytes": 74581,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f5adcace5a990bde74657c19288cd6847bba11407aeb86287b2dfe37dfc4b31b",
                "bytes": 44648,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        },
        {
          "fingerprint": "347348175e2b92e854beab780cb1cc64e4a811210fb798e3cac9567b3883fec7",
          "order": [
            "vendor-write-swift",
            "plain"
          ],
          "preference": 3,
          "dimensions": {
            "genericSignals": 5,
            "hierarchy": 3,
            "type": 4,
            "spacing": 3,
            "color": 4,
            "copy": 3,
            "states": null,
            "mobile": 3
          },
          "reason": "A fits the specimen name, description and complete save control within the mobile view; B’s save control sits against the bottom edge. B offers a wider mobile save target and clearer category labeling, but A also exposes both specimens on desktop. Neither shows save feedback or establishes reading-position stability.",
          "images": {
            "A": {
              "desktop": {
                "sha256": "4d72afa029c6939ad3f9151293c9adfeb83d99a05dd33946a24e57b41c51e346",
                "bytes": 74581,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "f5adcace5a990bde74657c19288cd6847bba11407aeb86287b2dfe37dfc4b31b",
                "bytes": 44648,
                "width": 390,
                "height": 844
              }
            },
            "B": {
              "desktop": {
                "sha256": "71d878519fcad5ebc5fa22c56669f82a2a52a03635c721a47b9269282830e395",
                "bytes": 62099,
                "width": 1440,
                "height": 900
              },
              "mobile": {
                "sha256": "2f4a32e31f0d221189a1ceffa661d4277ae70a6ad66ac028431d1158259aaae1",
                "bytes": 42812,
                "width": 390,
                "height": 844
              }
            }
          },
          "provenance": {
            "backend": "codex",
            "model": "gpt-6.1-sol"
          },
          "imageReceipt": "post-run-snapshot"
        }
      ],
      "scores": [
        5,
        5
      ],
      "sourceGroup": "new screen",
      "dimensions": {
        "genericSignals": 3.5,
        "hierarchy": 5,
        "type": 4,
        "spacing": 5,
        "color": 4,
        "copy": 4.5,
        "states": null,
        "mobile": 5
      }
    }
  ]
}