{
  "format": "audeep.report.v1",
  "exportedAt": "2026-09-12T11:59:49.024Z",
  "report": {
    "schemaVersion": 2,
    "contract": {
      "productUnderstanding": {
        "source": "surface-observation",
        "productName": null,
        "productCategory": "unknown",
        "summary": "This report used the audited public surface without paid discovery context.",
        "capabilities": [],
        "authSignals": [],
        "publicPaths": [],
        "apiOrigins": [],
        "discovery": null
      },
      "coverage": {
        "accessMode": "public",
        "status": "complete",
        "renderedPages": 1,
        "targetRequests": 432,
        "pageBudget": 1,
        "targetRequestBudget": 80,
        "discoveredPublicPathCount": 0,
        "allowedApiOriginCount": 0,
        "syntheticSignupCompleted": false,
        "postSignupTargetWrites": 0
      },
      "observedActions": [],
      "safeStops": [],
      "cleanupResidue": {
        "status": "not-required",
        "summary": "No synthetic account or target records were created by this audit.",
        "residue": []
      },
      "findingVerification": [
        {
          "findingId": "7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91-ux-tap-target-1",
          "status": "evidence-backed",
          "evidenceKinds": [
            "screenshot",
            "dom-selector"
          ],
          "summary": "The finding is tied to evidence captured during this audit."
        },
        {
          "findingId": "7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91-cwv-tbt-3",
          "status": "evidence-backed",
          "evidenceKinds": [
            "screenshot",
            "request"
          ],
          "summary": "The finding is tied to evidence captured during this audit."
        },
        {
          "findingId": "7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91-design-control-drift-5",
          "status": "evidence-backed",
          "evidenceKinds": [
            "screenshot",
            "dom-selector"
          ],
          "summary": "The finding is tied to evidence captured during this audit."
        }
      ]
    },
    "id": "7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91",
    "tier": "quick",
    "url": "https://grafite.io/",
    "finalUrl": "https://grafite.io/",
    "auditedAt": "2026-08-20T09:40:27.155Z",
    "score": 85,
    "grade": "B",
    "dimensions": [
      {
        "class": "functional",
        "findings": 0,
        "covered": true,
        "score": 100,
        "grade": "A"
      },
      {
        "class": "security",
        "findings": 1,
        "covered": true,
        "score": 99,
        "grade": "A"
      },
      {
        "class": "accessibility",
        "findings": 0,
        "covered": true,
        "score": 100,
        "grade": "A"
      },
      {
        "class": "ux",
        "findings": 2,
        "covered": true,
        "score": 95,
        "grade": "B"
      },
      {
        "class": "performance",
        "findings": 1,
        "covered": true,
        "score": 96,
        "grade": "B"
      },
      {
        "class": "seo",
        "findings": 0,
        "covered": true,
        "score": 100,
        "grade": "A"
      },
      {
        "class": "design",
        "findings": 2,
        "covered": true,
        "score": 95,
        "grade": "B"
      }
    ],
    "totalFindings": 6,
    "otherFindings": 5,
    "headline": {
      "id": "7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91-ux-tap-target-1",
      "type": "ux-tap-target",
      "class": "ux",
      "severity": "medium",
      "confidence": "confirmed",
      "title": "Tap target is too small on mobile",
      "detail": "\"Privacy Policy\" renders at 78x14px in the first mobile viewport.",
      "evidence": {
        "selector": "html > body:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(1) > p:nth-of-type(1) > a:nth-of-type(1)",
        "request": null,
        "screenshot": "/audit-artifacts/7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91/page.png",
        "prominence": 0.0043876811594202895
      },
      "page": "https://grafite.io/",
      "firstSeen": 1,
      "evidenceChip": "html > body:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(1) > p:nth-of-type(1) > a:nth-of-type(1)"
    },
    "evidenceChip": "html > body:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(1) > p:nth-of-type(1) > a:nth-of-type(1)",
    "findings": [
      {
        "id": "7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91-ux-tap-target-1",
        "type": "ux-tap-target",
        "class": "ux",
        "severity": "medium",
        "confidence": "confirmed",
        "title": "Tap target is too small on mobile",
        "detail": "\"Privacy Policy\" renders at 78x14px in the first mobile viewport.",
        "evidence": {
          "selector": "html > body:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(1) > p:nth-of-type(1) > a:nth-of-type(1)",
          "request": null,
          "screenshot": "/audit-artifacts/7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91/page.png",
          "prominence": 0.0043876811594202895
        },
        "page": "https://grafite.io/",
        "firstSeen": 1,
        "evidenceChip": "html > body:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(1) > p:nth-of-type(1) > a:nth-of-type(1)"
      },
      {
        "id": "7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91-cwv-tbt-3",
        "type": "cwv-tbt",
        "class": "performance",
        "severity": "medium",
        "confidence": "confirmed",
        "title": "Total Blocking Time is high",
        "detail": "Lab TBT measured 2503ms (poor).",
        "evidence": {
          "selector": null,
          "request": {
            "method": "GET",
            "url": "https://grafite.io/",
            "status": 200
          },
          "screenshot": "/audit-artifacts/7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91/page.png",
          "prominence": 0
        },
        "page": "https://grafite.io/",
        "firstSeen": 3,
        "evidenceChip": "GET / -> 200"
      },
      {
        "id": "7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91-design-control-drift-5",
        "type": "design-control-drift",
        "class": "design",
        "severity": "medium",
        "confidence": "confirmed",
        "title": "Buttons on this page are styled inconsistently",
        "detail": "11 visually distinct button treatments render on one page, counting background, text colour, border, corner radius and weight (including \"Get started free\", \"Stop\", \"1x\", \"Learn more\", \"Sign Up\"). When every button looks different, none of them reads as the primary action, and people hesitate over which one to press.",
        "evidence": {
          "selector": "button[aria-label=\"Toggle menu\"]",
          "request": null,
          "screenshot": "/audit-artifacts/7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91/page.png",
          "prominence": 0
        },
        "page": "https://grafite.io/",
        "firstSeen": 5,
        "evidenceChip": "button[aria-label=\"Toggle menu\"]"
      }
    ],
    "severityCounts": {
      "critical": 0,
      "high": 0,
      "medium": 3,
      "low": 3
    },
    "interceptSummary": {
      "totalRequests": 432,
      "targetRequests": 432,
      "targetMethods": [
        "GET",
        "POST"
      ],
      "methodCounts": {
        "GET": 431,
        "POST": 1
      },
      "nonGetToTargetAllowed": 0,
      "nonGetToTargetBlocked": 1,
      "audeepAuthoredThirdParty": 0,
      "observeOnlyPass": true,
      "renderedPages": 1,
      "followInternalLinks": false
    },
    "displayHost": "grafite.io",
    "displayUrl": "grafite.io",
    "metaTitle": "Grade B - grafite.io",
    "metaDescription": "Tap target is too small on mobile - +5 other issues found. Observe-only audit by Audeep.",
    "shareText": "My site scored B on Audeep: Tap target is too small on mobile",
    "pageScreenshot": "/audit-artifacts/7d6dc4fb-2f3d-4101-bdbd-f1b420d2cb91/page.png"
  }
}