{
  "protocol": "bare-vs-unvibed-fix-v1",
  "backend": "codex",
  "model": "gpt-6.1-sol",
  "kitSha256": "efb5a2d184cc87774abf0b8f169f47df239425944455dee92a0dcf43bb6b6b84",
  "cliSha256": "52e812f9d9b79479978503af0bf03c5ad77dfb13d3e9aff88e9884042627c4e6",
  "summary": {
    "pairs": 10,
    "completedPairs": 10,
    "wins": 4,
    "ties": 2,
    "losses": 4,
    "stops": {
      "blocked": 4,
      "regression": 5,
      "cap": 1
    },
    "paidSourceChanges": 5,
    "bareSourceChanges": 10,
    "meanPreference": 3.95,
    "bareChecksPassed": 14,
    "bareChecksTotal": 20,
    "paidChecksPassed": 20,
    "paidChecksTotal": 20,
    "dimensions": {
      "hierarchy": 4.2,
      "genericSignals": 2.3,
      "productSpecificity": 3.15,
      "typography": 2.85,
      "spacing": 4,
      "color": 2.85,
      "copy": 3.3,
      "states": 4.4,
      "mobile": 4.85,
      "distinctiveness": 3
    }
  },
  "clearWin": false,
  "criterion": {
    "domains": 10,
    "minimumStableWins": 7,
    "maximumStableLosses": 2,
    "minimumMeanPreference": 4.75,
    "requiredPaidChecks": 20
  },
  "domains": [
    {
      "id": "saas-dashboard",
      "label": "Studio billing dashboard",
      "route": "/dashboard",
      "task": "Identify the outstanding invoice and filter the ledger by period and status. Keep its exact invoice records and totals.",
      "outcome": "tie",
      "dimensions": {
        "hierarchy": 5,
        "genericSignals": 2,
        "productSpecificity": 3.5,
        "typography": 5,
        "spacing": 4.5,
        "color": 3,
        "copy": 3.5,
        "states": 5,
        "mobile": 5,
        "distinctiveness": 2
      },
      "scores": [
        3,
        4
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "September / Overdue shows zero invoice rows."
            },
            "mobile": {
              "passed": true,
              "observed": "September / Overdue shows zero invoice rows."
            }
          },
          "images": {
            "desktop": "/loop/saas-dashboard/bare/desktop.png",
            "mobile": "/loop/saas-dashboard/bare/mobile.png"
          },
          "hashes": {
            "desktop": "22a0fa810d7d92884b046a61ee251f7d30bf1ca97b7626710dfb7d374395c401",
            "mobile": "50d842001745626654dbf838d29491c5660e81ed7eed043ab4b7cb7391e7cfa4"
          }
        },
        "fix": {
          "changed": true,
          "rounds": 2,
          "cliStatus": "blocked",
          "reason": "blocked: No verified edit task; see the unverified checks in the audit.",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "September / Overdue shows zero invoice rows."
            },
            "mobile": {
              "passed": true,
              "observed": "September / Overdue shows zero invoice rows."
            }
          },
          "images": {
            "desktop": "/loop/saas-dashboard/fix/desktop.png",
            "mobile": "/loop/saas-dashboard/fix/mobile.png"
          },
          "hashes": {
            "desktop": "f4b07b92932c2cb8f076b99d25617b3dc298600b508c0b64584089d97984d485",
            "mobile": "3dbdde53c7fd6a79557ac4ecca88e9e96ccc9a8e8a6e9f1d6c3c7bb1d7ba1952"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 3,
          "dimensions": {
            "hierarchy": 5,
            "genericSignals": 2,
            "productSpecificity": 3,
            "typography": 5,
            "spacing": 4,
            "color": 3,
            "copy": 2,
            "states": 5,
            "mobile": 5,
            "distinctiveness": 2
          },
          "reason": "A narrowly wins through invoice-specific framing, restrained green styling and purposeful copy. Both preserve the displayed totals ($25,450 invoiced, $18,900 paid, $6,550 awaiting payment) and invoice records. B makes the ledger easier to scan with larger text, stronger amounts and a clearer red Overdue state for Dovetail’s $2,800 invoice; its phone view also shows all six records. A’s desktop table is excessively small and faint. Both successfully filter September / Overdue to zero rows on desktop and mobile, so behavior provides no advantage.",
          "cohortReason": "B closely repeats its cohort’s purple branding, pale backgrounds, outlined cards and generic dashboard treatment, although it avoids their promotional gradients and slogans. A shares its cohort’s muted colors, fine borders and generous whitespace, but its green financial summary, invoice terminology and ledger composition give this product a more specific identity. That advantage is modest because A’s cohort also repeatedly uses summary cards and spacious panels.",
          "displays": [
            "/loop/saas-dashboard/judge/ballot-1-desktop.png",
            "/loop/saas-dashboard/judge/ballot-1-mobile.png",
            "/loop/saas-dashboard/judge/cohort-bare.png",
            "/loop/saas-dashboard/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "9bbaf6beb49aaabb89ae3d3143196996baaa688491242b1b5f657a21747dc115",
            "23f813370511f46e5c38b91b7d0af7e37f6ea6c80fd36f2e3770518901e281b0",
            "0a11d55804db8bd86d1edba825ad9fce63bfb5fbcb99deecd309535e2edce440",
            "dbe5a5290d414c523cde71fb2743ae0847818e83797c2d0d500bfbca120ab660"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 4,
          "dimensions": {
            "hierarchy": 3,
            "genericSignals": 6,
            "productSpecificity": 4,
            "typography": 3,
            "spacing": 3,
            "color": 5,
            "copy": 3,
            "states": 3,
            "mobile": 3,
            "distinctiveness": 6
          },
          "reason": "A makes invoice review faster with larger ledger text, tighter spacing, clearer overdue contrast and all six records visible on the phone. B offers more deliberate branding and restrained color, but its large introduction and generous spacing push ledger content down; its small, muted labels weaken scanning. Both preserve the displayed totals and invoice details, expose period and status filters, and passed the verified September / Overdue empty-result interaction on desktop and mobile. Neither prominently surfaces the outstanding invoice. The period controls do not demonstrate the calibrated two-line comparison pattern.",
          "cohortReason": "A repeats its cohort’s purple branding, pale gray backgrounds, plain white cards and basic navigation across unrelated products. B shares muted cream and green tones, fine borders and quiet labels with its cohort, but the Tallybook mark, sans-serif financial presentation and ledger structure distinguish it from the editorial coffee and marketplace pages and the sidebar-heavy work tools. B has the stronger identity, while A retains better task density and legibility.",
          "displays": [
            "/loop/saas-dashboard/judge/ballot-2-desktop.png",
            "/loop/saas-dashboard/judge/ballot-2-mobile.png",
            "/loop/saas-dashboard/judge/cohort-fix.png",
            "/loop/saas-dashboard/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "a41bac74e8b346a82ce684bb2db1e8d4e90431318fff9b772b3630bb722b78c3",
            "b93067fea7dff1f4c97b027b7a880354f61d76dcb034f70144818e35146c00d8",
            "dbe5a5290d414c523cde71fb2743ae0847818e83797c2d0d500bfbca120ab660",
            "0a11d55804db8bd86d1edba825ad9fce63bfb5fbcb99deecd309535e2edce440"
          ]
        }
      ]
    },
    {
      "id": "client-portal",
      "label": "Design client portal",
      "route": "/projects",
      "task": "A client reviews the Atlas proof and finds the approval action. Preserve search, project detail and approval.",
      "outcome": "win",
      "dimensions": {
        "hierarchy": 3,
        "genericSignals": 2.5,
        "productSpecificity": 2,
        "typography": 2.5,
        "spacing": 3.5,
        "color": 2.5,
        "copy": 2.5,
        "states": 4.5,
        "mobile": 5,
        "distinctiveness": 2.5
      },
      "scores": [
        6,
        6
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": false,
              "observed": "Expected values to be strictly equal:\n\n1 !== 0\n"
            },
            "mobile": {
              "passed": false,
              "observed": "Expected values to be strictly equal:\n\n1 !== 0\n"
            }
          },
          "images": {
            "desktop": "/loop/client-portal/bare/desktop.png",
            "mobile": "/loop/client-portal/bare/mobile.png"
          },
          "hashes": {
            "desktop": "710f78e6c6a56ed78c9d96e51a140b287b950c486098e846034e6c1b775889e0",
            "mobile": "75efd9d180c331870d883efe5a7e87595c2a64027367e3ef2183c1f0193ac74c"
          }
        },
        "fix": {
          "changed": true,
          "rounds": 2,
          "cliStatus": "blocked",
          "reason": "blocked: No verified edit task; see the unverified checks in the audit.",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Search narrowed to Atlas. Approval survived reload."
            },
            "mobile": {
              "passed": true,
              "observed": "Search narrowed to Atlas. Approval survived reload."
            }
          },
          "images": {
            "desktop": "/loop/client-portal/fix/desktop.png",
            "mobile": "/loop/client-portal/fix/mobile.png"
          },
          "hashes": {
            "desktop": "46b44889aa5c3eb71239182c3a31295f2860f5566248a286962566bc311bd9a4",
            "mobile": "a2e8de373256e7544c41411c118d7bc39f7173cc903c625ddd4e9522854d3780"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 6,
          "dimensions": {
            "hierarchy": 3,
            "genericSignals": 2,
            "productSpecificity": 2,
            "typography": 2,
            "spacing": 3,
            "color": 2,
            "copy": 2,
            "states": 3,
            "mobile": 5,
            "distinctiveness": 2
          },
          "reason": "B wins overall because verified desktop and mobile actions confirm Atlas search and approval persistence after reload; A fails both checks. A provides stronger visual context through actual project artwork, review counts, an Atlas feedback notice and a visible review prompt. B's compact mobile cards keep all three projects and their statuses accessible, while A pushes project details below the fold. Neither render directly exposes an approval button, so successful behavior is decisive.",
          "cohortReason": "A shares its cohort's muted cream surfaces, restrained rules, editorial typography and small status accents, but the identity proofs, record artwork and studio sidebar give this product a recognizable purpose. B repeats its cohort's purple branding, pale lavender backgrounds, rounded white boxes and sparse layouts across unrelated domains. Its project names and statuses add specificity, but the composition remains broadly interchangeable.",
          "displays": [
            "/loop/client-portal/judge/ballot-1-desktop.png",
            "/loop/client-portal/judge/ballot-1-mobile.png",
            "/loop/client-portal/judge/cohort-bare.png",
            "/loop/client-portal/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "d33e0513b0dd49e9e2025050a7fe3f365d19fea4cdee3290238663614ff0c125",
            "67fb6d36df92e77fdbac32b4dbf55ae45c28c181fe04a0916dffaa735c27e63e",
            "0c07790376b1f48ffb91ca29c368dfff17187e5054585d86bc4693d3f5b85fe0",
            "f25f5b54bd6abe2e9107010ed502b44ff1aa5ec3364e5cd7b2c9d4d478a0c2de"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 2,
          "dimensions": {
            "hierarchy": 5,
            "genericSignals": 5,
            "productSpecificity": 6,
            "typography": 5,
            "spacing": 4,
            "color": 5,
            "copy": 5,
            "states": 2,
            "mobile": 3,
            "distinctiveness": 5
          },
          "reason": "A wins overall because search and persistent approval passed on desktop and mobile; B failed the protected checks on both, although the reported assertion does not identify the broken step. B better contextualizes Atlas with an actual proof preview, a feedback notice and a review count. Its desktop hierarchy feels considered, but the phone spends substantial space on introductory copy and summaries before reaching the proof. A exposes all three projects and their statuses immediately on mobile, though its small identity tiles provide little evidence for reviewing design work. Neither visible render establishes a prominent approval control.",
          "cohortReason": "A closely repeats its cohort’s purple accents, pale backgrounds, simple bordered cards and sparse layouts across unrelated domains. B supplies more relevant project artwork and editorial presentation, giving this portal greater specificity. However, its muted cream surfaces, restrained green accents, sidebar navigation, small labels and generous spacing recur across B’s billing, research, finance and fitness products, so its identity still partly reflects a shared house style.",
          "displays": [
            "/loop/client-portal/judge/ballot-2-desktop.png",
            "/loop/client-portal/judge/ballot-2-mobile.png",
            "/loop/client-portal/judge/cohort-fix.png",
            "/loop/client-portal/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "e97cbd3741eebcdc2783e73e686352d99a151a803c32d83090c9057c50e5ac45",
            "28ea63aea4d8d6c9345fbbe76e8b7cc08a82abca6794c63ea80d6ce20fbea2cc",
            "f25f5b54bd6abe2e9107010ed502b44ff1aa5ec3364e5cd7b2c9d4d478a0c2de",
            "0c07790376b1f48ffb91ca29c368dfff17187e5054585d86bc4693d3f5b85fe0"
          ]
        }
      ]
    },
    {
      "id": "landing",
      "label": "Coffee recipe calculator",
      "route": "/",
      "task": "A brewer adjusts the dose, reads the water targets and saves the recipe. Preserve the working calculator.",
      "outcome": "tie",
      "dimensions": {
        "hierarchy": 4.5,
        "genericSignals": 1.5,
        "productSpecificity": 3.5,
        "typography": 2,
        "spacing": 4.5,
        "color": 2.5,
        "copy": 2,
        "states": 4,
        "mobile": 6,
        "distinctiveness": 3.5
      },
      "scores": [
        2,
        5
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "18 g dose produced 288 g water and survived reload."
            },
            "mobile": {
              "passed": true,
              "observed": "18 g dose produced 288 g water and survived reload."
            }
          },
          "images": {
            "desktop": "/loop/landing/bare/desktop.png",
            "mobile": "/loop/landing/bare/mobile.png"
          },
          "hashes": {
            "desktop": "1bdffb4618651f50aeb4b5576ae60498fd176d20ab2362246a8a2ce70cc95094",
            "mobile": "4f6185eea3fd21c351db65483f7fe3b86ae8b0915c704dc22fdb27fdc33dd2b9"
          }
        },
        "fix": {
          "changed": false,
          "rounds": 1,
          "cliStatus": "regression",
          "reason": "regression: / · Landing message: C to Unverified",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "18 g dose produced 288 g water and survived reload."
            },
            "mobile": {
              "passed": true,
              "observed": "18 g dose produced 288 g water and survived reload."
            }
          },
          "images": {
            "desktop": "/loop/landing/fix/desktop.png",
            "mobile": "/loop/landing/fix/mobile.png"
          },
          "hashes": {
            "desktop": "aa258f23d1608e83d25a2a9bf5297009df9a04668de4bf48e181d1cdae2b309c",
            "mobile": "107bd8a5206b6136b7f38f7395e85b1636c7d7e1716db18c76c1a35e3f336f7a"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 2,
          "dimensions": {
            "hierarchy": 3,
            "genericSignals": 1,
            "productSpecificity": 2,
            "typography": 2,
            "spacing": 3,
            "color": 2,
            "copy": 1,
            "states": 4,
            "mobile": 6,
            "distinctiveness": 3
          },
          "reason": "A gives brewing a coherent identity through editorial typography, restrained rust accents, concrete brewing copy and a detailed recipe with ratio, total water, brew time and pour targets. B's vague transformation headline and large gradient hero weaken its product focus. Both calculators successfully turn 18 g into 288 g and preserve the saved result after reload on desktop and mobile. B has the stronger phone task layout: dose, targets and Save are visible together, while A's oversized headline pushes the calculator below the opening viewport. A wins overall for its more intentional, product-grounded desktop presentation, with a significant mobile hierarchy tradeoff.",
          "cohortReason": "A shares muted cream backgrounds, fine rules, small labels and editorial serif headings with its print marketplace, used-tools marketplace and rehearsal-booking peers, so its identity is not wholly unique. Its prominent brewing chart, numbered recipe and timed pours nevertheless give the composition a specific purpose. B repeats the lavender-pink gradient banners, purple buttons, centered promotional headings and generic white cards seen across its print, finance, marketplace and booking peers; its coffee page feels substantially more interchangeable.",
          "displays": [
            "/loop/landing/judge/ballot-1-desktop.png",
            "/loop/landing/judge/ballot-1-mobile.png",
            "/loop/landing/judge/cohort-bare.png",
            "/loop/landing/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "f8ddab66eab2b4f9d8009c1d95a65b536192e18c4719733b88510032bd7a9976",
            "ad649483141e7a029cab2178c8c8af94a2f3085f39564d8fbcd90bce4f4ea2a9",
            "641feabf339968a2f530ea6b6138c269aabb1716d9669983cc18da04fe029ff0",
            "8d57e01183e5a9851cf8f24b57e03afa68cfdd220adc2cbe9f7199e92eaf201b"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 3,
          "dimensions": {
            "hierarchy": 2,
            "genericSignals": 6,
            "productSpecificity": 3,
            "typography": 6,
            "spacing": 2,
            "color": 5,
            "copy": 5,
            "states": 4,
            "mobile": 2,
            "distinctiveness": 4
          },
          "reason": "A keeps the working recipe, water targets, dose selector and Save visible together on desktop and phone. B gives the desktop recipe more room and uses more intentional typography and brewing copy, but its oversized phone headline pushes the calculator below the visible screen, while a broken image occupies space. Both verified calculators update 18 g to 288 g and preserve the saved dose after reload, so behavior is tied. A narrowly wins for making the brewer’s next action accessible.",
          "cohortReason": "A repeats its cohort’s purple accents, pale gradients, centered promotional headings and white cards. B replaces those conventions but shares its own cohort’s cream backgrounds, muted olive and rust accents, fine rules, editorial typography and spacious promotional layouts, particularly the print exchange and used tools marketplace. B’s pour chart and recipe table provide useful product evidence, but neither arm establishes a clearly independent visual identity.",
          "displays": [
            "/loop/landing/judge/ballot-2-desktop.png",
            "/loop/landing/judge/ballot-2-mobile.png",
            "/loop/landing/judge/cohort-fix.png",
            "/loop/landing/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "4add9cb45d61ff9a4ecd73d1a29fa3a276b1def2da62b2b9cabb68780867463e",
            "5ed90f2755e712a77bb98be729319764813ad97392f7521ea321ed62c70787fa",
            "8d57e01183e5a9851cf8f24b57e03afa68cfdd220adc2cbe9f7199e92eaf201b",
            "641feabf339968a2f530ea6b6138c269aabb1716d9669983cc18da04fe029ff0"
          ]
        }
      ]
    },
    {
      "id": "ai-chat",
      "label": "Research conversation desk",
      "route": "/chat/field-notes",
      "task": "A researcher sends a follow-up about the source brief and reads the answer in context. Preserve the thread and its source records.",
      "outcome": "loss",
      "dimensions": {
        "hierarchy": 2,
        "genericSignals": 1.5,
        "productSpecificity": 3,
        "typography": 2,
        "spacing": 3,
        "color": 2.5,
        "copy": 3.5,
        "states": 4,
        "mobile": 2.5,
        "distinctiveness": 3
      },
      "scores": [
        2,
        2
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Sent a source question. The seeded answer survived reload."
            },
            "mobile": {
              "passed": true,
              "observed": "Sent a source question. The seeded answer survived reload."
            }
          },
          "images": {
            "desktop": "/loop/ai-chat/bare/desktop.png",
            "mobile": "/loop/ai-chat/bare/mobile.png"
          },
          "hashes": {
            "desktop": "f0072d92fd547328778220007dd6c80eeb52b203503706e0a26ca80e49ff3e77",
            "mobile": "9018bcea3a9450eaf8b31f22719d4b4154cfafcb1d92de1eaceb36d0f09938dd"
          }
        },
        "fix": {
          "changed": false,
          "rounds": 1,
          "cliStatus": "regression",
          "reason": "regression: desktop lost an enabled a /threads control or link.",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Sent a source question. The seeded answer survived reload."
            },
            "mobile": {
              "passed": true,
              "observed": "Sent a source question. The seeded answer survived reload."
            }
          },
          "images": {
            "desktop": "/loop/ai-chat/fix/desktop.png",
            "mobile": "/loop/ai-chat/fix/mobile.png"
          },
          "hashes": {
            "desktop": "14661e75071371a819aed1060f99ee7ff95c4aabae5629e0e5d5a26126c8bcd1",
            "mobile": "733512afe1d79d33ada83914607caaffd7f6d7014d8c52be0381be5c87b1a576"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 2,
          "dimensions": {
            "hierarchy": 2,
            "genericSignals": 1,
            "productSpecificity": 3,
            "typography": 2,
            "spacing": 3,
            "color": 2,
            "copy": 3,
            "states": 4,
            "mobile": 3,
            "distinctiveness": 3
          },
          "reason": "A gives the production thread a clearer hierarchy with restrained labels, editorial answer typography and a separated source reference. Its paper tones and compact navigation suit the print workspace. B preserves the same specific production facts and offers a more visibly bounded composer on desktop, but its large gradient title competes with the conversation. A's phone layout maintains readable spacing and context; B spends more space on the title and bold answer. Both verified sending and answer persistence on desktop and mobile, so behavior is tied.",
          "cohortReason": "B repeats its cohort's purple branding, pastel gradient banners, pale backgrounds and default white cards across finance, coffee, marketplace and booking products. A also shares its cohort's muted greens, serif headlines, fine borders and studio-style navigation, limiting its distinctiveness. However, its paper-like thread, typographic answer and source divider adapt that vocabulary more convincingly to this print-production conversation.",
          "displays": [
            "/loop/ai-chat/judge/ballot-1-desktop.png",
            "/loop/ai-chat/judge/ballot-1-mobile.png",
            "/loop/ai-chat/judge/cohort-bare.png",
            "/loop/ai-chat/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "fd37663644bf71106d7d8ac18c471ed01b79c2f913f13281abb994feb9b3e354",
            "0442640250eea8dde3f3c8cbc29ffaff5471f5baec0225b53e0761d0571fd99a",
            "89b5535388138322845e30b8fe541d21b7c87c9d70c31c0b241bea66ec8db580",
            "c5ac3d535dd5c8be2526fc288094b44b38fa46da10c900b0b7ff14b5cd164e3b"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 6,
          "dimensions": {
            "hierarchy": 6,
            "genericSignals": 6,
            "productSpecificity": 5,
            "typography": 6,
            "spacing": 5,
            "color": 5,
            "copy": 4,
            "states": 4,
            "mobile": 6,
            "distinctiveness": 5
          },
          "reason": "B gives the production thread a clearer editorial hierarchy, with readable serif answers, restrained metadata and a separated source citation. Its phone layout preserves comfortable text wrapping and navigation; A's bold answer and gradient title compete for attention. Both retain the same concrete binding checks and source record, and verified sending and reload persistence succeed on desktop and mobile. B's generous spacing pushes the composer farther below the conversation, limiting its advantage for follow-up work.",
          "cohortReason": "A repeats its cohort's purple accents, pastel gradient banners, pale backgrounds and rounded white cards across unrelated products. B also shares a cohort style, muted cream and sage, fine borders, small metadata and editorial typography, but its narrow thread column, conversation roles and production-source treatment adapt that vocabulary to this workspace. Its identity is more intentional, though not wholly independent of the cohort.",
          "displays": [
            "/loop/ai-chat/judge/ballot-2-desktop.png",
            "/loop/ai-chat/judge/ballot-2-mobile.png",
            "/loop/ai-chat/judge/cohort-fix.png",
            "/loop/ai-chat/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "7f64ff446bc8fa4afa8d52735acfc145b4439fa0ee04904f7680e7b5098ce2ec",
            "99e352df4e29cffe49f8ebbb3005d19ee2763ce572361820fe8cd188600886f0",
            "c5ac3d535dd5c8be2526fc288094b44b38fa46da10c900b0b7ff14b5cd164e3b",
            "89b5535388138322845e30b8fe541d21b7c87c9d70c31c0b241bea66ec8db580"
          ]
        }
      ]
    },
    {
      "id": "mobile-feed",
      "label": "Print exchange feed",
      "route": "/",
      "task": "A printmaker finds the Ink Lab entry, saves the post and sees it on their profile. Keep the real listings and routes.",
      "outcome": "loss",
      "dimensions": {
        "hierarchy": 2.5,
        "genericSignals": 1.5,
        "productSpecificity": 2,
        "typography": 2,
        "spacing": 3,
        "color": 2,
        "copy": 1.5,
        "states": 4,
        "mobile": 4,
        "distinctiveness": 2.5
      },
      "scores": [
        2,
        2
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Opened Ink Lab, saved it and located it on the profile."
            },
            "mobile": {
              "passed": true,
              "observed": "Opened Ink Lab, saved it and located it on the profile."
            }
          },
          "images": {
            "desktop": "/loop/mobile-feed/bare/desktop.png",
            "mobile": "/loop/mobile-feed/bare/mobile.png"
          },
          "hashes": {
            "desktop": "371274f12a3f42213c6e1cb17f081c1611c71ce420e43a2832ba27c5fcf3e7dd",
            "mobile": "94d6c2b4dab75ca43c983125f882d918c9a7f3821755ce8a6a1e3e35033314ce"
          }
        },
        "fix": {
          "changed": false,
          "rounds": 2,
          "cliStatus": "regression",
          "reason": "regression: / · Landing message: C to N/A",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Opened Ink Lab, saved it and located it on the profile."
            },
            "mobile": {
              "passed": true,
              "observed": "Opened Ink Lab, saved it and located it on the profile."
            }
          },
          "images": {
            "desktop": "/loop/mobile-feed/fix/desktop.png",
            "mobile": "/loop/mobile-feed/fix/mobile.png"
          },
          "hashes": {
            "desktop": "f6b18dbd3668817dd3c80041d36fcdd20f0b68edc5b16924c16fceaa018f3f75",
            "mobile": "9fd254b212159ac855d57e67ef21fd3d48987c13a07b204239469bd46560a558"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 2,
          "dimensions": {
            "hierarchy": 3,
            "genericSignals": 1,
            "productSpecificity": 2,
            "typography": 2,
            "spacing": 3,
            "color": 2,
            "copy": 1,
            "states": 4,
            "mobile": 3,
            "distinctiveness": 2
          },
          "reason": "Both interfaces successfully open Ink Lab, save it and show it on the profile on desktop and mobile. B makes Ink Lab and its Save print action immediately visible, while A's tall introduction delays listing details, especially on phone. A nevertheless provides a more coherent printmaking experience through process filters, studio language, paper tones, editorial typography and artwork presentation. B spends prominent space on generic creative-inspiration copy and a gradient banner. Both phone layouts remain readable; A adds useful search and filtering. Verified behavior is equal, and saved-state styling is not shown.",
          "cohortReason": "B closely repeats its cohort's purple branding, pastel gradient banners, centered promotional headings and default white cards across coffee, finance and marketplace products. A shares muted backgrounds, restrained navigation and editorial type with its cohort, especially the coffee calculator and used-tools marketplace, but its ink-red identity, paper artwork, print-process filters and press illustration adapt that vocabulary more specifically to printmaking.",
          "displays": [
            "/loop/mobile-feed/judge/ballot-1-desktop.png",
            "/loop/mobile-feed/judge/ballot-1-mobile.png",
            "/loop/mobile-feed/judge/cohort-bare.png",
            "/loop/mobile-feed/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "e17ca8d6cf007efb2bcd2c01ee2cd62fadb250feabcaa9d5dd76600e62c7b9dd",
            "1ec2b1286cfc3bb9d1b16f26f75e324c1388a1058b4a5326d5db4bfbb2fdf498",
            "70ab00a1a6430927f7f85d5068e7b6e4d9aae3fabb82793cf2d3990946e0d9b8",
            "6d8e14d109cc7b0a5d0346ed422c22b7840c190aa4c3e86c3a7cf2c1c43efd68"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 6,
          "dimensions": {
            "hierarchy": 6,
            "genericSignals": 6,
            "productSpecificity": 6,
            "typography": 6,
            "spacing": 5,
            "color": 6,
            "copy": 6,
            "states": 4,
            "mobile": 3,
            "distinctiveness": 5
          },
          "reason": "Both interfaces successfully support opening Ink Lab, saving it and finding it on the profile on desktop and mobile. B gives the print collection a clearer identity through paper textures, larger artwork, printing-process filters and specific editorial copy. A relies on a generic inspiration banner but exposes Ink Lab’s title and Save print action much earlier on mobile; B’s tall introduction pushes those details below the visible area. State styling beyond the verified successful behavior is not shown.",
          "cohortReason": "A closely repeats its cohort’s purple accents, pastel gradient banners, centered promotional copy and default cards, especially the coffee calculator and marketplace. B also shares its cohort’s warm neutral backgrounds, restrained navigation and spacious editorial structure. Its ink-orange identity, print-process navigation and paper-led artwork presentation provide some additional specificity, although the overall visual language remains recognizably shared.",
          "displays": [
            "/loop/mobile-feed/judge/ballot-2-desktop.png",
            "/loop/mobile-feed/judge/ballot-2-mobile.png",
            "/loop/mobile-feed/judge/cohort-fix.png",
            "/loop/mobile-feed/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "65b5d5ae669365a19c198dfb1d3f1a7dc8b0da055e9a79dd36080ddc46ddc343",
            "1b4d5dcf69e17af83c6e8a23e57c2c82a7d35fd94d930933cf2a5c8f79aebdc3",
            "6d8e14d109cc7b0a5d0346ed422c22b7840c190aa4c3e86c3a7cf2c1c43efd68",
            "70ab00a1a6430927f7f85d5068e7b6e4d9aae3fabb82793cf2d3990946e0d9b8"
          ]
        }
      ]
    },
    {
      "id": "fintech",
      "label": "Fintech settlements",
      "route": "/",
      "task": "A finance operator matches an unmatched payment to its bank deposit and confirms the remaining exception count.",
      "outcome": "loss",
      "dimensions": {
        "hierarchy": 1.5,
        "genericSignals": 1.5,
        "productSpecificity": 1.5,
        "typography": 2,
        "spacing": 2,
        "color": 2,
        "copy": 1.5,
        "states": 2,
        "mobile": 1.5,
        "distinctiveness": 3
      },
      "scores": [
        1,
        2
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "TX-091 matched bank deposit BNK-407."
            },
            "mobile": {
              "passed": true,
              "observed": "TX-091 matched bank deposit BNK-407."
            }
          },
          "images": {
            "desktop": "/loop/fintech/bare/desktop.png",
            "mobile": "/loop/fintech/bare/mobile.png"
          },
          "hashes": {
            "desktop": "b4151d72ef7f50f485572cb829770c41965f60d55638a079e6db7bfaf753a64f",
            "mobile": "69c46562d6817694d46ecf7c7868c4db992054f6eddc5720c17899712ee21774"
          }
        },
        "fix": {
          "changed": false,
          "rounds": 2,
          "cliStatus": "regression",
          "reason": "regression: / · Access and recovery: C to Unverified",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "TX-091 matched bank deposit BNK-407."
            },
            "mobile": {
              "passed": true,
              "observed": "TX-091 matched bank deposit BNK-407."
            }
          },
          "images": {
            "desktop": "/loop/fintech/fix/desktop.png",
            "mobile": "/loop/fintech/fix/mobile.png"
          },
          "hashes": {
            "desktop": "2a8dfcc1a449437baba7942b203a0c97d0a047a2f9768496f9dd24705d35dd2c",
            "mobile": "f6889536c938b51969664d0063b83bf3f57e63998a1aea294b66340db4a53255"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 1,
          "dimensions": {
            "hierarchy": 1,
            "genericSignals": 1,
            "productSpecificity": 1,
            "typography": 2,
            "spacing": 2,
            "color": 2,
            "copy": 1,
            "states": 2,
            "mobile": 1,
            "distinctiveness": 2
          },
          "reason": "Both arms verifiably match TX-091 to BNK-407 on desktop and mobile. A better supports the operator’s decision with matched progress, the remaining exception count, $1,840 awaiting reconciliation, and a deposit panel identifying the suggested payment and confidence. B presents the essential records and action, but spends prominent space on a generic finance slogan and gradient hero. A’s phone layout adapts the metrics into compact rows; B’s payment table visibly overflows the viewport. A’s desktop secondary text is quite small, and neither supplied render establishes the exception count after matching.",
          "cohortReason": "A shares muted surfaces, restrained green accents, compact navigation and editorial spacing with its billing, research and training peers, but its reconciliation progress, exception prompt and adjacent deposit-matching panel give the target a specific working composition. B repeats the purple branding, pastel gradient banner, centered promotional copy and sparse white cards seen across its coffee, print and marketplace peers; those patterns contribute little to this finance task.",
          "displays": [
            "/loop/fintech/judge/ballot-1-desktop.png",
            "/loop/fintech/judge/ballot-1-mobile.png",
            "/loop/fintech/judge/cohort-bare.png",
            "/loop/fintech/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "7506e3dcccc0706c50885fed78efed547d02d000a3361cc7d1f973469e1ceada",
            "1d386be02ece852ddd08a55171e1702560b7ac5949663471cf6ee51cc3af9706",
            "c18de668afd97612b9c65c76164e298403c33c8fee374aaf3aae5fc2a6f078c6",
            "85aef84eb42278c865197f422e99b330c2497a0f059631550f813bd3194abcba"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 6,
          "dimensions": {
            "hierarchy": 6,
            "genericSignals": 6,
            "productSpecificity": 6,
            "typography": 6,
            "spacing": 6,
            "color": 6,
            "copy": 6,
            "states": 6,
            "mobile": 6,
            "distinctiveness": 4
          },
          "reason": "Both arms successfully matched TX-091 to BNK-407 on desktop and mobile. B makes reconciliation clearer through a deposit detail panel, the suggested payment match, a prominent matching action, and matched/unmatched counts. A spends substantial space on a generic gradient welcome banner. B uses restrained status colors and stronger information hierarchy; its phone summary cards fit cleanly, while A's payment table clips horizontally. B's mobile working action remains below the visible area, and neither render verifies the remaining exception count after matching.",
          "cohortReason": "A repeats its cohort's purple branding, pale gradient hero, centered promotional copy and basic white cards. B also shares a recognizable cohort style: warm neutral backgrounds, muted green accents, small uppercase labels, editorial headings and sidebar layouts resembling the billing, research and training products. B's reconciliation workspace is more tailored to finance, but its overall visual identity remains strongly shared with its cohort, so distinctiveness is tied.",
          "displays": [
            "/loop/fintech/judge/ballot-2-desktop.png",
            "/loop/fintech/judge/ballot-2-mobile.png",
            "/loop/fintech/judge/cohort-fix.png",
            "/loop/fintech/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "fc278a0b7e1355a36c235aa91b8309d79342dcf6de214efc912dbee9d63119dc",
            "0252a8103e6f2c6156fc389c431e24df9be68360e83d7b3abc21a8f8b18f0de9",
            "85aef84eb42278c865197f422e99b330c2497a0f059631550f813bd3194abcba",
            "c18de668afd97612b9c65c76164e298403c33c8fee374aaf3aae5fc2a6f078c6"
          ]
        }
      ]
    },
    {
      "id": "fitness",
      "label": "Strength training log",
      "route": "/",
      "task": "A lifter records the next completed set and sees how many of today’s prescribed sets remain.",
      "outcome": "win",
      "dimensions": {
        "hierarchy": 6,
        "genericSignals": 3.5,
        "productSpecificity": 3,
        "typography": 3,
        "spacing": 5.5,
        "color": 3.5,
        "copy": 5.5,
        "states": 3.5,
        "mobile": 6,
        "distinctiveness": 3
      },
      "scores": [
        5,
        5
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Logging a set advanced the front squat from two to three of four."
            },
            "mobile": {
              "passed": true,
              "observed": "Logging a set advanced the front squat from two to three of four."
            }
          },
          "images": {
            "desktop": "/loop/fitness/bare/desktop.png",
            "mobile": "/loop/fitness/bare/mobile.png"
          },
          "hashes": {
            "desktop": "63de690d4a9643e2c4b980d22480eb7629163077343b972b21a6457768a95183",
            "mobile": "636b961dee6678e4a4e7324ffad374e6b713b054665e6d942850ea029fd5e5a2"
          }
        },
        "fix": {
          "changed": true,
          "rounds": 2,
          "cliStatus": "blocked",
          "reason": "blocked: No verified edit task; see the unverified checks in the audit.",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Logging a set advanced the front squat from two to three of four."
            },
            "mobile": {
              "passed": true,
              "observed": "Logging a set advanced the front squat from two to three of four."
            }
          },
          "images": {
            "desktop": "/loop/fitness/fix/desktop.png",
            "mobile": "/loop/fitness/fix/mobile.png"
          },
          "hashes": {
            "desktop": "2a7d5774e585f05cb47abea19f45f23c0124a318c61475c4a17e6e724658e03b",
            "mobile": "32f8bc78e201db5cc0ef2f4fc01ef452d88633ec032142b3b25d08afba4fe866"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 5,
          "dimensions": {
            "hierarchy": 6,
            "genericSignals": 2,
            "productSpecificity": 3,
            "typography": 3,
            "spacing": 5,
            "color": 3,
            "copy": 5,
            "states": 4,
            "mobile": 6,
            "distinctiveness": 2
          },
          "reason": "B makes the next action immediately clear: front squat, 2 of 4 sets complete, and a prominent logging button remain readable on desktop and phone. A provides richer workout evidence through set markers, session totals and exercise illustrations, but its compact text and lower mobile action placement slow the immediate task. Both verified interactions advance completion from two to three sets. Neither phone view clearly states the total prescribed sets remaining today.",
          "cohortReason": "B repeats its cohort’s purple branding, pale backgrounds, rounded white cards and sparse layouts, though its current-exercise emphasis is useful and product-specific. A shares its cohort’s muted greens, fine borders, sidebar navigation and editorial dashboard styling, but exercise illustrations, set-level controls and workout progress give it a more distinct identity within that shared system.",
          "displays": [
            "/loop/fitness/judge/ballot-1-desktop.png",
            "/loop/fitness/judge/ballot-1-mobile.png",
            "/loop/fitness/judge/cohort-bare.png",
            "/loop/fitness/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "f95ef5b3a4f5b6257ba4805537070e38a3a760b5feb1f5206249e0df3c1f83be",
            "08e2c404edd22c39893f8589227089217009ad1f89cce84d712c3419f5659319",
            "45efc25edf01dad96af01ddd3bda04e92dc0c84aea3fcf2e8614cdbdb4ef13a1",
            "1a68eb9f26afea6cc04dafbf8d63c298e72f86ca5ea13fc9aaec97286b33ebc9"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 3,
          "dimensions": {
            "hierarchy": 2,
            "genericSignals": 3,
            "productSpecificity": 5,
            "typography": 5,
            "spacing": 2,
            "color": 4,
            "copy": 2,
            "states": 5,
            "mobile": 2,
            "distinctiveness": 4
          },
          "reason": "A puts the current exercise, prescription, completed count and explicit “Log completed set” action first on both screens. B adds useful workout totals, set markers and a session summary, but its motivational heading, metrics and calendar push the working action far down the phone screen; its desktop summary is also small. Both verified interactions advance front squat from two to three of four. B has more refined typography and richer progress evidence, while A better supports the immediate logging task.",
          "cohortReason": "A repeats its cohort’s purple accents, pale backgrounds, simple white panels and sparse layouts. B repeats its cohort’s warm neutral surfaces, olive accents, compact navigation, editorial headings and bordered modules. B’s exercise illustrations, prescription groups and set markers give those shared conventions useful lifting-specific meaning; A’s focused current-exercise treatment also fits the task. Neither establishes a clearly stronger identity independent of its cohort.",
          "displays": [
            "/loop/fitness/judge/ballot-2-desktop.png",
            "/loop/fitness/judge/ballot-2-mobile.png",
            "/loop/fitness/judge/cohort-fix.png",
            "/loop/fitness/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "6ce926c368a573da6bf3e8c9eb583bfaafa36495d4e43f7d20d32c67536f2b99",
            "31fa5974f610724e63ae688bd971157f5e9bced47471b99a96223ee7b868f412",
            "1a68eb9f26afea6cc04dafbf8d63c298e72f86ca5ea13fc9aaec97286b33ebc9",
            "45efc25edf01dad96af01ddd3bda04e92dc0c84aea3fcf2e8614cdbdb4ef13a1"
          ]
        }
      ]
    },
    {
      "id": "docs",
      "label": "Developer tool documentation",
      "route": "/",
      "task": "A maintainer finds the correct install and health-check commands for their package manager.",
      "outcome": "win",
      "dimensions": {
        "hierarchy": 7,
        "genericSignals": 5,
        "productSpecificity": 7,
        "typography": 7,
        "spacing": 7,
        "color": 6,
        "copy": 7,
        "states": 7,
        "mobile": 7,
        "distinctiveness": 5
      },
      "scores": [
        7,
        7
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed; final route returned HTTP 500",
          "checks": {
            "desktop": {
              "passed": false,
              "observed": "Target route returned HTTP 500"
            },
            "mobile": {
              "passed": false,
              "observed": "Target route returned HTTP 500"
            }
          },
          "images": {
            "desktop": "/loop/docs/bare/desktop.png",
            "mobile": "/loop/docs/bare/mobile.png"
          },
          "hashes": {
            "desktop": "99db2a93b06fa1bf617f5c495e02dcf6c0b76961108491217e2cf4fed8699d35",
            "mobile": "fb32313e11bc8ffbd5310a1660e630b64cedb4622f8462a5eae2d5464ac8279e"
          }
        },
        "fix": {
          "changed": true,
          "rounds": 2,
          "cliStatus": "blocked",
          "reason": "blocked: No verified edit task; see the unverified checks in the audit.",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Selecting pnpm displayed the correct install command."
            },
            "mobile": {
              "passed": true,
              "observed": "Selecting pnpm displayed the correct install command."
            }
          },
          "images": {
            "desktop": "/loop/docs/fix/desktop.png",
            "mobile": "/loop/docs/fix/mobile.png"
          },
          "hashes": {
            "desktop": "4a01ac35850eeff6503777cfd3bff74c5ee75b0ec4d8088aff00b1400e9d9035",
            "mobile": "a51ce2e0466464a343231be48989b8af1447fa1c798b5eda3cbad322f5e4b51d"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 7,
          "dimensions": {
            "hierarchy": 7,
            "genericSignals": 4,
            "productSpecificity": 7,
            "typography": 7,
            "spacing": 7,
            "color": 6,
            "copy": 7,
            "states": 7,
            "mobile": 7,
            "distinctiveness": 5
          },
          "reason": "A is blank on desktop and phone, with verified HTTP 500 failures. B presents a clear install-then-check sequence, package-manager selector, Node 22 requirement, doctor command and exit-code guidance. Selecting pnpm produced the correct install command on both sizes. Its phone layout remains readable and usable, though the desktop composition is sparse and visually basic.",
          "cohortReason": "B repeats its cohort’s purple branding, pale background, centered header and rounded white panels. Its compact documentation flow, command blocks and concrete diagnostic guidance provide some product-specific differentiation from the cohort’s promotional banners and card grids. A’s blank render provides no assessable identity to compare with its cohort’s denser, editorial interfaces.",
          "displays": [
            "/loop/docs/judge/ballot-1-desktop.png",
            "/loop/docs/judge/ballot-1-mobile.png",
            "/loop/docs/judge/cohort-bare.png",
            "/loop/docs/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "d4eb6de984913c3088b6426d78cbb419e19921a567527ea4ccd87e6bfa1da233",
            "887a33e70636d856ad069db98ac1a473c80eb1ea02fc4e0faf20924ff8c8318b",
            "f1aef9d8830e7551a095ad0e23cb522582782d45d23bc101316a2b4fffeed609",
            "64f23a0f41dbddfac676c1498a0d1436bd0f63a63f244c1e933774414bf17ead"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 1,
          "dimensions": {
            "hierarchy": 1,
            "genericSignals": 2,
            "productSpecificity": 1,
            "typography": 1,
            "spacing": 1,
            "color": 2,
            "copy": 1,
            "states": 1,
            "mobile": 1,
            "distinctiveness": 3
          },
          "reason": "A presents a clear install-then-check sequence, a package-manager selector, concrete commands, Node 22 requirements and exit-code guidance. Its phone layout remains readable and usable, and selecting pnpm produced the correct command on both viewports. B renders blank and its route returned HTTP 500, preventing the task entirely. A’s styling is basic, but its working actions and relevant instructions are prominent.",
          "cohortReason": "A repeats its cohort’s purple headings, pale background, rounded white cards and simple command panels; its identity is therefore only modestly distinctive, though the compact documentation sequence fits this product. B’s cohort shows more varied editorial typography, muted palettes and domain-specific layouts, but none of that is visible in B’s blank target. Blankness provides no evidence of a distinctive product design.",
          "displays": [
            "/loop/docs/judge/ballot-2-desktop.png",
            "/loop/docs/judge/ballot-2-mobile.png",
            "/loop/docs/judge/cohort-fix.png",
            "/loop/docs/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "6d7690081a0202cdb58ab4dcbcb9b6f59e030b15836835e6baab4fa02dbd2677",
            "ef11b1c1d2c6033b2bd622427bccbfb86023ce9c53466464bf9a5a1e5f24aeeb",
            "64f23a0f41dbddfac676c1498a0d1436bd0f63a63f244c1e933774414bf17ead",
            "f1aef9d8830e7551a095ad0e23cb522582782d45d23bc101316a2b4fffeed609"
          ]
        }
      ]
    },
    {
      "id": "marketplace",
      "label": "Used tools marketplace",
      "route": "/",
      "task": "A bookbinder saves an inspected listing to their shortlist and checks the pickup terms.",
      "outcome": "loss",
      "dimensions": {
        "hierarchy": 5,
        "genericSignals": 1.5,
        "productSpecificity": 3,
        "typography": 1,
        "spacing": 3,
        "color": 2,
        "copy": 2,
        "states": 4,
        "mobile": 5,
        "distinctiveness": 3
      },
      "scores": [
        3,
        3
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "The Adana chase entered the shortlist and the control marked it saved."
            },
            "mobile": {
              "passed": true,
              "observed": "The Adana chase entered the shortlist and the control marked it saved."
            }
          },
          "images": {
            "desktop": "/loop/marketplace/bare/desktop.png",
            "mobile": "/loop/marketplace/bare/mobile.png"
          },
          "hashes": {
            "desktop": "4c34df69da3ef922198655fd07c7c76abd6c8d70f27f4518fe28425d5e212c37",
            "mobile": "1cb6cf98898918bf174038bd7340e6a4379b0e0d2c2ec5047d1d9f9b76de8c0d"
          }
        },
        "fix": {
          "changed": false,
          "rounds": 1,
          "cliStatus": "regression",
          "reason": "regression: / · Landing message: C to N/A",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "The Adana chase entered the shortlist and the control marked it saved."
            },
            "mobile": {
              "passed": true,
              "observed": "The Adana chase entered the shortlist and the control marked it saved."
            }
          },
          "images": {
            "desktop": "/loop/marketplace/fix/desktop.png",
            "mobile": "/loop/marketplace/fix/mobile.png"
          },
          "hashes": {
            "desktop": "d48ac9aa87b6cd538a0c0a43a448ec3c39452d411a4b6ac3d669b953ef4417ac",
            "mobile": "0210c1e470a6526a05c884da9e7d7495e689e9b09fc574092d050ddbd29878cf"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 3,
          "dimensions": {
            "hierarchy": 5,
            "genericSignals": 1,
            "productSpecificity": 3,
            "typography": 1,
            "spacing": 3,
            "color": 2,
            "copy": 2,
            "states": 4,
            "mobile": 5,
            "distinctiveness": 3
          },
          "reason": "A has more intentional typography, restrained color and craft-specific language, but its oversized hero delays the listing decision, especially on mobile, and its hero image is broken. B exposes the Adana chase price, dimensions, location, inspection note and save action much sooner; the neighboring press also shows a collection deadline. Its generic promotional banner adds little. Verified saving and saved feedback succeed equally on both devices.",
          "cohortReason": "B closely repeats its cohort’s purple branding, pastel gradient banners, centered promotional headings and white rounded cards across unrelated domains. A also shares its cohort’s cream surfaces, muted green accents, editorial headings, fine rules and spacious layouts; its craft identity is therefore only moderately distinctive, though the secondhand-tool language and workshop framing give it more product character.",
          "displays": [
            "/loop/marketplace/judge/ballot-1-desktop.png",
            "/loop/marketplace/judge/ballot-1-mobile.png",
            "/loop/marketplace/judge/cohort-bare.png",
            "/loop/marketplace/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "70b3453ba76505100384fe57dfa55dd8b01bcb32cd1166926134a403fd45502d",
            "c106ea30c62a6471f14daa019e0c781574990e3e8f81aac4c1b5210521b5f394",
            "e205f74fa64080cc8f4f70c8842b56f277c42a40e5c94598b0232686562030a7",
            "5eda27301815ae6f2cc48c1515e39717a0b841e253c1aed9f34f781ef44a9e26"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 5,
          "dimensions": {
            "hierarchy": 3,
            "genericSignals": 6,
            "productSpecificity": 5,
            "typography": 7,
            "spacing": 5,
            "color": 6,
            "copy": 6,
            "states": 4,
            "mobile": 3,
            "distinctiveness": 5
          },
          "reason": "B gives the marketplace a coherent bookbinding identity through editorial typography, workshop language and equipment filters. A makes the actual task easier to discover: the inspected Adana chase, price, location and save action appear immediately, including on phone. B's oversized mobile introduction pushes listings below the fold, and its broken hero image weakens product evidence. Both verified save interactions succeed; neither render clearly establishes pickup terms for the Adana chase beyond local pickup and location.",
          "cohortReason": "A closely repeats its cohort's purple accents, pale gradient banners, centered promotional copy and default cards. B improves specificity, but shares cream backgrounds, muted olive accents, fine rules and editorial layouts with its own cohort, particularly the coffee calculator and print exchange. Its identity is more considered, though still recognizably part of a house style.",
          "displays": [
            "/loop/marketplace/judge/ballot-2-desktop.png",
            "/loop/marketplace/judge/ballot-2-mobile.png",
            "/loop/marketplace/judge/cohort-fix.png",
            "/loop/marketplace/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "d1e1f1616834eb438406e1e00a8294002ebb4c9740501d9c9566798ce10e0d36",
            "0ce131643fb0b712d212a2ec6fb1e291dbb2de7ee581a8c370240fa046914c6d",
            "5eda27301815ae6f2cc48c1515e39717a0b841e253c1aed9f34f781ef44a9e26",
            "e205f74fa64080cc8f4f70c8842b56f277c42a40e5c94598b0232686562030a7"
          ]
        }
      ]
    },
    {
      "id": "booking",
      "label": "Rehearsal booking",
      "route": "/",
      "task": "A quartet selects an available rehearsal time and confirms its booked slot. A full slot cannot be booked.",
      "outcome": "win",
      "dimensions": {
        "hierarchy": 5.5,
        "genericSignals": 2.5,
        "productSpecificity": 3,
        "typography": 2,
        "spacing": 4,
        "color": 2.5,
        "copy": 4,
        "states": 6,
        "mobile": 6.5,
        "distinctiveness": 2.5
      },
      "scores": [
        6,
        6
      ],
      "arms": {
        "bare": {
          "changed": true,
          "rounds": 1,
          "reason": "One request completed",
          "checks": {
            "desktop": {
              "passed": false,
              "observed": "locator.isDisabled: Timeout 3500ms exceeded.\nCall log:\n  - waiting for locator('#slot option[value=\"09:00\"]')\n"
            },
            "mobile": {
              "passed": false,
              "observed": "locator.isDisabled: Timeout 3500ms exceeded.\nCall log:\n  - waiting for locator('#slot option[value=\"09:00\"]')\n"
            }
          },
          "images": {
            "desktop": "/loop/booking/bare/desktop.png",
            "mobile": "/loop/booking/bare/mobile.png"
          },
          "hashes": {
            "desktop": "a461c3265e1cbd83f28f4545d2925d48a5d2085db0d3e6fb74a45a367be9503b",
            "mobile": "f8686b8f51eb95e60731a463680661447b416ad2b27935dca165eb6d575d3319"
          }
        },
        "fix": {
          "changed": true,
          "rounds": 3,
          "cliStatus": "cap",
          "reason": "cap: Three rounds completed; inspect unresolved grades.",
          "checks": {
            "desktop": {
              "passed": true,
              "observed": "Full slot disabled. Room B booked at 14:00."
            },
            "mobile": {
              "passed": true,
              "observed": "Full slot disabled. Room B booked at 14:00."
            }
          },
          "images": {
            "desktop": "/loop/booking/fix/desktop.png",
            "mobile": "/loop/booking/fix/mobile.png"
          },
          "hashes": {
            "desktop": "16411d46ab1ab6b4fc21003ccd594de2e8949a68f0f102188a6f911065d0c7de",
            "mobile": "6f512a9647f50703b8ca6785ab0330ae3e20de6d46c2208b8fa538fc99653ddf"
          }
        }
      },
      "ballots": [
        {
          "order": [
            "bare",
            "fix"
          ],
          "preference": 6,
          "dimensions": {
            "hierarchy": 5,
            "genericSignals": 2,
            "productSpecificity": 3,
            "typography": 2,
            "spacing": 3,
            "color": 2,
            "copy": 3,
            "states": 6,
            "mobile": 6,
            "distinctiveness": 2
          },
          "reason": "B makes selecting a time and reserving the room immediately accessible on desktop and phone; verified actions confirm that full slots are disabled and booking at 14:00 succeeds. A has more intentional typography, room details, capacity, pricing and visible time states, but its booking controls fall below the captured phone viewport and successful booking was not verified. A's failed locator alone does not prove its full slot is bookable.",
          "cohortReason": "A shares its cohort's muted cream and green palette, editorial headings, small uppercase labels and fine dividers, but adapts them with room imagery and a detailed scheduling panel. B closely repeats its cohort's purple branding, pale backgrounds, white cards and simple headings; its practical booking form supplies product relevance but little distinct identity.",
          "displays": [
            "/loop/booking/judge/ballot-1-desktop.png",
            "/loop/booking/judge/ballot-1-mobile.png",
            "/loop/booking/judge/cohort-bare.png",
            "/loop/booking/judge/cohort-fix.png"
          ],
          "imageHashes": [
            "d3db6542bcca13b554d50982384882470346d4753a09a0fea38a29c15db1f97a",
            "fa0728bf1861b01fa664589276d9aa6df270152098c372882e65bded66447a8a",
            "92bb9c69eb8b7d04f7194df817678dd2c2cef44a9596a2b9f295ff189d49cee5",
            "785d5332fed99af10701909f31c6d0371d74e8f1711b29742acc5b50feedac64"
          ]
        },
        {
          "order": [
            "fix",
            "bare"
          ],
          "preference": 2,
          "dimensions": {
            "hierarchy": 2,
            "genericSignals": 5,
            "productSpecificity": 5,
            "typography": 6,
            "spacing": 3,
            "color": 5,
            "copy": 3,
            "states": 2,
            "mobile": 1,
            "distinctiveness": 5
          },
          "reason": "A puts the date, capacity, piano, price, time selector and Reserve room action together on both screens; verified actions confirm that full slots are disabled and 14:00 can be booked. B offers clearer visible availability states and richer room context, with more deliberate typography, but its large broken hero image displaces the booking flow, which is absent from the supplied phone viewport. B's verification timed out on a selector, leaving booking behavior unconfirmed rather than proving it broken. A better supports the immediate task.",
          "cohortReason": "A repeats its cohort's purple headings, pale backgrounds, bordered white panels and compact default controls. B follows its cohort's muted cream-and-green palette, small uppercase labels, editorial headings and spacious layouts. Its room amenities and date/time controls provide useful product specificity, although the large promotional hero and aspirational copy resemble the coffee, print and marketplace compositions.",
          "displays": [
            "/loop/booking/judge/ballot-2-desktop.png",
            "/loop/booking/judge/ballot-2-mobile.png",
            "/loop/booking/judge/cohort-fix.png",
            "/loop/booking/judge/cohort-bare.png"
          ],
          "imageHashes": [
            "87f067517eb4620182d0789ddd24febc8fd5685bb3dc810d8126b771d5c8eeed",
            "df759da5adc9ba28d7bda65941390c7356d50db10268210e1481ebdbec196df1",
            "785d5332fed99af10701909f31c6d0371d74e8f1711b29742acc5b50feedac64",
            "92bb9c69eb8b7d04f7194df817678dd2c2cef44a9596a2b9f295ff189d49cee5"
          ]
        }
      ]
    }
  ],
  "exploratory": [
    {
      "id": "client-portal",
      "condition": "bare",
      "role": "exploratory-only",
      "checks": {
        "desktop": {
          "passed": true,
          "observed": "A no-match search reduced visible Atlas links. Searching Atlas restored the match, and approval survived reload."
        },
        "mobile": {
          "passed": true,
          "observed": "A no-match search reduced visible Atlas links. Searching Atlas restored the match, and approval survived reload."
        }
      },
      "receipt": "/loop/exploratory/client-portal/bare/result.json"
    },
    {
      "id": "client-portal",
      "condition": "fix",
      "role": "exploratory-only",
      "checks": {
        "desktop": {
          "passed": true,
          "observed": "A no-match search reduced visible Atlas links. Searching Atlas restored the match, and approval survived reload."
        },
        "mobile": {
          "passed": true,
          "observed": "A no-match search reduced visible Atlas links. Searching Atlas restored the match, and approval survived reload."
        }
      },
      "receipt": "/loop/exploratory/client-portal/fix/result.json"
    },
    {
      "id": "booking",
      "condition": "bare",
      "role": "exploratory-only",
      "checks": {
        "desktop": {
          "passed": true,
          "observed": "09:00 was unavailable. Selected 14:00, reserved, and observed a 14:00 confirmation."
        },
        "mobile": {
          "passed": true,
          "observed": "09:00 was unavailable. Selected 14:00, reserved, and observed a 14:00 confirmation."
        }
      },
      "receipt": "/loop/exploratory/booking/bare/result.json"
    },
    {
      "id": "booking",
      "condition": "fix",
      "role": "exploratory-only",
      "checks": {
        "desktop": {
          "passed": true,
          "observed": "09:00 was unavailable. Selected 14:00, reserved, and observed a 14:00 confirmation."
        },
        "mobile": {
          "passed": true,
          "observed": "09:00 was unavailable. Selected 14:00, reserved, and observed a 14:00 confirmation."
        }
      },
      "receipt": "/loop/exploratory/booking/fix/result.json"
    }
  ]
}
