{"componentChunkName":"component---src-templates-blog-post-js","path":"/trunk-quarantining/","result":{"data":{"markdownRemark":{"html":"<p>\n<strong>Role:</strong> Senior Product Designer (generative research, IA, interaction design, usability testing)\n<strong>Team:</strong> PM, Engineer, Product Designer (me)\n<strong>Timeline:</strong> 8 weeks; shipped Q2 2025\n<strong>Platform:</strong> Trunk Flaky Tests — a CI tool that detects and quarantines unreliable tests</p>\n<h2>TL;DR</h2>\n<p>At Trunk, we introduced a paid feature called Quarantining, and usage numbers weren't as high as we predicted. To investigate the reason, I conducted user interviews, competitive analysis, and three rounds of usability testing and discovered several critical usability issues.</p>\n<p>I redesigned the quarantine feature with increased visibility, a simplified mental model, and a way for users to save and view why the status changed. My designs shipped to production and passed customer usability tests, ensuring that usability issues were no longer a barrier to feature usage.</p>\n<p><a href=\"https://www.figma.com/proto/83LQuuuuvAgFsw9J2yU0xa/Quarantining?page-id=1%3A302581&#x26;node-id=7-293319&#x26;viewport=989%2C307%2C0.03&#x26;t=NwHraBw9j9vPPnB3-1&#x26;scaling=min-zoom&#x26;content-scaling=fixed&#x26;starting-point-node-id=7%3A293319&#x26;show-proto-sidebar=1\">New Design Prototype</a></p>\n<h2>What are Flaky Tests and Quarantining?</h2>\n<p>Flaky tests are tests that fail randomly. They waste engineering time when engineers flail for hours trying to get their PR to pass the test. To save engineers from this pain and drain on their time, Trunk's Quarantining feature allows engineers to quarantine flaky tests, so that quarantined tests keep running but don't block engineers from merging PRs. The user chooses between two quarantine modes: automatic, when the Trunk Flaky Test product automatically detects and quarantines flaky tests, and manual, when a CI owner sets the quarantine status.</p>\n<h2>Business Problem</h2>\n<p>Trunk's Flaky Test product's business model included Quarantining as a paid feature to incentivize upgrades, but low feature usage meant companies weren't upgrading often enough. We wanted to find out if the feature lacked usability or value (or both!).</p>\n<h2>Problems with the Original Design</h2>\n<p>Customer access at Trunk was tightly gated, so I first ran internal usability testing before spending our limited customer access. Sessions with participants surfaced clear insights. The Quarantining feature suffered from low visibility, a lack of a unique visual identity, mismatch with the user's mental model, and requiring a leap of trust before proof. </p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/4bfa87ebb87a92892456297b51bae8dd/9b601/original-design.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 66%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHJUqyiQ//EABcQAAMBAAAAAAAAAAAAAAAAAAARICH/2gAIAQEAAQUCwU//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAWEAADAAAAAAAAAAAAAAAAAAAAIDH/2gAIAQEABj8CKv8A/8QAGRAAAgMBAAAAAAAAAAAAAAAAAREAIEFx/9oACAEBAAE/IUmOcIQtFP/aAAwDAQACAAMAAAAQoB//xAAVEQEBAAAAAAAAAAAAAAAAAAAQIf/aAAgBAwEBPxCn/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGxABAAICAwAAAAAAAAAAAAAAAQARITFBYZH/2gAIAQEAAT8QdFNIjn0gKirqbMy8xn//2Q=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Original Design\"\n        title=\"Original Design\"\n        src=\"/static/4bfa87ebb87a92892456297b51bae8dd/4b190/original-design.jpg\"\n        srcset=\"/static/4bfa87ebb87a92892456297b51bae8dd/e07e9/original-design.jpg 200w,\n/static/4bfa87ebb87a92892456297b51bae8dd/066f9/original-design.jpg 400w,\n/static/4bfa87ebb87a92892456297b51bae8dd/4b190/original-design.jpg 800w,\n/static/4bfa87ebb87a92892456297b51bae8dd/e5166/original-design.jpg 1200w,\n/static/4bfa87ebb87a92892456297b51bae8dd/b17f8/original-design.jpg 1600w,\n/static/4bfa87ebb87a92892456297b51bae8dd/9b601/original-design.jpg 5760w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<h3>Low visibility</h3>\n<ul>\n<li><strong>A buried bridge.</strong> The link from CI logs to the Test Detail Page was so low-visibility that users missed it and either never navigated to Trunk's UI or navigated manually.</li>\n<li><strong>Hidden audit trail.</strong> When engineers saw the test's quarantine status in either GitHub or Trunk's UI, the status left them with many unanswered questions, including: \"who changed this status and why? Is this supposed to be quarantined?\" Each test's status history (e.g. who changed the status last?) lived in a Status History tab. Zero participants ever found it unprompted.</li>\n</ul>\n<h3>Lack of a unique visual identity</h3>\n<ul>\n<li><strong>Two statuses, one identity.</strong> Every test has a health status (healthy/flaky/broken) and a quarantine status — but only health had an icon and color, so users often missed the quarantine status when scanning the page.</li>\n<li><strong>Color collision.</strong> The same yellow meant \"flaky\" and \"quarantined.\"</li>\n</ul>\n<h3>Mismatch with user's mental model</h3>\n<p>The status \"Default (Not Quarantined)\" was universally confusing. Nearly everyone asked: \"Shouldn't there just be two settings — Quarantined or Not Quarantined?\" Unanimous confusion isn't an education problem; it's a model problem. The name matched our system, not our users' mental models.</p>\n<h3>Requiring trust before proof</h3>\n<p>Turning on Auto-Quarantining demanded a leap of trust users weren't ready to make. This was an area where, as a designer, I wasn't yet sure if this was a usability or value problem and wanted to solve the previous three problems to see if it solved this fourth problem naturally.</p>\n<h2>Defining Success</h2>\n<p>To test usability of my design iterations, I defined success as task completion where testers completed a task list covering every system state. As they attempted each task, I asked them to:</p>\n<ul>\n<li>Explain why auto-quarantining changed a test's status</li>\n<li>Set, override, and revert test statuses and save reasons</li>\n<li>Predict the next test run's quarantining behavior — e.g. \"if this flaky test runs again, now that you changed it to auto-quarantine, what do you think will happen to it?\"</li>\n</ul>\n<p>I also proposed post-launch usage tracking.</p>\n<h2>Benchmarks</h2>\n<p>I led the team in annotating examples of status design from Linear, GitHub, Sentry, Snyk, 1Password, and Figma. The best implementations shared two traits:</p>\n<ul>\n<li>The who/when/why stays visible right next to the status (Snyk shows user, reason, and expiration inline)</li>\n<li>Changeable statuses look interactive (Linear's status is the entry point for changing it)</li>\n</ul>\n<p>The annotations captured failure modes too — Sentry's buried activity feed and Snyk's silently vanishing rows.</p>\n<p>Here is Sentry's UI with annotations. My second iteration imitated their \"Workflow\" line.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/33940a7929be2da66ea55abbdbfa26bc/9b601/benchmark.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 62.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIBBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAe3eUSD/xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAEFAl//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAYEAEBAQEBAAAAAAAAAAAAAAABABEhEP/aAAgBAQABPyEO3bIN8G//2gAMAwEAAgADAAAAEIPP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGhAAAwEBAQEAAAAAAAAAAAAAAAERITFhcf/aAAgBAQABPxDY7vpI6hUq9f05CRDEof/Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Benchmarks\"\n        title=\"Benchmarks\"\n        src=\"/static/33940a7929be2da66ea55abbdbfa26bc/4b190/benchmark.jpg\"\n        srcset=\"/static/33940a7929be2da66ea55abbdbfa26bc/e07e9/benchmark.jpg 200w,\n/static/33940a7929be2da66ea55abbdbfa26bc/066f9/benchmark.jpg 400w,\n/static/33940a7929be2da66ea55abbdbfa26bc/4b190/benchmark.jpg 800w,\n/static/33940a7929be2da66ea55abbdbfa26bc/e5166/benchmark.jpg 1200w,\n/static/33940a7929be2da66ea55abbdbfa26bc/b17f8/benchmark.jpg 1600w,\n/static/33940a7929be2da66ea55abbdbfa26bc/9b601/benchmark.jpg 5760w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<h2>Iterations</h2>\n<p>We tested these iterations internally and with customers.</p>\n<h3>Iteration 1: Card View</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/424a647d325a005707492e70c1b7cf52/9b601/iteration-1-card-view.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 66%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHJUqyiQ//EABYQAAMAAAAAAAAAAAAAAAAAAAARIP/aAAgBAQABBQIU/wD/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAXEAADAQAAAAAAAAAAAAAAAAAAIDFB/9oACAEBAAY/AsKv/8QAGRABAAIDAAAAAAAAAAAAAAAAAQARIEFx/9oACAEBAAE/IaI4RK2Yf//aAAwDAQACAAMAAAAQIB//xAAVEQEBAAAAAAAAAAAAAAAAAAAQIf/aAAgBAwEBPxCn/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGhAAAwEAAwAAAAAAAAAAAAAAAAERITGBkf/aAAgBAQABPxBR1ho74UQ0XUcrS6M//9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Iteration 1: Card View\"\n        title=\"Iteration 1: Card View\"\n        src=\"/static/424a647d325a005707492e70c1b7cf52/4b190/iteration-1-card-view.jpg\"\n        srcset=\"/static/424a647d325a005707492e70c1b7cf52/e07e9/iteration-1-card-view.jpg 200w,\n/static/424a647d325a005707492e70c1b7cf52/066f9/iteration-1-card-view.jpg 400w,\n/static/424a647d325a005707492e70c1b7cf52/4b190/iteration-1-card-view.jpg 800w,\n/static/424a647d325a005707492e70c1b7cf52/e5166/iteration-1-card-view.jpg 1200w,\n/static/424a647d325a005707492e70c1b7cf52/b17f8/iteration-1-card-view.jpg 1600w,\n/static/424a647d325a005707492e70c1b7cf52/9b601/iteration-1-card-view.jpg 5760w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p><strong>What worked well:</strong></p>\n<ul>\n<li><strong>Increasing visibility.</strong> Making Test Status and Quarantine Status equal in visual importance meant users noticed Quarantine Status more often than before.</li>\n</ul>\n<p><strong>What didn't work well enough:</strong></p>\n<ul>\n<li>The actual status names, e.g. \"Default (Not Quarantined),\" still didn't match users' mental models.</li>\n<li>Including a timestamp improved trust somewhat since it answered \"who changed this status and when?\" However, it felt redundant to hover over it for more details that also existed in the Status History tab.  </li>\n</ul>\n<h3>Iteration 2: Action Row and Drop-down Modal</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/3c1448e60d907409419b4a65ad28997c/9b601/iteration-2-action-row.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 61%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAQACBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHjgGorP//EABgQAAMBAQAAAAAAAAAAAAAAAAARIQEQ/9oACAEBAAEFAtJxCp//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAaEAACAwEBAAAAAAAAAAAAAAAAAREhMRBR/9oACAEBAAE/IaeCk9Y6zhQD0//aAAwDAQACAAMAAAAQG9//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAcEAEAAgMAAwAAAAAAAAAAAAABACERMYFRkaH/2gAIAQEAAT8QQqOb+xAOFQmAnVzDy+4RIvZun//Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Iteration 2: Action Row and Drop-down Modal\"\n        title=\"Iteration 2: Action Row and Drop-down Modal\"\n        src=\"/static/3c1448e60d907409419b4a65ad28997c/4b190/iteration-2-action-row.jpg\"\n        srcset=\"/static/3c1448e60d907409419b4a65ad28997c/e07e9/iteration-2-action-row.jpg 200w,\n/static/3c1448e60d907409419b4a65ad28997c/066f9/iteration-2-action-row.jpg 400w,\n/static/3c1448e60d907409419b4a65ad28997c/4b190/iteration-2-action-row.jpg 800w,\n/static/3c1448e60d907409419b4a65ad28997c/e5166/iteration-2-action-row.jpg 1200w,\n/static/3c1448e60d907409419b4a65ad28997c/b17f8/iteration-2-action-row.jpg 1600w,\n/static/3c1448e60d907409419b4a65ad28997c/9b601/iteration-2-action-row.jpg 5760w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p><strong>What worked well:</strong></p>\n<ul>\n<li>I simplified statuses by replacing \"Default (Not Quarantined)\" with \"Not Quarantined\"</li>\n<li>The modal had enough room for status definitions, which increased user confidence in changing the status.</li>\n<li>Having room to save a comment felt natural to users; anyone manually changing the status has a reason they'd like to save for their own record-keeping and for teammates to read later.</li>\n</ul>\n<p><strong>What didn't work well enough:</strong></p>\n<ul>\n<li>A separate row for the Quarantine button, while increasing its importance, also made it look visually unrelated to test status, even though it is closely related (e.g. if a test is flaky, users might want to quarantine it).</li>\n<li>Preselecting a radio button, while a standard practice, made some users think the selected status was already saved.</li>\n</ul>\n<h3>Final Iteration: Compressed Drop-Down</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/9a605bf8d7247e38fce2402771c9a54a/9b601/final-design-closed.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 67%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAQAF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAccCxiP/xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAEFAl//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAXEAADAQAAAAAAAAAAAAAAAAAAICFh/9oACAEBAAE/IYTV/9oADAMBAAIAAwAAABDX3//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABkQAAIDAQAAAAAAAAAAAAAAAAARATFRof/aAAgBAQABPxCtcgWwhzo5Gf/Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Final shipped designs\"\n        title=\"Final shipped designs\"\n        src=\"/static/9a605bf8d7247e38fce2402771c9a54a/4b190/final-design-closed.jpg\"\n        srcset=\"/static/9a605bf8d7247e38fce2402771c9a54a/e07e9/final-design-closed.jpg 200w,\n/static/9a605bf8d7247e38fce2402771c9a54a/066f9/final-design-closed.jpg 400w,\n/static/9a605bf8d7247e38fce2402771c9a54a/4b190/final-design-closed.jpg 800w,\n/static/9a605bf8d7247e38fce2402771c9a54a/e5166/final-design-closed.jpg 1200w,\n/static/9a605bf8d7247e38fce2402771c9a54a/b17f8/final-design-closed.jpg 1600w,\n/static/9a605bf8d7247e38fce2402771c9a54a/9b601/final-design-closed.jpg 5760w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/455247e54400c771b3ec72aa7ae9374f/9b601/final-design-open.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 67%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAQAF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAccCxiP/xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAEFAl//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAaEAABBQEAAAAAAAAAAAAAAAAhAAERIDFh/9oACAEBAAE/IXEYh2v/2gAMAwEAAgADAAAAEJff/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGhAAAwADAQAAAAAAAAAAAAAAAAERIUFRMf/aAAgBAQABPxBdD1XGSMva5ohX0rKf/9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Final shipped designs\"\n        title=\"Final shipped designs\"\n        src=\"/static/455247e54400c771b3ec72aa7ae9374f/4b190/final-design-open.jpg\"\n        srcset=\"/static/455247e54400c771b3ec72aa7ae9374f/e07e9/final-design-open.jpg 200w,\n/static/455247e54400c771b3ec72aa7ae9374f/066f9/final-design-open.jpg 400w,\n/static/455247e54400c771b3ec72aa7ae9374f/4b190/final-design-open.jpg 800w,\n/static/455247e54400c771b3ec72aa7ae9374f/e5166/final-design-open.jpg 1200w,\n/static/455247e54400c771b3ec72aa7ae9374f/b17f8/final-design-open.jpg 1600w,\n/static/455247e54400c771b3ec72aa7ae9374f/9b601/final-design-open.jpg 5760w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span> </p>\n<p><strong>What worked well:</strong></p>\n<ul>\n<li>Test Status and Quarantine Status have unique yet equally important visual identities, so users will notice both and not ignore or confuse them.</li>\n<li>Test Status and Quarantine Status are next to each other, so users can easily use Test Status to decide Quarantine Status.</li>\n<li>Retained all previously stated benefits of the drop-down modal.</li>\n<li>Bringing the Status History onto the page rather than behind a tab makes it more visible.</li>\n</ul>\n<p><strong>What didn't work well enough:</strong></p>\n<ul>\n<li>No downsides were uncovered.  </li>\n</ul>\n<h2>Stakeholder Pressure Resisted</h2>\n<p>Stakeholders asked to re-add the \"Default\" statuses. I wrote up the options with explicit trade-offs taken from interviews and our own reasoning, and under the Pros for including \"Default\", we listed <em>\"can't think of any.\"</em> Having it written down helped reassure everyone we'd done the right thing by renaming it. </p>\n<h2>Outcome</h2>\n<p>Our final customer validation came back clean: no task failures, no comprehension issues. Every contested element from earlier rounds — the hidden status history, the confusing status names, the preselection trap — was resolved.</p>\n<p>The designs shipped to production. I left the company after launch but before usage data came in. What the design work established: usability issues were no longer a barrier to usage.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/455247e54400c771b3ec72aa7ae9374f/9b601/final-design-open.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 67%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAQAF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAccCxiP/xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAEFAl//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAaEAABBQEAAAAAAAAAAAAAAAAhAAERIDFh/9oACAEBAAE/IXEYh2v/2gAMAwEAAgADAAAAEJff/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGhAAAwADAQAAAAAAAAAAAAAAAAERIUFRMf/aAAgBAQABPxBdD1XGSMva5ohX0rKf/9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Final shipped designs\"\n        title=\"Final shipped designs\"\n        src=\"/static/455247e54400c771b3ec72aa7ae9374f/4b190/final-design-open.jpg\"\n        srcset=\"/static/455247e54400c771b3ec72aa7ae9374f/e07e9/final-design-open.jpg 200w,\n/static/455247e54400c771b3ec72aa7ae9374f/066f9/final-design-open.jpg 400w,\n/static/455247e54400c771b3ec72aa7ae9374f/4b190/final-design-open.jpg 800w,\n/static/455247e54400c771b3ec72aa7ae9374f/e5166/final-design-open.jpg 1200w,\n/static/455247e54400c771b3ec72aa7ae9374f/b17f8/final-design-open.jpg 1600w,\n/static/455247e54400c771b3ec72aa7ae9374f/9b601/final-design-open.jpg 5760w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span> </p>\n<h2>What I'd Prioritize Next</h2>\n<ul>\n<li><strong>Granular overrides and expirations</strong> — there was demand for PR- or branch-scoped quarantines with end dates</li>\n<li><strong>Suggestions rather than Auto-Quarantining</strong> — close the trust gap by suggesting instead of acting: \"this test is failing intermittently — quarantine it and create a ticket?\"</li>\n<li><strong>Discoverability</strong> — increase visibility of the link from CI logs and GitHub bot comments to this part of the UI</li>\n</ul>","frontmatter":{"title":"Making Status Visible, Understandable, and Actionable","date":"17 June, 2025","isBlogPost":null}}},"pageContext":{"slug":"/trunk-quarantining/"}},"staticQueryHashes":["3159585216"]}