{
  "exit_code": 2,
  "log": "/data/jobs/job_adcb3f73b4e2/impeccable.log",
  "findings_count": 8,
  "findings": [
    {
      "antipattern": "low-contrast",
      "name": "Low contrast text",
      "description": "Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.",
      "severity": "warning",
      "file": "/data/jobs/job_adcb3f73b4e2/dist/index.html",
      "line": 0,
      "snippet": "3.8:1 (need 4.5:1) \u2014 text #ffffff on #40916c"
    },
    {
      "antipattern": "tight-leading",
      "name": "Tight line height",
      "description": "Line height below 1.3x the font size makes multi-line text hard to read. Use 1.5 to 1.7 for body text so lines have room to breathe.",
      "severity": "warning",
      "file": "/data/jobs/job_adcb3f73b4e2/dist/index.html",
      "line": 0,
      "snippet": "line-height 1.28x (need >=1.3)"
    },
    {
      "antipattern": "tight-leading",
      "name": "Tight line height",
      "description": "Line height below 1.3x the font size makes multi-line text hard to read. Use 1.5 to 1.7 for body text so lines have room to breathe.",
      "severity": "warning",
      "file": "/data/jobs/job_adcb3f73b4e2/dist/index.html",
      "line": 0,
      "snippet": "line-height 1.28x (need >=1.3)"
    },
    {
      "antipattern": "tight-leading",
      "name": "Tight line height",
      "description": "Line height below 1.3x the font size makes multi-line text hard to read. Use 1.5 to 1.7 for body text so lines have room to breathe.",
      "severity": "warning",
      "file": "/data/jobs/job_adcb3f73b4e2/dist/index.html",
      "line": 0,
      "snippet": "line-height 1.28x (need >=1.3)"
    },
    {
      "antipattern": "tight-leading",
      "name": "Tight line height",
      "description": "Line height below 1.3x the font size makes multi-line text hard to read. Use 1.5 to 1.7 for body text so lines have room to breathe.",
      "severity": "warning",
      "file": "/data/jobs/job_adcb3f73b4e2/dist/index.html",
      "line": 0,
      "snippet": "line-height 1.28x (need >=1.3)"
    },
    {
      "antipattern": "flat-type-hierarchy",
      "name": "Flat type hierarchy",
      "description": "Font sizes are too close together \u2014 no clear visual hierarchy. Use fewer sizes with more contrast (aim for at least a 1.25 ratio between steps).",
      "severity": "warning",
      "file": "/data/jobs/job_adcb3f73b4e2/dist/index.html",
      "line": 0,
      "snippet": "Sizes: 12.8px, 13.6px, 14.4px, 16px, 20px, 20.8px, 25px (ratio 2.0:1)"
    },
    {
      "antipattern": "numbered-section-markers",
      "name": "Numbered section markers (01 / 02 / 03)",
      "description": "Numbered display markers as section labels (01, 02, 03) are the AI editorial scaffold one tier deeper than tracked eyebrow chips. If you find yourself reaching for them, choose a different section cadence.",
      "severity": "advisory",
      "file": "/data/jobs/job_adcb3f73b4e2/dist/index.html",
      "line": 0,
      "snippet": "Sequence: 01, 02, 03, 04"
    },
    {
      "antipattern": "aphoristic-cadence",
      "name": "Aphoristic-cadence copy",
      "description": "Three or more sections landing on a short rebuttal sentence (\"X. No Y.\" / \"X. Just Y.\") or a manufactured-contrast aphorism (\"Not a feature. A platform.\") reads as AI cadence, not voice. Once is fine; the pattern is the tell.",
      "severity": "warning",
      "file": "/data/jobs/job_adcb3f73b4e2/dist/index.html",
      "line": 0,
      "snippet": "3 aphoristic constructions: \"Sunshine Coast landscape construction, delivered start-to-finish by one crew. No\""
    }
  ],
  "status": "findings"
}